From 52a1b55309d1963b65b0e18770c20c47f35528db Mon Sep 17 00:00:00 2001 From: Master Date: Fri, 26 May 2023 11:08:49 +0800 Subject: [PATCH 001/522] update --- .gitignore | 3 +- config.json | 4 +- package-lock.json | 3233 ----------------- src/controllers/api/loginController.ts | 8 +- .../dynamic/worldStateController.ts | 3 + src/routes/cache.ts | 3 +- 6 files changed, 16 insertions(+), 3238 deletions(-) delete mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index 27a44736..7d2fa543 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ /build /.env -/static/data/* \ No newline at end of file +/static/data/* +package-lock.json diff --git a/config.json b/config.json index 7d3ea080..54f03ab6 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,7 @@ { "autoCreateAccount": true, "buildLabel": "2023.05.23.12.37/kM-ONnYx6PjFfVyxn0zuvw", - "matchmakingBuildId": "4920386201513015989" + "matchmakingBuildId": "4920386201513015989", + "version": "33.0.12", + "WorldSeed": "SBripfQVIPcz+hCzf1LUSvFpsmnJaAfTEH2x/7YAWaiCGT8vxTMtVlk+SLLalLy5gtrFxHflQET2BJOKe8r0py9xFJAwi+TEP2VsfPGcs3l75kYvcpL7X7sEiISEFCt85O99GjXdGyyFwMhtvEvL5pzEVpaQu7dw4KcLtHY30q3aTM9pI4m4Qx1gPDkmyMrCKq7pzHHtA9QsFKWOunSwpfNJ49xCIZADeD30h5nshcFMl/3yipL9K0WHoouMZMLMwfCWMgFnxAazRznwda8XRjNgyuhfAQTeaPnFuLf3YJVde3FbJ4PBWX4uysx1PJHuVqMNaAe1TsDV6f2UzQ2M/g==" } diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index ee3525bf..00000000 --- a/package-lock.json +++ /dev/null @@ -1,3233 +0,0 @@ -{ - "name": "wf-emulator", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "wf-emulator", - "version": "0.1.0", - "license": "GNU", - "dependencies": { - "dotenv": "^16.0.3", - "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" - }, - "devDependencies": { - "@tsconfig/node20": "^1.0.0", - "@types/body-parser": "^1.19.2", - "@types/express": "^4.17.17", - "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", - "eslint": "^8.40.0", - "eslint-plugin-prettier": "^4.2.1", - "morgan": "^1.10.0", - "prettier": "^2.8.8", - "ts-node-dev": "^2.0.0", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.0.4" - }, - "engines": { - "node": ">=18.15.0", - "npm": ">=9.5.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", - "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "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/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.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@tsconfig/node20": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", - "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/morgan": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", - "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", - "dev": true - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", - "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/type-utils": "5.59.2", - "@typescript-eslint/utils": "5.59.2", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", - "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", - "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.2", - "@typescript-eslint/utils": "5.59.2", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/type-utils/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/@typescript-eslint/types": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", - "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", - "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", - "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", - "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "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": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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": "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/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/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/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==", - "dev": true, - "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==", - "dev": true - }, - "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/body-parser": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", - "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/body-parser/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/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/bson": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", - "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", - "engines": { - "node": ">=14.20.1" - } - }, - "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/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/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/chokidar/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/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/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/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/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/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "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/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "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/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "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==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", - "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", - "dev": true, - "dependencies": { - "xtend": "^4.0.0" - } - }, - "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/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/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": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.40.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/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/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/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/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/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/express": { - "version": "5.0.0-beta.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", - "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "3.0.0", - "body-parser": "2.0.0-beta.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "3.1.0", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "mime-types": "~2.1.34", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-is-absolute": "1.0.1", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "router": "2.0.0-beta.1", - "safe-buffer": "5.2.1", - "send": "1.0.0-beta.1", - "serve-static": "2.0.0-beta.1", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/express/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/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/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/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/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "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/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/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/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/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/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "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/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "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-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-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "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-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-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": 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/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "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/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "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/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "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/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "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==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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/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": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", - "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", - "dependencies": { - "bson": "^5.2.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongoose": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", - "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", - "dependencies": { - "bson": "^5.2.0", - "kareem": "2.5.1", - "mongodb": "5.3.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/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/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mquery/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/mquery/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/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "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/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/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/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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.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/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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/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.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.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-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/router": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", - "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", - "dependencies": { - "array-flatten": "3.0.0", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "3.2.0", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "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/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", - "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", - "dependencies": { - "debug": "3.1.0", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime-types": "~2.1.34", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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/serve-static": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", - "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "1.0.0-beta.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "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/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "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/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/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "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/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node-dev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", - "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^10.4.0", - "tsconfig": "^7.0.0" - }, - "bin": { - "ts-node-dev": "lib/bin.js", - "tsnd": "lib/bin.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "node-notifier": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/ts-node-dev/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig/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/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": 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/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "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/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "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/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "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/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 1684fd3f..80f71d5f 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -1,13 +1,17 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { RequestHandler } from "express"; + +import config from "@/config.json"; + import { toLoginRequest } from "@/src/helpers/loginHelpers"; import { Account } from "@/src/models/loginModel"; import { createAccount, isCorrectPassword } from "@/src/services/loginService"; import { ILoginResponse } from "@/src/types/loginTypes"; import { DTLS, groups, HUB, IRC, Nonce, NRS, platformCDNs } from "@/static/fixed_responses/login_static"; -import { RequestHandler } from "express"; -import config from "../../../config.json"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const loginController: RequestHandler = async (request, response) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument const body = JSON.parse(request.body); // parse octet stream of json data to json object const loginRequest = toLoginRequest(body); // console.log(body); diff --git a/src/controllers/dynamic/worldStateController.ts b/src/controllers/dynamic/worldStateController.ts index 39050c91..1b34b397 100644 --- a/src/controllers/dynamic/worldStateController.ts +++ b/src/controllers/dynamic/worldStateController.ts @@ -1,7 +1,10 @@ import { RequestHandler } from "express"; +import config from "@/config.json"; import worldState from "@/static/fixed_responses/worldState.json"; const worldStateController: RequestHandler = (_req, res) => { + worldState.WorldSeed = config.WorldSeed; + worldState.BuildLabel = config.buildLabel; res.json(worldState); }; diff --git a/src/routes/cache.ts b/src/routes/cache.ts index 5da110b9..bb69a6db 100644 --- a/src/routes/cache.ts +++ b/src/routes/cache.ts @@ -1,4 +1,5 @@ import express from "express"; +import config from "@/config.json"; const cacheRouter = express.Router(); @@ -15,7 +16,7 @@ cacheRouter.get("/B.Cache.Windows_en.bin*", (_req, res) => { cacheRouter.get(/^\/origin\/([a-zA-Z0-9]+)\/H\.Cache\.bin.*$/, (_req, res) => { // console.log("asd", path.join(__dirname, "../data")); // console.log("asd", __dirname); - res.sendFile("static/data/H.Cache_33.0.12.bin", { root: "./" }); + res.sendFile(`static/data/H.Cache_${config.version}.bin`, { root: "./" }); }); export { cacheRouter }; -- 2.47.2 From 62104516cc46cd215efbbfe6737a42b121fc32b8 Mon Sep 17 00:00:00 2001 From: Master Date: Fri, 26 May 2023 11:11:13 +0800 Subject: [PATCH 002/522] update --- .gitignore | 1 - package-lock.json | 3233 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 3233 insertions(+), 1 deletion(-) create mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index 7d2fa543..7d679bbc 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ /.env /static/data/* -package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..ee3525bf --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3233 @@ +{ + "name": "wf-emulator", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "wf-emulator", + "version": "0.1.0", + "license": "GNU", + "dependencies": { + "dotenv": "^16.0.3", + "express": "^5.0.0-beta.1", + "mongoose": "^7.1.1" + }, + "devDependencies": { + "@tsconfig/node20": "^1.0.0", + "@types/body-parser": "^1.19.2", + "@types/express": "^4.17.17", + "@types/morgan": "^1.9.4", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@typescript-eslint/parser": "^5.59.2", + "eslint": "^8.40.0", + "eslint-plugin-prettier": "^4.2.1", + "morgan": "^1.10.0", + "prettier": "^2.8.8", + "ts-node-dev": "^2.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.0.4" + }, + "engines": { + "node": ">=18.15.0", + "npm": ">=9.5.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", + "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "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/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.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@tsconfig/node20": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", + "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/morgan": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", + "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "18.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", + "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/type-utils": "5.59.2", + "@typescript-eslint/utils": "5.59.2", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", + "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", + "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", + "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/utils": "5.59.2", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/type-utils/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/@typescript-eslint/types": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", + "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", + "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", + "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", + "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "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": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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": "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/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/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/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==", + "dev": true, + "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==", + "dev": true + }, + "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/body-parser": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", + "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/body-parser/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/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/bson": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", + "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", + "engines": { + "node": ">=14.20.1" + } + }, + "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/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/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/chokidar/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/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/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/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/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/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "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/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/dynamic-dedupe": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", + "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", + "dev": true, + "dependencies": { + "xtend": "^4.0.0" + } + }, + "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/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/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": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.40.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/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/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/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/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/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/express": { + "version": "5.0.0-beta.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", + "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "3.0.0", + "body-parser": "2.0.0-beta.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "3.1.0", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "mime-types": "~2.1.34", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-is-absolute": "1.0.1", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "router": "2.0.0-beta.1", + "safe-buffer": "5.2.1", + "send": "1.0.0-beta.1", + "serve-static": "2.0.0-beta.1", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/express/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/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/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/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/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "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/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "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/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/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/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/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/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "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-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-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "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-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-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": 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/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "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/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "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/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "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/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/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": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", + "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", + "dependencies": { + "bson": "^5.2.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", + "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", + "dependencies": { + "bson": "^5.2.0", + "kareem": "2.5.1", + "mongodb": "5.3.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/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/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/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/mquery/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/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "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/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/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/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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.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/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/router": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", + "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", + "dependencies": { + "array-flatten": "3.0.0", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "3.2.0", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", + "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", + "dependencies": { + "debug": "3.1.0", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime-types": "~2.1.34", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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/serve-static": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", + "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "1.0.0-beta.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "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/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "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/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/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", + "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.1", + "dynamic-dedupe": "^0.3.0", + "minimist": "^1.2.6", + "mkdirp": "^1.0.4", + "resolve": "^1.0.0", + "rimraf": "^2.6.1", + "source-map-support": "^0.5.12", + "tree-kill": "^1.2.2", + "ts-node": "^10.4.0", + "tsconfig": "^7.0.0" + }, + "bin": { + "ts-node-dev": "lib/bin.js", + "tsnd": "lib/bin.js" + }, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "node-notifier": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/ts-node-dev/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig/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/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": 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/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "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/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} -- 2.47.2 From d7b2721c702edbfc268541766691cf0d928d8385 Mon Sep 17 00:00:00 2001 From: Master Date: Fri, 26 May 2023 11:13:36 +0800 Subject: [PATCH 003/522] update --- config.json | 2 +- src/controllers/dynamic/worldStateController.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index 54f03ab6..41a01083 100644 --- a/config.json +++ b/config.json @@ -3,5 +3,5 @@ "buildLabel": "2023.05.23.12.37/kM-ONnYx6PjFfVyxn0zuvw", "matchmakingBuildId": "4920386201513015989", "version": "33.0.12", - "WorldSeed": "SBripfQVIPcz+hCzf1LUSvFpsmnJaAfTEH2x/7YAWaiCGT8vxTMtVlk+SLLalLy5gtrFxHflQET2BJOKe8r0py9xFJAwi+TEP2VsfPGcs3l75kYvcpL7X7sEiISEFCt85O99GjXdGyyFwMhtvEvL5pzEVpaQu7dw4KcLtHY30q3aTM9pI4m4Qx1gPDkmyMrCKq7pzHHtA9QsFKWOunSwpfNJ49xCIZADeD30h5nshcFMl/3yipL9K0WHoouMZMLMwfCWMgFnxAazRznwda8XRjNgyuhfAQTeaPnFuLf3YJVde3FbJ4PBWX4uysx1PJHuVqMNaAe1TsDV6f2UzQ2M/g==" + "worldSeed": "SBripfQVIPcz+hCzf1LUSvFpsmnJaAfTEH2x/7YAWaiCGT8vxTMtVlk+SLLalLy5gtrFxHflQET2BJOKe8r0py9xFJAwi+TEP2VsfPGcs3l75kYvcpL7X7sEiISEFCt85O99GjXdGyyFwMhtvEvL5pzEVpaQu7dw4KcLtHY30q3aTM9pI4m4Qx1gPDkmyMrCKq7pzHHtA9QsFKWOunSwpfNJ49xCIZADeD30h5nshcFMl/3yipL9K0WHoouMZMLMwfCWMgFnxAazRznwda8XRjNgyuhfAQTeaPnFuLf3YJVde3FbJ4PBWX4uysx1PJHuVqMNaAe1TsDV6f2UzQ2M/g==" } diff --git a/src/controllers/dynamic/worldStateController.ts b/src/controllers/dynamic/worldStateController.ts index 1b34b397..474cb442 100644 --- a/src/controllers/dynamic/worldStateController.ts +++ b/src/controllers/dynamic/worldStateController.ts @@ -3,7 +3,8 @@ import config from "@/config.json"; import worldState from "@/static/fixed_responses/worldState.json"; const worldStateController: RequestHandler = (_req, res) => { - worldState.WorldSeed = config.WorldSeed; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + worldState.WorldSeed = config.worldSeed; worldState.BuildLabel = config.buildLabel; res.json(worldState); }; -- 2.47.2 From 126b353b694adcd9c7801c0ede46360a72c9b725 Mon Sep 17 00:00:00 2001 From: Master Date: Mon, 29 May 2023 07:01:40 +0800 Subject: [PATCH 004/522] fix body json+token --- src/middleware/middleware.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/middleware/middleware.ts b/src/middleware/middleware.ts index 1653864a..e9d0f103 100644 --- a/src/middleware/middleware.ts +++ b/src/middleware/middleware.ts @@ -8,7 +8,17 @@ const unknownEndpointHandler = (request: Request, response: Response) => { const requestLogger = (request: Request, _response: Response, next: NextFunction) => { console.log("Method:", request.method); console.log("Path: ", request.path); - console.log("Body: ", request.body); + if (Buffer.isBuffer(request.body)) { + const str = request.body.toString(); + const index = str.lastIndexOf("}"); + const jsonSubstring = str.substring(0, index + 1); + console.log("Body: ", jsonSubstring); + request.body = jsonSubstring; + if (str.length > jsonSubstring.length) { + const token = str.substring(index + 1, str.length).trim(); + console.log("Token: ", token); + } + } console.log("---"); next(); }; -- 2.47.2 From f9f55ae5bcfe7638a92e3d5a9d03c730e32250ea Mon Sep 17 00:00:00 2001 From: Master Date: Fri, 2 Jun 2023 02:32:31 +0800 Subject: [PATCH 005/522] add miniircd --- irc/makefile | 2 + irc/miniircd.py | 1288 ++++++++++++++++++++++++ static/fixed_responses/login_static.ts | 2 +- 3 files changed, 1291 insertions(+), 1 deletion(-) create mode 100644 irc/makefile create mode 100644 irc/miniircd.py diff --git a/irc/makefile b/irc/makefile new file mode 100644 index 00000000..af10266b --- /dev/null +++ b/irc/makefile @@ -0,0 +1,2 @@ +run: + python miniircd.py --debug --ports 6699 --ssl-cert-file ..\static\certs\cert.pem --ssl-key-file ..\static\certs\key.pem \ No newline at end of file diff --git a/irc/miniircd.py b/irc/miniircd.py new file mode 100644 index 00000000..8b26aaf8 --- /dev/null +++ b/irc/miniircd.py @@ -0,0 +1,1288 @@ +#!/usr/bin/env python3 + +import logging +import os +import re +import select +import socket +import string +import sys +import tempfile +import time + +from argparse import ArgumentParser, Namespace +from datetime import datetime +from logging.handlers import RotatingFileHandler +from pathlib import Path +from typing import Any, Collection, Dict, List, Optional, Sequence, Set + +Socket = socket.socket + +VERSION = "2.2" + +class Channel: + def __init__(self, server: "Server", name: bytes) -> None: + self.server = server + self.name = name + self.members: Set["Client"] = set() + self._topic = b"" + self._key: Optional[bytes] = None + self._state_path: Optional[Path] + if self.server.state_dir: + fs_safe_name = ( + name.decode(errors="ignore") + .replace("_", "__") + .replace("/", "_") + ) + self._state_path = self.server.state_dir / fs_safe_name + self._read_state() + else: + self._state_path = None + + def add_member(self, client: "Client") -> None: + self.members.add(client) + + @property + def topic(self) -> bytes: + return self._topic + + @topic.setter + def topic(self, value: bytes) -> None: + self._topic = value + self._write_state() + + @property + def key(self) -> Optional[bytes]: + return self._key + + @key.setter + def key(self, value: bytes) -> None: + self._key = value + self._write_state() + + def remove_client(self, client: "Client") -> None: + self.members.discard(client) + if not self.members: + self.server.remove_channel(self) + + def _read_state(self) -> None: + if not (self._state_path and self._state_path.exists()): + return + data: Dict[str, Any] = {} + + exec(self._state_path.read_bytes(), {}, data) + self._topic = data.get("topic", "") + self._key = data.get("key") + + def _write_state(self) -> None: + if not self._state_path: + return + fd, path = tempfile.mkstemp(dir=self._state_path.parent) + fp = os.fdopen(fd, "w") + fp.write("topic = %r\n" % self.topic) + fp.write("key = %r\n" % self.key) + fp.close() + os.replace(path, self._state_path) + + +class Client: + __linesep_regexp = re.compile(rb"\r?\n") + # The RFC limit for nicknames is 9 characters, but what the heck. + __valid_nickname_regexp = re.compile( + rb"^[][\`_^{|}A-Za-z][][\`_^{|}A-Za-z0-9-]{0,50}$" + ) + __valid_channelname_regexp = re.compile( + rb"^[&#+!][^\x00\x07\x0a\x0d ,:]{0,50}$" + ) + + def __init__(self, server: "Server", socket: Socket) -> None: + self.server = server + self.socket = socket + # irc_lower(Channel name) --> Channel + self.channels: Dict[bytes, Channel] = {} + self.nickname = b"" + self.user = b"" + self.realname = b"" + if self.server.ipv6: + host, port, _, _ = socket.getpeername() + else: + host, port = socket.getpeername() + assert isinstance(host, str) + assert isinstance(port, int) + self.host = host.encode() + self.port = port + if self.server.cloak: + self.host = self.server.cloak.encode() + self.__timestamp = time.time() + self.__readbuffer = b"" + self.__writebuffer = b"" + self.__sent_ping = False + if self.server.password: + self.__handle_command = self.__pass_handler + else: + self.__handle_command = self.__registration_handler + self.reply(b"NOTICE * :Auth C5E20E78:*** skipping identd (disabled by server administrator)..") + + @property + def prefix(self) -> bytes: + return b"%s!%s@%s" % (self.nickname, self.user, self.host) + + def check_aliveness(self) -> None: + now = time.time() + if self.__timestamp + 180 < now: + self.disconnect("ping timeout") + return + if not self.__sent_ping and self.__timestamp + 90 < now: + if self.__handle_command == self.__command_handler: + # Registered. + self.message(b"PING :%s" % self.server.name) + self.__sent_ping = True + else: + # Not registered. + self.disconnect("ping timeout") + + def write_queue_size(self) -> int: + return len(self.__writebuffer) + + def __parse_read_buffer(self) -> None: + lines = self.__linesep_regexp.split(self.__readbuffer) + self.__readbuffer = lines[-1] + lines = lines[:-1] + for line in lines: + if not line: + # Empty line. Ignore. + continue + x = line.split(b" ", 1) + command = x[0].upper() + if len(x) == 1: + arguments = [] + elif x[1].startswith(b":"): + arguments = [x[1][1:]] + else: + y = x[1].split(b" :", 1) + arguments = y[0].split() + if len(y) == 2: + arguments.append(y[1]) + self.__handle_command(command, arguments) + + def __pass_handler( + self, command: bytes, arguments: Sequence[bytes] + ) -> None: + server = self.server + if command == b"PASS": + if len(arguments) == 0: + self.reply_461(b"PASS") + elif arguments[0] == server.password.encode(): + self.__handle_command = self.__registration_handler + else: + self.reply(b"464 :Password incorrect") + elif command == b"QUIT": + self.disconnect("Client quit") + + def __registration_handler( + self, command: bytes, arguments: Sequence[bytes] + ) -> None: + server = self.server + if command == b"NICK": + if len(arguments) < 1: + self.reply(b"431 :No nickname given") + return + nick = arguments[0] + if server.get_client(nick): + self.reply(b"433 * %s :Nickname is already in use" % nick) + # elif not self.__valid_nickname_regexp.match(nick): + # self.reply(b"432 * %s :Erroneous nickname" % nick) + else: + self.nickname = nick + server.client_changed_nickname(self, None) + elif command == b"USER": + if len(arguments) < 4: + self.reply_461(b"USER") + return + self.user = arguments[0] + self.realname = arguments[3] + elif command == b"QUIT": + self.disconnect("Client quit") + return + if self.nickname and self.user: + self.reply(b"001 %s :Hi, welcome to IRC" % self.nickname) + self.reply( + b"002 %s :Your host is %s, running version miniircd-%s" + % (self.nickname, server.name, VERSION.encode()) + ) + self.reply( + b"003 %s :This server was created sometime" % self.nickname + ) + self.reply( + b"004 %s %s miniircd-%s o o" + % (self.nickname, server.name, VERSION.encode()) + ) + self.reply( + b"005 %s ACCEPT=30 AWAYLEN=200 CALLERID=g CASEMAPPING=rfc1459 CHANLIMIT=#:20 CHANMODES=b,k,l,Dimnpst CHANNELLEN=64 CHANTYPES=# CHARSET=utf-8 ELIST=CMNTU HOSTLEN=64 KEYLEN=32 :are supported by this server.." + % self.nickname + ) + self.reply( + b"005 %s KICKLEN=255 LINELEN=512 MAXLIST=b:4096 MAXTARGETS=20 MODES=20 NAMELEN=128 NETWORK=war-irc NICKLEN=54 PREFIX=(ohv)@%s SAFELIST STATUSMSG=@%s TOPICLEN=307 USERLEN=64 :are supported by this server.." + % (self.nickname, b"%+", b"%+") + ) + self.reply( + b"005 %s USERMODES=,,s,giowx WHOX :are supported by this server.." + % self.nickname + ) + self.send_lusers() + self.send_motd() + self.reply( + b"396 %s %s :is now your displayed host.." + % (self.nickname, b"net-64o.b32.9uu0l2.IP") + ) + self.__handle_command = self.__command_handler + + def __send_names( + self, arguments: Sequence[bytes], for_join: bool = False + ) -> None: + server = self.server + valid_channel_re = self.__valid_channelname_regexp + if len(arguments) > 0: + channelnames = arguments[0].split(b",") + else: + channelnames = sorted(self.channels.keys()) + if len(arguments) > 1: + keys = arguments[1].split(b",") + else: + keys = [] + for i, channelname in enumerate(channelnames): + if for_join and irc_lower(channelname) in self.channels: + continue + if not valid_channel_re.match(channelname): + self.reply_403(channelname) + continue + channel = server.get_channel(channelname) + if channel.key is not None and ( + len(keys) <= i or channel.key != keys[i] + ): + self.reply( + b"475 %s %s :Cannot join channel (+k) - bad key" + % (self.nickname, channelname) + ) + continue + + if for_join: + channel.add_member(self) + self.channels[irc_lower(channelname)] = channel + self.message_channel(channel, b"JOIN", channelname, True) + self.channel_log(channel, b"joined", meta=True) + if channel.topic: + self.reply( + b"332 %s %s :%s" + % (self.nickname, channel.name, channel.topic) + ) + else: + self.reply( + b"331 %s %s :No topic is set" + % (self.nickname, channel.name) + ) + names_prefix = b"353 %s = %s :" % (self.nickname, channelname) + names = b"" + # Max length: reply prefix ":server_name(space)" plus CRLF in + # the end. + names_max_len = 512 - (len(server.name) + 2 + 2) + for name in sorted(x.nickname for x in channel.members): + if not names: + names = names_prefix + name + # Using >= to include the space between "names" and "name". + elif len(names) + len(name) >= names_max_len: + self.reply(names) + names = names_prefix + name + else: + names += b" " + name + if names: + self.reply(names) + self.reply( + b"366 %s %s :End of NAMES list" % (self.nickname, channelname) + ) + + def __command_handler( + self, command: bytes, arguments: Sequence[bytes] + ) -> None: + def away_handler() -> None: + pass + + def ison_handler() -> None: + if len(arguments) < 1: + self.reply_461(b"ISON") + return + nicks = arguments + online = [n for n in nicks if server.get_client(n)] + self.reply(b"303 %s :%s" % (self.nickname, b" ".join(online))) + + def join_handler() -> None: + if len(arguments) < 1: + self.reply_461(b"JOIN") + return + if arguments[0] == b"0": + for channelname, channel in self.channels.items(): + self.message_channel(channel, b"PART", channelname, True) + self.channel_log(channel, b"left", meta=True) + server.remove_member_from_channel(self, channelname) + self.channels = {} + return + self.__send_names(arguments, for_join=True) + + def list_handler() -> None: + if len(arguments) < 1: + channels = list(server.channels.values()) + else: + channels = [] + for channelname in arguments[0].split(b","): + if server.has_channel(channelname): + channels.append(server.get_channel(channelname)) + + sorted_channels = sorted(channels, key=lambda x: x.name) + for channel in sorted_channels: + self.reply( + b"322 %s %s %d :%s" + % ( + self.nickname, + channel.name, + len(channel.members), + channel.topic, + ) + ) + self.reply(b"323 %s :End of LIST" % self.nickname) + + def lusers_handler() -> None: + self.send_lusers() + + def mode_handler() -> None: + if len(arguments) < 1: + self.reply_461(b"MODE") + return + targetname = arguments[0] + if server.has_channel(targetname): + channel = server.get_channel(targetname) + if len(arguments) < 2: + if channel.key: + modes = b"+k" + if irc_lower(channel.name) in self.channels: + modes += b" %s" % channel.key + else: + modes = b"+" + self.reply( + b"324 %s %s %s" % (self.nickname, targetname, modes) + ) + return + flag = arguments[1] + if flag == b"+k": + if len(arguments) < 3: + self.reply_461(b"MODE") + return + key = arguments[2] + if irc_lower(channel.name) in self.channels: + channel.key = key + self.message_channel( + channel, + b"MODE", + b"%s +k %s" % (channel.name, key), + True, + ) + self.channel_log( + channel, b"set channel key to %s" % key, meta=True + ) + else: + self.reply( + b"442 %s :You're not on that channel" % targetname + ) + elif flag == b"-k": + if irc_lower(channel.name) in self.channels: + channel.key = None + self.message_channel( + channel, b"MODE", b"%s -k" % channel.name, True + ) + self.channel_log( + channel, b"removed channel key", meta=True + ) + else: + self.reply( + b"442 %s :You're not on that channel" % targetname + ) + else: + self.reply( + b"472 %s %s :Unknown MODE flag" % (self.nickname, flag) + ) + elif targetname == self.nickname: + if len(arguments) == 1: + self.reply(b"221 %s +" % self.nickname) + else: + self.reply(b"501 %s :Unknown MODE flag" % self.nickname) + else: + self.reply_403(targetname) + + def motd_handler() -> None: + self.send_motd() + + def names_handler() -> None: + self.__send_names(arguments) + + def nick_handler() -> None: + if len(arguments) < 1: + self.reply(b"431 :No nickname given") + return + newnick = arguments[0] + client = server.get_client(newnick) + if newnick == self.nickname: + pass + elif client and client is not self: + self.reply( + b"433 %s %s :Nickname is already in use" + % (self.nickname, newnick) + ) + elif not self.__valid_nickname_regexp.match(newnick): + self.reply( + b"432 %s %s :Erroneous Nickname" % (self.nickname, newnick) + ) + else: + for x in self.channels.values(): + self.channel_log( + x, b"changed nickname to %s" % newnick, meta=True + ) + oldnickname = self.nickname + self.nickname = newnick + server.client_changed_nickname(self, oldnickname) + self.message_related( + b":%s!%s@%s NICK %s" + % (oldnickname, self.user, self.host, self.nickname), + True, + ) + + def notice_and_privmsg_handler() -> None: + if len(arguments) == 0: + self.reply( + b"411 %s :No recipient given (%s)" + % (self.nickname, command) + ) + return + if len(arguments) == 1: + self.reply(b"412 %s :No text to send" % self.nickname) + return + targetname = arguments[0] + message = arguments[1] + client = server.get_client(targetname) + if client: + client.message( + b":%s %s %s :%s" + % (self.prefix, command, targetname, message) + ) + elif server.has_channel(targetname): + channel = server.get_channel(targetname) + self.message_channel( + channel, command, b"%s :%s" % (channel.name, message) + ) + self.channel_log(channel, message) + else: + self.reply( + b"401 %s %s :No such nick/channel" + % (self.nickname, targetname) + ) + + def part_handler() -> None: + if len(arguments) < 1: + self.reply_461(b"PART") + return + if len(arguments) > 1: + partmsg = arguments[1] + else: + partmsg = self.nickname + for channelname in arguments[0].split(b","): + if not valid_channel_re.match(channelname): + self.reply_403(channelname) + elif not irc_lower(channelname) in self.channels: + self.reply( + b"442 %s %s :You're not on that channel" + % (self.nickname, channelname) + ) + else: + channel = self.channels[irc_lower(channelname)] + self.message_channel( + channel, + b"PART", + b"%s :%s" % (channelname, partmsg), + True, + ) + self.channel_log( + channel, b"left (%s)" % partmsg, meta=True + ) + del self.channels[irc_lower(channelname)] + server.remove_member_from_channel(self, channelname) + + def ping_handler() -> None: + if len(arguments) < 1: + self.reply(b"409 %s :No origin specified" % self.nickname) + return + self.reply(b"PONG %s :%s" % (server.name, arguments[0])) + + def pong_handler() -> None: + pass + + def quit_handler() -> None: + if len(arguments) < 1: + quitmsg = self.nickname + else: + quitmsg = arguments[0] + self.disconnect(quitmsg.decode(errors="ignore")) + + def topic_handler() -> None: + if len(arguments) < 1: + self.reply_461(b"TOPIC") + return + channelname = arguments[0] + channel = self.channels.get(irc_lower(channelname)) + if channel: + if len(arguments) > 1: + newtopic = arguments[1] + channel.topic = newtopic + self.message_channel( + channel, + b"TOPIC", + b"%s :%s" % (channelname, newtopic), + True, + ) + self.channel_log( + channel, b'set topic to "%s"' % newtopic, meta=True + ) + else: + if channel.topic: + self.reply( + b"332 %s %s :%s" + % (self.nickname, channel.name, channel.topic) + ) + else: + self.reply( + b"331 %s %s :No topic is set" + % (self.nickname, channel.name) + ) + else: + self.reply(b"442 %s :You're not on that channel" % channelname) + + def wallops_handler() -> None: + if len(arguments) < 1: + self.reply_461(b"WALLOPS") + return + message = arguments[0] + for client in server.clients.values(): + client.message( + b":%s NOTICE %s :Global notice: %s" + % (self.prefix, client.nickname, message) + ) + + def who_handler() -> None: + if len(arguments) < 1: + return + targetname = arguments[0] + if server.has_channel(targetname): + channel = server.get_channel(targetname) + for member in channel.members: + self.reply( + b"352 %s %s %s %s %s %s H :0 %s" + % ( + self.nickname, + targetname, + member.user, + member.host, + server.name, + member.nickname, + member.realname, + ) + ) + self.reply( + b"315 %s %s :End of WHO list" % (self.nickname, targetname) + ) + + def whois_handler() -> None: + if len(arguments) < 1: + return + username = arguments[0] + user = server.get_client(username) + if user: + self.reply( + b"311 %s %s %s %s * :%s" + % ( + self.nickname, + user.nickname, + user.user, + user.host, + user.realname, + ) + ) + self.reply( + b"312 %s %s %s :%s" + % (self.nickname, user.nickname, server.name, server.name) + ) + self.reply( + b"319 %s %s :%s" + % ( + self.nickname, + user.nickname, + b"".join(x + b" " for x in user.channels), + ) + ) + self.reply( + b"318 %s %s :End of WHOIS list" + % (self.nickname, user.nickname) + ) + else: + self.reply( + b"401 %s %s :No such nick" % (self.nickname, username) + ) + + handler_table = { + b"AWAY": away_handler, + b"ISON": ison_handler, + b"JOIN": join_handler, + b"LIST": list_handler, + b"LUSERS": lusers_handler, + b"MODE": mode_handler, + b"MOTD": motd_handler, + b"NAMES": names_handler, + b"NICK": nick_handler, + b"NOTICE": notice_and_privmsg_handler, + b"PART": part_handler, + b"PING": ping_handler, + b"PONG": pong_handler, + b"PRIVMSG": notice_and_privmsg_handler, + b"QUIT": quit_handler, + b"TOPIC": topic_handler, + b"WALLOPS": wallops_handler, + b"WHO": who_handler, + b"WHOIS": whois_handler, + } + server = self.server + valid_channel_re = self.__valid_channelname_regexp + try: + handler_table[command]() + except KeyError: + self.reply( + b"421 %s %s :Unknown command" % (self.nickname, command) + ) + + def socket_readable_notification(self) -> None: + try: + data = self.socket.recv(2**10) + if self.server.debug: + host = self.host.decode(errors="ignore") + self.server.print_debug(f"[{host}:{self.port}] -> {data!r}") + quitmsg = "EOT" + except socket.error as e: + data = b"" + quitmsg = str(e) + if data: + self.__readbuffer += data + self.__parse_read_buffer() + self.__timestamp = time.time() + self.__sent_ping = False + else: + self.disconnect(quitmsg) + + def socket_writable_notification(self) -> None: + try: + sent = self.socket.send(self.__writebuffer) + if self.server.debug: + head = self.__writebuffer[:sent] + host = self.host.decode(errors="ignore") + self.server.print_debug(f"[{host}:{self.port}] <- {head!r}") + self.__writebuffer = self.__writebuffer[sent:] + except socket.error as x: + self.disconnect(str(x)) + + def disconnect(self, quitmsg: str) -> None: + self.message((f"ERROR :{quitmsg}").encode()) + host = self.host.decode(errors="ignore") + self.server.print_info( + f"Disconnected connection from {host}:{self.port} ({quitmsg})." + ) + self.socket.close() + self.server.remove_client(self, quitmsg.encode()) + + def message(self, msg: bytes) -> None: + self.__writebuffer += msg + b"\r\n" + + def reply(self, msg: bytes) -> None: + self.message(b":%s %s" % (self.server.name, msg)) + + def reply_403(self, channel: bytes) -> None: + self.reply(b"403 %s %s :No such channel" % (self.nickname, channel)) + + def reply_461(self, command: bytes) -> None: + nickname = self.nickname or b"*" + self.reply(b"461 %s %s :Not enough parameters" % (nickname, command)) + + def message_channel( + self, + channel: Channel, + command: bytes, + message: bytes, + include_self: bool = False, + ) -> None: + line = b":%s %s %s" % (self.prefix, command, message) + for client in channel.members: + if client != self or include_self: + client.message(line) + + def channel_log( + self, channel: Channel, message: bytes, meta: bool = False + ) -> None: + if not self.server.channel_log_dir: + return + if meta: + format_string = "[{}] * {} {}\n" + else: + format_string = "[{}] <{}> {}\n" + timestamp = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC") + channel_name = irc_lower(channel.name).decode(errors="ignore") + logname = channel_name.replace("_", "__").replace("/", "_") + logfile = self.server.channel_log_dir / f"{logname}.log" + logmsg = format_string.format( + timestamp, + self.nickname.decode(errors="replace"), + message.decode(errors="replace"), + ) + with open(logfile, "a") as fp: + fp.write(logmsg) + + def message_related(self, msg: bytes, include_self: bool = False) -> None: + clients = set() + if include_self: + clients.add(self) + for channel in self.channels.values(): + clients |= channel.members + if not include_self: + clients.discard(self) + for client in clients: + client.message(msg) + + def send_lusers(self) -> None: + self.reply( + b"251 %s :There are %d users and 0 services on 1 server" + % (self.nickname, len(self.server.clients)) + ) + self.reply( + b"252 %s %d :operator(s) online.." + % (self.nickname, 1) + ) + self.reply( + b"253 %s %d :unknown connections.." + % (self.nickname, 1) + ) + self.reply( + b"254 %s %d :channels formed.." + % (self.nickname, 1) + ) + self.reply( + b"255 %s :I have %d clients and %d servers.." + % (self.nickname, 1, 1) + ) + self.reply( + b"265 %s :Current local users: %d Max: %d.." + % (self.nickname, 1, 1) + ) + self.reply( + b"266 %s :Current global users: %d Max: %d.." + % (self.nickname, 1, 1) + ) + + def send_motd(self) -> None: + server = self.server + motdlines = server.get_motd_lines() + if motdlines: + self.reply( + b"375 %s :- %s Message of the day -" + % (self.nickname, server.name) + ) + for line in motdlines: + self.reply( + b"372 %s :- %s" % (self.nickname, line.rstrip().encode()) + ) + self.reply(b"376 %s :End of /MOTD command" % self.nickname) + else: + self.reply(b"422 %s :Message of the day file is missing..." % self.nickname) + + +class Server: + def __init__(self, args: Namespace, ports: Collection[int]) -> None: + self.ports = ports + self.password: str = args.password + self.motdfile: Path = args.motd + self.verbose: bool = args.verbose + self.ipv6: bool = args.ipv6 + self.debug: bool = args.debug + self.channel_log_dir: Path = args.channel_log_dir + self.chroot: Path = args.chroot + self.setuid: tuple[int, int] = args.setuid + self.state_dir: Path = args.state_dir + self.log_file: Path = args.log_file + self.log_max_bytes: int = args.log_max_size * 1024 * 1024 + self.log_count: int = args.log_count + self.logger: Optional[logging.Logger] = None + self.cloak: str = args.cloak + self.name: bytes = b"i1.local" + self.ssl_context: "Optional[ssl.SSLContext]" + + if args.password_file: + self.password = args.password_file.read_text().strip("\n") + + if args.ssl_key_file: + import ssl + + ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) + ssl_context.load_default_certs(purpose=ssl.Purpose.SERVER_AUTH) + ssl_context.load_cert_chain( + certfile=args.ssl_cert_file, keyfile=args.ssl_key_file + ) + self.ssl_context = ssl_context + else: + self.ssl_context = None + + # Find key/cert files after daemonization if path is relative: + if args.ssl_cert_file and args.ssl_cert_file.exists(): + args.ssl_cert_file = args.ssl_cert_file.resolve() + if args.ssl_key_file and args.ssl_key_file.exists(): + args.ssl_key_file = args.ssl_key_file.resolve() + # else: might exist in the chroot jail, so just continue + + if args.listen and self.ipv6: + self.address = socket.getaddrinfo( + args.listen, None, proto=socket.IPPROTO_TCP + )[0][4][0] + elif args.listen: + self.address = socket.gethostbyname(args.listen) + else: + self.address = "" + server_name_limit = 63 # From the RFC. + self.name = socket.getfqdn(self.address)[:server_name_limit].encode() + + self.channels: Dict[bytes, Channel] = {} # key: irc_lower(channelname) + self.clients: Dict[Socket, Client] = {} + self.nicknames: Dict[bytes, Client] = {} # key: irc_lower(nickname) + if self.channel_log_dir: + self.channel_log_dir.mkdir(parents=True, exist_ok=True) + if self.state_dir: + self.state_dir.mkdir(parents=True, exist_ok=True) + + def make_pid_file(self, filename: str) -> None: + try: + fd = os.open(filename, os.O_RDWR | os.O_CREAT | os.O_EXCL, 0o644) + os.write(fd, b"%i\n" % os.getpid()) + os.close(fd) + except Exception: + self.print_error(f"Could not create PID file {filename!r}") + sys.exit(1) + + def remove_pid_file(self, filename: Path) -> None: + try: + filename.unlink() + except Exception: + self.print_error(f"Could not remove PID file {filename!r}") + + def daemonize(self) -> None: + try: + pid = os.fork() + if pid > 0: + sys.exit(0) + except OSError: + sys.exit(1) + os.setsid() + try: + pid = os.fork() + if pid > 0: + self.print_info("PID: %d" % pid) + sys.exit(0) + except OSError: + sys.exit(1) + os.chdir("/") + os.umask(0) + dev_null = open("/dev/null", "r+") + os.dup2(dev_null.fileno(), sys.stdout.fileno()) + os.dup2(dev_null.fileno(), sys.stderr.fileno()) + os.dup2(dev_null.fileno(), sys.stdin.fileno()) + + def get_client(self, nickname: bytes) -> Optional[Client]: + return self.nicknames.get(irc_lower(nickname)) + + def has_channel(self, name: bytes) -> bool: + return irc_lower(name) in self.channels + + def get_channel(self, channelname: bytes) -> Channel: + if irc_lower(channelname) in self.channels: + channel = self.channels[irc_lower(channelname)] + else: + channel = Channel(self, channelname) + self.channels[irc_lower(channelname)] = channel + return channel + + def get_motd_lines(self) -> Collection[str]: + if self.motdfile: + try: + return self.motdfile.read_text().splitlines() + except IOError: + return ["Could not read MOTD file {self.motdfile!r}."] + else: + return [] + + def print_info(self, msg: str) -> None: + if self.verbose: + print(msg) + sys.stdout.flush() + if self.logger: + self.logger.info(msg) + + def print_debug(self, msg: str) -> None: + if self.debug: + print(msg) + sys.stdout.flush() + if self.logger: + self.logger.debug(msg) + + def print_error(self, msg: str) -> None: + sys.stderr.write(f"{msg}\n") + if self.logger: + self.logger.error(msg) + + def client_changed_nickname( + self, client: Client, oldnickname: Optional[bytes] + ) -> None: + if oldnickname: + del self.nicknames[irc_lower(oldnickname)] + self.nicknames[irc_lower(client.nickname)] = client + + def remove_member_from_channel( + self, client: Client, channelname: bytes + ) -> None: + if irc_lower(channelname) in self.channels: + channel = self.channels[irc_lower(channelname)] + channel.remove_client(client) + + def remove_client(self, client: Client, quitmsg: bytes) -> None: + client.message_related(b":%s QUIT :%s" % (client.prefix, quitmsg)) + for x in client.channels.values(): + client.channel_log(x, b"quit (%s)" % quitmsg, meta=True) + x.remove_client(client) + if client.nickname and irc_lower(client.nickname) in self.nicknames: + del self.nicknames[irc_lower(client.nickname)] + del self.clients[client.socket] + + def remove_channel(self, channel: Channel) -> None: + del self.channels[irc_lower(channel.name)] + + def start(self) -> None: + serversockets = [] + for port in self.ports: + s = socket.socket( + socket.AF_INET6 if self.ipv6 else socket.AF_INET, + socket.SOCK_STREAM, + ) + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + try: + s.bind((self.address, port)) + except socket.error as e: + self.print_error(f"Could not bind port {port}: {e}.") + sys.exit(1) + s.listen(5) + serversockets.append(s) + del s + self.print_info(f"Listening on port {port}.") + if self.chroot: + os.chdir(self.chroot) + os.chroot(self.chroot) + self.print_info(f"Changed root directory to {self.chroot}") + if self.setuid: + os.setgid(self.setuid[1]) + os.setuid(self.setuid[0]) + self.print_info( + f"Setting uid:gid to {self.setuid[0]}:{self.setuid[1]}" + ) + + self.init_logging() + try: + self.run(serversockets) + except Exception: + if self.logger: + self.logger.exception("Fatal exception") + raise + + def init_logging(self) -> None: + if not self.log_file: + return + + log_level = logging.INFO + if self.debug: + log_level = logging.DEBUG + self.logger = logging.getLogger("miniircd") + formatter = logging.Formatter( + "%(asctime)s - %(name)s[%(process)d] - %(levelname)s - %(message)s" + ) + fh = RotatingFileHandler( + self.log_file, + maxBytes=self.log_max_bytes, + backupCount=self.log_count, + ) + fh.setLevel(log_level) + fh.setFormatter(formatter) + self.logger.setLevel(log_level) + self.logger.addHandler(fh) + + def run(self, serversockets: List[Socket]) -> None: + last_aliveness_check = time.time() + while True: + iwtd, owtd, ewtd = select.select( + serversockets + [x.socket for x in self.clients.values()], + [ + x.socket + for x in self.clients.values() + if x.write_queue_size() > 0 + ], + [], + 10, + ) + for x in iwtd: + if x in self.clients: + self.clients[x].socket_readable_notification() + else: + self._handle_server_socket(x) + for x in owtd: + if x in self.clients: # client may have been disconnected + self.clients[x].socket_writable_notification() + now = time.time() + # if last_aliveness_check + 10 < now: + # for client in list(self.clients.values()): + # client.check_aliveness() + # last_aliveness_check = now + + def _handle_server_socket(self, server: Socket) -> None: + client, addr = server.accept() + if self.ssl_context: + try: + client = self.ssl_context.wrap_socket(client, server_side=True) + except Exception as e: + self.print_error( + f"SSL error for connection from {addr[0]}:{addr[1]}: {e}" + ) + return + try: + self.clients[client] = Client(self, client) + self.print_info(f"Accepted connection from {addr[0]}:{addr[1]}.") + except socket.error: + try: + client.close() + except Exception: + pass + + +_ircstring_translation = bytes.maketrans( + (string.ascii_lowercase.upper() + "[]\\^").encode(), + (string.ascii_lowercase + "{}|~").encode(), +) + + +def irc_lower(s: bytes) -> bytes: + return s.translate(_ircstring_translation) + + +def main() -> None: + ap = ArgumentParser( + description="miniircd is a small and limited IRC server.", + ) + ap.add_argument("--version", action="version", version=VERSION) + ap.add_argument( + "--channel-log-dir", + metavar="X", + help="store channel log in directory X", + type=Path, + ) + if os.name == "posix": + ap.add_argument( + "--chroot", + metavar="X", + help="change filesystem root to directory X after startup" + " (requires root)", + type=Path, + ) + ap.add_argument( + "--cloak", metavar="X", help="report X as the host for all clients" + ) + ap.add_argument( + "-d", "--daemon", action="store_true", help="fork and become a daemon" + ) + ap.add_argument("--ipv6", action="store_true", help="use IPv6") + ap.add_argument( + "--debug", action="store_true", help="print debug messages to stdout" + ) + ap.add_argument( + "--listen", metavar="X", help="listen on specific IP address X" + ) + ap.add_argument( + "--log-count", + metavar="X", + default=10, + type=int, + help="keep X log files; default: %(default)s", + ) + ap.add_argument( + "--log-file", metavar="X", help="store log in file X", type=Path + ) + ap.add_argument( + "--log-max-size", + metavar="X", + default=10, + type=int, + help="set maximum log file size to X MiB; default: %(default)s MiB", + ) + ap.add_argument( + "--motd", + metavar="X", + help="display file X as message of the day", + type=Path, + ) + ap.add_argument( + "--pid-file", metavar="X", help="write PID to file X", type=Path + ) + ap.add_argument( + "-p", + "--password", + metavar="X", + help="require connection password X; default: no password", + ) + ap.add_argument( + "--password-file", + metavar="X", + help=( + "require connection password stored in file X;" + " default: no password" + ), + type=Path, + ) + ap.add_argument( + "--ports", + metavar="X", + help="listen to ports X (a list separated by comma or whitespace);" + " default: 6667 or 6697 if SSL is enabled", + ) + if os.name == "posix": + ap.add_argument( + "--setuid", + metavar="U[:G]", + help="change process user (and optionally group) after startup" + " (requires root)", + ) + ap.add_argument( + "--ssl-cert-file", + metavar="FILE", + help="enable SSL with PEM certificate in FILE", + type=Path, + ) + ap.add_argument( + "--ssl-key-file", + metavar="FILE", + help="enable SSL with PEM key in FILE", + type=Path, + ) + ap.add_argument( + "-s", + "--ssl-pem-file", + metavar="FILE", + help="enable SSL with key and certificate combined in FILE", + type=Path, + ) + ap.add_argument( + "--state-dir", + metavar="X", + help="save persistent channel state (topic, key) in directory X", + type=Path, + ) + ap.add_argument( + "--verbose", + action="store_true", + help="be verbose (print some progress messages to stdout)", + ) + + args = ap.parse_args() + + if bool(args.ssl_cert_file) != bool(args.ssl_key_file): + args.error("Must specify both --ssl-cert-file and --ssl-key-file") + if args.ssl_pem_file: + if args.ssl_cert_file: + args.error( + "Cannot specify both --ssl-pem-file and --ssl-cert-file" + ) + args.ssl_cert_file = args.ssl_pem_file + args.ssl_key_file = args.ssl_pem_file + + if os.name != "posix": + args.chroot = False + args.setuid = False + if args.debug: + args.verbose = True + if args.ports is None: + if args.ssl_key_file is None: + args.ports = "6667" + else: + args.ports = "6697" + if args.chroot and os.getuid() != 0: + ap.error("Must be root to use --chroot") + if args.setuid: + from pwd import getpwnam + from grp import getgrnam + + if os.getuid() != 0: + ap.error("Must be root to use --setuid") + matches = args.setuid.split(":") + if len(matches) == 2: + args.setuid = ( + getpwnam(matches[0]).pw_uid, + getgrnam(matches[1]).gr_gid, + ) + elif len(matches) == 1: + args.setuid = ( + getpwnam(matches[0]).pw_uid, + getpwnam(matches[0]).pw_gid, + ) + else: + ap.error( + "Specify a user, or user and group separated by a colon," + " e.g. --setuid daemon, --setuid nobody:nobody" + ) + if ( + os.name == "posix" + and not args.setuid + and (os.getuid() == 0 or os.getgid() == 0) + ): + ap.error( + "Running this service as root is not recommended. Use the" + " --setuid option to switch to an unprivileged account after" + " startup. If you really intend to run as root, use" + ' "--setuid root".' + ) + + ports = [] + for port in re.split(r"[,\s]+", args.ports): + try: + ports.append(int(port)) + except ValueError: + ap.error("bad port: %r" % port) + + server = Server(args, ports) + if args.pid_file: + args.pid_file = args.pid_file.resolve() + if args.daemon: + server.daemonize() + if args.pid_file: + server.make_pid_file(args.pid_file) + try: + server.start() + except KeyboardInterrupt: + server.print_error("Interrupted.") + finally: + if args.pid_file: + server.remove_pid_file(args.pid_file) + + +if __name__ == "__main__": + main() diff --git a/static/fixed_responses/login_static.ts b/static/fixed_responses/login_static.ts index 8319186a..2be9236e 100644 --- a/static/fixed_responses/login_static.ts +++ b/static/fixed_responses/login_static.ts @@ -28,6 +28,6 @@ export const NRS = ["104.237.145.11", "139.144.69.73", "170.187.231.80", "45.33. export const DTLS = 99; -export const IRC = ["localhost"]; +export const IRC = ["localhost:6699"]; export const HUB = "https://arbiter.warframe.com/api/"; -- 2.47.2 From a79ec62c94ab99154a3eb7b6c68ef93ed9867334 Mon Sep 17 00:00:00 2001 From: AKCore Date: Thu, 1 Jun 2023 17:08:05 -0700 Subject: [PATCH 006/522] Add missing api routes. --- .../api/deleteSessionController.ts | 8 +++++++ src/controllers/api/dronesController.ts | 6 +---- src/controllers/api/findSessionsController.ts | 11 ++------- .../api/genericUpdateController.ts | 8 +++++++ src/controllers/api/getCreditsController.ts | 7 ++++++ .../api/getNewRewardSeedController.ts | 2 +- src/controllers/api/hostSessionController.ts | 5 +++- src/controllers/api/hubController.ts | 7 ++++++ src/controllers/api/hubInstancesController.ts | 7 ++++++ src/controllers/api/logoutController.ts | 14 +++++++++++ .../api/missionInventoryUpdateController.ts | 7 ++++++ .../api/modularWeaponSaleController.ts | 7 ++++++ .../api/updateSessionController.ts | 11 +++++++++ .../dynamic/aggregateSessionsController.ts | 2 +- src/routes/api.ts | 23 ++++++++++++++++++- 15 files changed, 107 insertions(+), 18 deletions(-) create mode 100644 src/controllers/api/deleteSessionController.ts create mode 100644 src/controllers/api/genericUpdateController.ts create mode 100644 src/controllers/api/getCreditsController.ts create mode 100644 src/controllers/api/hubController.ts create mode 100644 src/controllers/api/hubInstancesController.ts create mode 100644 src/controllers/api/logoutController.ts create mode 100644 src/controllers/api/missionInventoryUpdateController.ts create mode 100644 src/controllers/api/modularWeaponSaleController.ts create mode 100644 src/controllers/api/updateSessionController.ts diff --git a/src/controllers/api/deleteSessionController.ts b/src/controllers/api/deleteSessionController.ts new file mode 100644 index 00000000..abdd55f7 --- /dev/null +++ b/src/controllers/api/deleteSessionController.ts @@ -0,0 +1,8 @@ +import { RequestHandler } from "express"; + +const deleteSessionController: RequestHandler = (_req, res) => { + console.log("DeleteSession Request:", JSON.parse(_req.body)); + res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); +}; + +export { deleteSessionController }; diff --git a/src/controllers/api/dronesController.ts b/src/controllers/api/dronesController.ts index 7a55e00e..1136ad42 100644 --- a/src/controllers/api/dronesController.ts +++ b/src/controllers/api/dronesController.ts @@ -1,11 +1,7 @@ import { RequestHandler } from "express"; const dronesController: RequestHandler = (_req, res) => { - res.writeHead(200, { - "Content-Type": "text/html", - "Content-Length": "3" - }); - res.end(Buffer.from([0x7b, 0x7d, 0x0a])); + res.json({}) }; export { dronesController }; diff --git a/src/controllers/api/findSessionsController.ts b/src/controllers/api/findSessionsController.ts index f749f00a..98b51f13 100644 --- a/src/controllers/api/findSessionsController.ts +++ b/src/controllers/api/findSessionsController.ts @@ -1,16 +1,9 @@ import { RequestHandler } from "express"; const findSessionsController: RequestHandler = (_req, res) => { - const data = Buffer.from([ - 0x7b, 0x22, 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x22, 0x3a, 0x31, 0x2c, 0x22, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x5b, 0x5d, 0x7d - ]); + console.log("FindSession Request:", JSON.parse(_req.body)); - res.writeHead(200, { - "Content-Type": "text/html", - "Content-Length": data.length - }); - res.end(data); + res.json({ "sessionId": { "$oid": "64768f104722f795300c9fc0" }, "rewardSeed": 5867309943877621023 }); }; export { findSessionsController }; diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts new file mode 100644 index 00000000..9e2ff668 --- /dev/null +++ b/src/controllers/api/genericUpdateController.ts @@ -0,0 +1,8 @@ +import { RequestHandler } from "express"; + +const genericUpdateController: RequestHandler = (_req, res) => { + console.log("GenericUpdate Request:", JSON.parse(_req.body)); + res.json({}); +}; + +export { genericUpdateController }; \ No newline at end of file diff --git a/src/controllers/api/getCreditsController.ts b/src/controllers/api/getCreditsController.ts new file mode 100644 index 00000000..1c399f3c --- /dev/null +++ b/src/controllers/api/getCreditsController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const getCreditsController: RequestHandler = (_req, res) => { + res.json({ "RegularCredits": 42069, "TradesRemaining": 1, "PremiumCreditsFree": 42069, "PremiumCredits": 42069 }); +}; + +export { getCreditsController }; diff --git a/src/controllers/api/getNewRewardSeedController.ts b/src/controllers/api/getNewRewardSeedController.ts index 851b9d4e..65655558 100644 --- a/src/controllers/api/getNewRewardSeedController.ts +++ b/src/controllers/api/getNewRewardSeedController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; const getNewRewardSeedController: RequestHandler = (_req, res) => { - res.sendStatus(200); + res.json({ "rewardSeed": 5867309943877621023 }); }; export { getNewRewardSeedController }; diff --git a/src/controllers/api/hostSessionController.ts b/src/controllers/api/hostSessionController.ts index 812332cf..59d9b174 100644 --- a/src/controllers/api/hostSessionController.ts +++ b/src/controllers/api/hostSessionController.ts @@ -1,7 +1,10 @@ import { RequestHandler } from "express"; const hostSessionController: RequestHandler = (_req, res) => { - res.json({ sessionId: { $oid: "64777916e794cfc5abdd69ea" }, rewardSeed: -1492798783199571432 }); + console.log("HostSession Request:", JSON.parse(_req.body)); + + res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); + }; export { hostSessionController }; diff --git a/src/controllers/api/hubController.ts b/src/controllers/api/hubController.ts new file mode 100644 index 00000000..4fc24ddb --- /dev/null +++ b/src/controllers/api/hubController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const hubController: RequestHandler = (_req, res) => { + res.json("hub 127.0.0.1:6952"); +}; + +export { hubController }; \ No newline at end of file diff --git a/src/controllers/api/hubInstancesController.ts b/src/controllers/api/hubInstancesController.ts new file mode 100644 index 00000000..fd7c1137 --- /dev/null +++ b/src/controllers/api/hubInstancesController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const hubInstancesController: RequestHandler = (_req, res) => { + res.json("list 50 16 1 0 scenarios 0 0 0 0 0 0"); +}; + +export { hubInstancesController }; \ No newline at end of file diff --git a/src/controllers/api/logoutController.ts b/src/controllers/api/logoutController.ts new file mode 100644 index 00000000..e2910ae3 --- /dev/null +++ b/src/controllers/api/logoutController.ts @@ -0,0 +1,14 @@ +import { RequestHandler } from "express"; + +const logoutController: RequestHandler = (_req, res) => { + const data = Buffer.from([ + 0x31 + ]); + res.writeHead(200, { + "Content-Type": "text/html", + "Content-Length": data.length + }); + res.end(data); +}; + +export { logoutController }; \ No newline at end of file diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts new file mode 100644 index 00000000..54b7e548 --- /dev/null +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const missionInventoryUpdateController: RequestHandler = (_req, res) => { + res.json({}); +}; + +export { missionInventoryUpdateController }; diff --git a/src/controllers/api/modularWeaponSaleController.ts b/src/controllers/api/modularWeaponSaleController.ts new file mode 100644 index 00000000..1a6333b7 --- /dev/null +++ b/src/controllers/api/modularWeaponSaleController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const modularWeaponSaleController: RequestHandler = (_req, res) => { + res.json({"SaleInfos":[{"Name":"Ostron","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":3045,"Weapons":[{"ItemType":"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon","PremiumPrice":171,"ModularParts":["/Lotus/Weapons/Ostron/Melee/ModularMelee01/Handle/HandleFive","/Lotus/Weapons/Ostron/Melee/ModularMelee01/Tip/TipSix","/Lotus/Weapons/Ostron/Melee/ModularMelee01/Balance/BalanceDamageICritII"]}]},{"Name":"SolarisUnitedHoverboard","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":1650,"Weapons":[{"ItemType":"/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit","PremiumPrice":51,"ModularParts":["/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCDeck","/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCEngine","/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusB/HoverboardCorpusBFront","/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCJet"]}]},{"Name":"SolarisUnitedMoaPet","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":1650,"Weapons":[{"ItemType":"/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit","PremiumPrice":175,"ModularParts":["/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetLegC","/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetHeadOloro","/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetEngineKrisys","/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetPayloadThermocor"]}]},{"Name":"SolarisUnitedKitGun","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":1650,"Weapons":[{"ItemType":"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam","PremiumPrice":157,"ModularParts":["/Lotus/Weapons/SolarisUnited/Primary/SUModularPrimarySet1/Handles/SUModularPrimaryHandleAPart","/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Barrel/SUModularSecondaryBarrelDPart","/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Clip/SUModularCritIReloadIIClipPart"]}]}]}); +}; + +export { modularWeaponSaleController }; \ No newline at end of file diff --git a/src/controllers/api/updateSessionController.ts b/src/controllers/api/updateSessionController.ts new file mode 100644 index 00000000..55f03f3c --- /dev/null +++ b/src/controllers/api/updateSessionController.ts @@ -0,0 +1,11 @@ +import { RequestHandler } from "express"; + +const updateSessionGetController: RequestHandler = (_req, res) => { + res.json({}); +}; +const updateSessionPostController: RequestHandler = (_req, res) => { + console.log("UpdateSessions POST Request:", JSON.parse(_req.body)); + + res.json({ "hasStarted": true }); +}; +export { updateSessionGetController, updateSessionPostController }; diff --git a/src/controllers/dynamic/aggregateSessionsController.ts b/src/controllers/dynamic/aggregateSessionsController.ts index e3c1659b..172ee06e 100644 --- a/src/controllers/dynamic/aggregateSessionsController.ts +++ b/src/controllers/dynamic/aggregateSessionsController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; const aggregateSessionsController: RequestHandler = (_req, res) => { - res.json({}); + res.json( { "Results": [{ "gameModeId": 3228, "count": 12 }, { "gameModeId": 2022236, "count": 1 }, { "gameModeId": 1109004, "count": 1 }, { "gameModeId": 2004450, "count": 1 }, { "gameModeId": 2129, "count": 4 }, { "gameModeId": 8763, "count": 1 }, { "gameModeId": 12183, "count": 1 }, { "gameModeId": 11167, "count": 1 }, { "gameModeId": 17710, "count": 1 }, { "gameModeId": 22237, "count": 1 }, { "gameModeId": 3509, "count": 1 }, { "gameModeId": 13006, "count": 1 }, { "gameModeId": 20801, "count": 2 }, { "gameModeId": 204014, "count": 1 }, { "gameModeId": 2061, "count": 1 }, { "gameModeId": 303025, "count": 1 }, { "gameModeId": 702001, "count": 12 }, { "gameModeId": 2305121, "count": 1 }, { "gameModeId": 1704046, "count": 1 }, { "gameModeId": 17229, "count": 12 }, { "gameModeId": 717000, "count": 15 }, { "gameModeId": 9536, "count": 1 }, { "gameModeId": 15409, "count": 1 }, { "gameModeId": 722000, "count": 20 }, { "gameModeId": 22232, "count": 2 }, { "gameModeId": 2023, "count": 2 }, { "gameModeId": 1704008, "count": 1 }, { "gameModeId": 6042, "count": 1 }, { "gameModeId": 2305053, "count": 1 }, { "gameModeId": 2022238, "count": 2 }, { "gameModeId": 1708001, "count": 1 }, { "gameModeId": 5004, "count": 1 }, { "gameModeId": 605088, "count": 1 }, { "gameModeId": 6032, "count": 1 }, { "gameModeId": 2022, "count": 2 }, { "gameModeId": 1216214, "count": 1 }, { "gameModeId": 3903, "count": 1 }, { "gameModeId": 6096, "count": 1 }, { "gameModeId": 2003079, "count": 1 }, { "gameModeId": 1105121, "count": 1 }, { "gameModeId": 616020, "count": 1 }, { "gameModeId": 1204235, "count": 1 }, { "gameModeId": 9024, "count": 2 }, { "gameModeId": 703004, "count": 16 }, { "gameModeId": 706000, "count": 2 }, { "gameModeId": 201223, "count": 1 }, { "gameModeId": 1404068, "count": 2 }, { "gameModeId": 22231, "count": 1 }, { "gameModeId": 2111019, "count": 1 }, { "gameModeId": 1407064, "count": 1 }, { "gameModeId": 701000, "count": 2 }, { "gameModeId": 703000, "count": 2 }, { "gameModeId": 1703039, "count": 1 }, { "gameModeId": 5005, "count": 1 }, { "gameModeId": 2001094, "count": 1 }, { "gameModeId": 22236, "count": 2 }, { "gameModeId": 703003, "count": 1 }, { "gameModeId": 98000, "count": 30 }, { "gameModeId": 1419748, "count": 1 }, { "gameModeId": 21555, "count": 1 }, { "gameModeId": 22238, "count": 1 }, { "gameModeId": 1704113, "count": 1 }, { "gameModeId": 9025, "count": 2 }, { "gameModeId": 1318307, "count": 1 }, { "gameModeId": 303034, "count": 1 }, { "gameModeId": 15401, "count": 1 }, { "gameModeId": 4904, "count": 1 }, { "gameModeId": 2305126, "count": 1 }, { "gameModeId": 2002123, "count": 1 }, { "gameModeId": 9004, "count": 1 }, { "gameModeId": 1702109, "count": 1 }, { "gameModeId": 15408, "count": 1 }, { "gameModeId": 6013, "count": 1 }, { "gameModeId": 17706, "count": 2 }, { "gameModeId": 2005053, "count": 1 }, { "gameModeId": 1805125, "count": 2 }, { "gameModeId": 15402, "count": 1 }, { "gameModeId": 101, "count": 3 }, { "gameModeId": 2010144, "count": 1 }, { "gameModeId": 3027, "count": 1 }, { "gameModeId": 2001, "count": 1 }, { "gameModeId": 12191, "count": 1 }, { "gameModeId": 1112189, "count": 1 }, { "gameModeId": 4450, "count": 1 }, { "gameModeId": 2011019, "count": 1 }, { "gameModeId": 12195, "count": 1 }, { "gameModeId": 8525, "count": 1 }, { "gameModeId": 12014, "count": 1 }, { "gameModeId": 12189, "count": 1 }, { "gameModeId": 10147, "count": 1 }, { "gameModeId": 11175, "count": 1 }, { "gameModeId": 1703089, "count": 1 }, { "gameModeId": 2104, "count": 1 }, { "gameModeId": 2015409, "count": 1 }, { "gameModeId": 4058, "count": 1 }, { "gameModeId": 1416015, "count": 2 }, { "gameModeId": 1201108, "count": 1 }, { "gameModeId": 704001, "count": 6 }, { "gameModeId": 2022230, "count": 1 }, { "gameModeId": 5100, "count": 1 }, { "gameModeId": 1703026, "count": 1 }, { "gameModeId": 1415400, "count": 1 }] }); }; export { aggregateSessionsController }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 2b3e8c08..b387effc 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -18,6 +18,17 @@ import { setActiveQuestController } from "../controllers/api/setActiveQuestContr import { surveysController } from "../controllers/api/surveysController"; import { updateChallengeProgressController } from "../controllers/api/updateChallengeProgressController"; import { viewController } from "../controllers/api/viewController"; +import { updateSessionPostController } from "../controllers/api/updateSessionController"; +import { updateSessionGetController } from "../controllers/api/updateSessionController"; +import { getCreditsController } from "../controllers/api/getCreditsController"; +import { hubInstancesController } from "../controllers/api/hubInstancesController"; +import { hubController } from "../controllers/api/hubController"; +import { modularWeaponSaleController } from "../controllers/api/modularWeaponSaleController"; +import { deleteSessionController } from "../controllers/api/deleteSessionController"; +import { logoutController } from "../controllers/api/logoutController"; +import { missionInventoryUpdateController } from "../controllers/api/missionInventoryUpdateController"; +import { genericUpdateController } from "../controllers/api/genericUpdateController"; + const apiRouter = express.Router(); @@ -32,10 +43,17 @@ apiRouter.get("/checkDailyMissionBonus.php", checkDailyMissionBonusController); apiRouter.get("/inbox.php", inboxController); apiRouter.get("/getShip.php", getShipController); apiRouter.get("/view.php", viewController); -apiRouter.get("/drones.php", dronesController); +apiRouter.get("/drones.php", dronesController); apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController); apiRouter.get("/getNewRewardSeed.php", getNewRewardSeedController); apiRouter.get("/setActiveQuest.php", setActiveQuestController); +apiRouter.get("/updateSession.php", updateSessionGetController); +apiRouter.get("/credits.php", getCreditsController); +apiRouter.get("/hubInstances", hubInstancesController); +apiRouter.get("/hub", hubController); +apiRouter.get("/modularWeaponSale.php", modularWeaponSaleController); +apiRouter.get("/deleteSession.php", deleteSessionController); +apiRouter.get("/logout.php", logoutController); // post apiRouter.post("/findSessions.php", findSessionsController); @@ -44,5 +62,8 @@ apiRouter.post("/login.php", loginController); apiRouter.post("/getAlliance.php", getAllianceController); apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController); apiRouter.post("/hostSession.php", hostSessionController); +apiRouter.post("/updateSession.php", updateSessionPostController); +apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); +apiRouter.post("/genericUpdate.php", genericUpdateController); export { apiRouter }; -- 2.47.2 From 50722ec6b57457cea2287a7b2d590a4d001bb70f Mon Sep 17 00:00:00 2001 From: AKCore Date: Thu, 1 Jun 2023 17:52:59 -0700 Subject: [PATCH 007/522] Add Reroll Random and Stats upload and fix a few errors from last pr --- src/app.ts | 3 ++- src/controllers/api/deleteSessionController.ts | 1 - src/controllers/api/genericUpdateController.ts | 1 - src/controllers/api/rerollRandomModController.ts | 8 ++++++++ src/controllers/stats/uploadController.ts | 7 +++++++ src/routes/api.ts | 3 ++- src/routes/stats.ts | 8 ++++++++ 7 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 src/controllers/api/rerollRandomModController.ts create mode 100644 src/controllers/stats/uploadController.ts create mode 100644 src/routes/stats.ts diff --git a/src/app.ts b/src/app.ts index d45e965e..fbbf8100 100644 --- a/src/app.ts +++ b/src/app.ts @@ -8,7 +8,7 @@ import { apiRouter } from "@/src/routes/api"; import { cacheRouter } from "@/src/routes/cache"; import { customRouter } from "./routes/custom"; import { dynamicController } from "./routes/dynamic"; - +import { statsRouter } from "./routes/stats"; import bodyParser from "body-parser"; import morgan from "morgan"; @@ -32,6 +32,7 @@ app.use("/custom", customRouter); app.use("/:id/dynamic", dynamicController); app.post("/pay/steamPacks.php", steamPacksController); +app.use("/stats", statsRouter); app.use(unknownEndpointHandler); diff --git a/src/controllers/api/deleteSessionController.ts b/src/controllers/api/deleteSessionController.ts index abdd55f7..ba062e88 100644 --- a/src/controllers/api/deleteSessionController.ts +++ b/src/controllers/api/deleteSessionController.ts @@ -1,7 +1,6 @@ import { RequestHandler } from "express"; const deleteSessionController: RequestHandler = (_req, res) => { - console.log("DeleteSession Request:", JSON.parse(_req.body)); res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); }; diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index 9e2ff668..2557c120 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -1,7 +1,6 @@ import { RequestHandler } from "express"; const genericUpdateController: RequestHandler = (_req, res) => { - console.log("GenericUpdate Request:", JSON.parse(_req.body)); res.json({}); }; diff --git a/src/controllers/api/rerollRandomModController.ts b/src/controllers/api/rerollRandomModController.ts new file mode 100644 index 00000000..f1d72a56 --- /dev/null +++ b/src/controllers/api/rerollRandomModController.ts @@ -0,0 +1,8 @@ +import { RequestHandler } from "express"; + +const rerollRandomModController: RequestHandler = (_req, res) => { + console.log("RerollRandomMod Request:", _req.body.toString('hex').replace(/(.)(.)/g, '$1$2 ')); + res.json({ }); +}; + +export { rerollRandomModController }; \ No newline at end of file diff --git a/src/controllers/stats/uploadController.ts b/src/controllers/stats/uploadController.ts new file mode 100644 index 00000000..575ebf9f --- /dev/null +++ b/src/controllers/stats/uploadController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const uploadController: RequestHandler = (_req, res) => { + res.json({}); +}; + +export { uploadController }; diff --git a/src/routes/api.ts b/src/routes/api.ts index b387effc..d198e16f 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -28,6 +28,7 @@ import { deleteSessionController } from "../controllers/api/deleteSessionControl import { logoutController } from "../controllers/api/logoutController"; import { missionInventoryUpdateController } from "../controllers/api/missionInventoryUpdateController"; import { genericUpdateController } from "../controllers/api/genericUpdateController"; +import { rerollRandomModController } from "../controllers/api/rerollRandomModController"; const apiRouter = express.Router(); @@ -65,5 +66,5 @@ apiRouter.post("/hostSession.php", hostSessionController); apiRouter.post("/updateSession.php", updateSessionPostController); apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); apiRouter.post("/genericUpdate.php", genericUpdateController); - +apiRouter.post("/rerollRandomMod.php", rerollRandomModController) export { apiRouter }; diff --git a/src/routes/stats.ts b/src/routes/stats.ts new file mode 100644 index 00000000..1c79b797 --- /dev/null +++ b/src/routes/stats.ts @@ -0,0 +1,8 @@ +import express from "express"; +import { uploadController } from "../controllers/stats/uploadController"; + +const statsRouter = express.Router(); + +//post +statsRouter.post("/upload.php", uploadController); +export { statsRouter }; -- 2.47.2 From 045542a321cc84e18ace6202d7093557c9ee686d Mon Sep 17 00:00:00 2001 From: AKCore Date: Thu, 1 Jun 2023 18:01:02 -0700 Subject: [PATCH 008/522] Update src/routes/stats.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ângelo Tadeucci --- src/routes/stats.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/stats.ts b/src/routes/stats.ts index 1c79b797..83ae591c 100644 --- a/src/routes/stats.ts +++ b/src/routes/stats.ts @@ -3,6 +3,5 @@ import { uploadController } from "../controllers/stats/uploadController"; const statsRouter = express.Router(); -//post statsRouter.post("/upload.php", uploadController); export { statsRouter }; -- 2.47.2 From 108d2c621db3ab24f92499facfc11af93736735d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Fri, 2 Jun 2023 00:20:49 -0300 Subject: [PATCH 009/522] Use non-relative imports (#8) --- .eslintrc | 1 + .prettierrc | 11 +- package-lock.json | 6451 ++++++++--------- package.json | 14 +- src/app.ts | 10 +- src/controllers/api/dronesController.ts | 2 +- src/controllers/api/findSessionsController.ts | 2 +- .../api/genericUpdateController.ts | 2 +- src/controllers/api/getCreditsController.ts | 2 +- src/controllers/api/getFriendsController.ts | 4 +- .../api/getNewRewardSeedController.ts | 2 +- src/controllers/api/hostSessionController.ts | 1 - src/controllers/api/hubController.ts | 2 +- src/controllers/api/hubInstancesController.ts | 2 +- src/controllers/api/inventoryController.ts | 4 +- src/controllers/api/loginController.ts | 2 - src/controllers/api/logoutController.ts | 8 +- .../api/modularWeaponSaleController.ts | 5 +- src/controllers/api/purchaseController.ts | 4 +- .../api/rerollRandomModController.ts | 6 +- .../api/updateSessionController.ts | 2 +- .../custom/createAccountController.ts | 1 - .../dynamic/aggregateSessionsController.ts | 3 +- src/helpers/customHelpers.ts | 4 +- src/helpers/loginHelpers.ts | 2 +- src/models/loginModel.ts | 2 +- src/routes/api.ts | 72 +- src/routes/custom.ts | 2 +- src/routes/dynamic.ts | 4 +- src/routes/stats.ts | 4 +- src/services/loginService.ts | 4 +- static/fixed_responses/aggregateSessions.json | 106 + static/fixed_responses/getShip.json | 44 +- static/fixed_responses/inbox.json | 40 +- static/fixed_responses/inventory.json | 258 +- static/fixed_responses/loginRewards.json | 14 +- static/fixed_responses/modularWeaponSale.json | 70 + static/fixed_responses/purchase.json | 22 +- static/fixed_responses/worldState.json | 5010 +++++++------ 39 files changed, 6169 insertions(+), 6030 deletions(-) create mode 100644 static/fixed_responses/aggregateSessions.json create mode 100644 static/fixed_responses/modularWeaponSale.json diff --git a/.eslintrc b/.eslintrc index 9c2b88f9..dc83cd5b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -11,6 +11,7 @@ "node": true }, "rules": { + "@typescript-eslint/no-misused-promises": "off", "prettier/prettier": "error", "@typescript-eslint/semi": ["error"], "@typescript-eslint/explicit-function-return-type": "off", diff --git a/.prettierrc b/.prettierrc index dc84f98c..47912fcd 100644 --- a/.prettierrc +++ b/.prettierrc @@ -14,5 +14,14 @@ "singleQuote": false, "vueIndentScriptAndStyle": true, "arrowParens": "avoid", - "bracketSpacing": true + "bracketSpacing": true, + "overrides": [ + { + "files": "*.json", + "options": { + "tabWidth": 2, + "printWidth": 200 + } + } + ] } diff --git a/package-lock.json b/package-lock.json index ee3525bf..44a892f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,3233 +1,3230 @@ { - "name": "wf-emulator", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "wf-emulator", - "version": "0.1.0", - "license": "GNU", - "dependencies": { - "dotenv": "^16.0.3", - "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" - }, - "devDependencies": { - "@tsconfig/node20": "^1.0.0", - "@types/body-parser": "^1.19.2", - "@types/express": "^4.17.17", - "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", - "eslint": "^8.40.0", - "eslint-plugin-prettier": "^4.2.1", - "morgan": "^1.10.0", - "prettier": "^2.8.8", - "ts-node-dev": "^2.0.0", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.0.4" - }, - "engines": { - "node": ">=18.15.0", - "npm": ">=9.5.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", - "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "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/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.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@tsconfig/node20": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", - "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/morgan": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", - "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", - "dev": true - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", - "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/type-utils": "5.59.2", - "@typescript-eslint/utils": "5.59.2", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", - "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", - "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.2", - "@typescript-eslint/utils": "5.59.2", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/type-utils/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/@typescript-eslint/types": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", - "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", - "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", - "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", - "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "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": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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": "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/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/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/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==", - "dev": true, - "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==", - "dev": true - }, - "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/body-parser": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", - "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/body-parser/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/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/bson": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", - "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", - "engines": { - "node": ">=14.20.1" - } - }, - "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/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/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/chokidar/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/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/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/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/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/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "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/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "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/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "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==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", - "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", - "dev": true, - "dependencies": { - "xtend": "^4.0.0" - } - }, - "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/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/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": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.40.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/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/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/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/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/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/express": { - "version": "5.0.0-beta.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", - "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "3.0.0", - "body-parser": "2.0.0-beta.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "3.1.0", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "mime-types": "~2.1.34", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-is-absolute": "1.0.1", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "router": "2.0.0-beta.1", - "safe-buffer": "5.2.1", - "send": "1.0.0-beta.1", - "serve-static": "2.0.0-beta.1", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/express/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/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/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/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/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "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/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/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/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/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/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "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/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "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-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-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "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-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-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": 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/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "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/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "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/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "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/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "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==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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/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": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", - "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", - "dependencies": { - "bson": "^5.2.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true + "name": "wf-emulator", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "wf-emulator", + "version": "0.1.0", + "license": "GNU", + "dependencies": { + "dotenv": "^16.1.3", + "express": "^5.0.0-beta.1", + "mongoose": "^7.1.1" + }, + "devDependencies": { + "@tsconfig/node20": "^1.0.0", + "@types/express": "^4.17.17", + "@types/morgan": "^1.9.4", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "eslint": "^8.41.0", + "eslint-plugin-prettier": "^4.2.1", + "morgan": "^1.10.0", + "prettier": "^2.8.8", + "ts-node-dev": "^2.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.1.3" + }, + "engines": { + "node": ">=18.15.0", + "npm": ">=9.5.0" + } }, - "mongodb-client-encryption": { - "optional": true + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } }, - "snappy": { - "optional": true + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "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/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.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@tsconfig/node20": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", + "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/morgan": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", + "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "18.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.8.tgz", + "integrity": "sha512-JDMOmhXteJ4WVKOiHXGCoB96ADWg9q7efPWHRViT/f09bA8XOMLAVHHju3l0MkZnG1izaWXYmgvQcUjTRcpShQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/type-utils": "5.59.8", + "@typescript-eslint/utils": "5.59.8", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.8.tgz", + "integrity": "sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/typescript-estree": "5.59.8", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz", + "integrity": "sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.8.tgz", + "integrity": "sha512-+5M518uEIHFBy3FnyqZUF3BMP+AXnYn4oyH8RF012+e7/msMY98FhGL5SrN29NQ9xDgvqCgYnsOiKp1VjZ/fpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.8", + "@typescript-eslint/utils": "5.59.8", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/type-utils/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/@typescript-eslint/types": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.8.tgz", + "integrity": "sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz", + "integrity": "sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.8.tgz", + "integrity": "sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/typescript-estree": "5.59.8", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", + "integrity": "sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "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": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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": "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/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/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/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==", + "dev": true, + "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==", + "dev": true + }, + "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/body-parser": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", + "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/body-parser/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/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/bson": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", + "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", + "engines": { + "node": ">=14.20.1" + } + }, + "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/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/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/chokidar/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/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/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/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/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/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "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/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", + "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dynamic-dedupe": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", + "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", + "dev": true, + "dependencies": { + "xtend": "^4.0.0" + } + }, + "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/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/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": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/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/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/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/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/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/express": { + "version": "5.0.0-beta.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", + "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "3.0.0", + "body-parser": "2.0.0-beta.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "3.1.0", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "mime-types": "~2.1.34", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-is-absolute": "1.0.1", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "router": "2.0.0-beta.1", + "safe-buffer": "5.2.1", + "send": "1.0.0-beta.1", + "serve-static": "2.0.0-beta.1", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/express/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/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/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/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/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "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/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "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/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/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/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/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/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "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-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-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "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-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-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": 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/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "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/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "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/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "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/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/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": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", + "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", + "dependencies": { + "bson": "^5.2.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", + "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", + "dependencies": { + "bson": "^5.2.0", + "kareem": "2.5.1", + "mongodb": "5.3.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/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/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/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/mquery/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/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "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/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/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/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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.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/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/router": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", + "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", + "dependencies": { + "array-flatten": "3.0.0", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "3.2.0", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", + "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", + "dependencies": { + "debug": "3.1.0", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime-types": "~2.1.34", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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/serve-static": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", + "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "1.0.0-beta.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "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/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "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/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/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", + "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.1", + "dynamic-dedupe": "^0.3.0", + "minimist": "^1.2.6", + "mkdirp": "^1.0.4", + "resolve": "^1.0.0", + "rimraf": "^2.6.1", + "source-map-support": "^0.5.12", + "tree-kill": "^1.2.2", + "ts-node": "^10.4.0", + "tsconfig": "^7.0.0" + }, + "bin": { + "ts-node-dev": "lib/bin.js", + "tsnd": "lib/bin.js" + }, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "node-notifier": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/ts-node-dev/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig/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/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": 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/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "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/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongoose": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", - "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", - "dependencies": { - "bson": "^5.2.0", - "kareem": "2.5.1", - "mongodb": "5.3.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/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/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mquery/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/mquery/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/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "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/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/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/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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.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/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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/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.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.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-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/router": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", - "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", - "dependencies": { - "array-flatten": "3.0.0", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "3.2.0", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "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/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", - "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", - "dependencies": { - "debug": "3.1.0", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime-types": "~2.1.34", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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/serve-static": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", - "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "1.0.0-beta.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "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/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "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/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/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "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/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node-dev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", - "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^10.4.0", - "tsconfig": "^7.0.0" - }, - "bin": { - "ts-node-dev": "lib/bin.js", - "tsnd": "lib/bin.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "node-notifier": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/ts-node-dev/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig/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/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": 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/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "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/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "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/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "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/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } - } } diff --git a/package.json b/package.json index b0088221..8f7a8281 100644 --- a/package.json +++ b/package.json @@ -7,28 +7,28 @@ "start": "node build/index.js", "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts", "build": "tsc", - "lint": "eslint --ext .ts ." + "lint": "eslint --ext .ts .", + "prettier": "prettier --write ." }, "license": "GNU", "dependencies": { - "dotenv": "^16.0.3", + "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.1.1" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", - "@types/body-parser": "^1.19.2", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", - "eslint": "^8.40.0", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "eslint": "^8.41.0", "eslint-plugin-prettier": "^4.2.1", "morgan": "^1.10.0", "prettier": "^2.8.8", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", - "typescript": "^5.0.4" + "typescript": "^5.1.3" }, "engines": { "node": ">=18.15.0", diff --git a/src/app.ts b/src/app.ts index fbbf8100..d523d8fb 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,14 +6,14 @@ import { requestLogger, unknownEndpointHandler } from "@/src/middleware/middlewa import { apiRouter } from "@/src/routes/api"; //import { testRouter } from "@/src/routes/test"; import { cacheRouter } from "@/src/routes/cache"; -import { customRouter } from "./routes/custom"; -import { dynamicController } from "./routes/dynamic"; -import { statsRouter } from "./routes/stats"; import bodyParser from "body-parser"; import morgan from "morgan"; -import { steamPacksController } from "./controllers/misc/steamPacksController"; -import { connectDatabase } from "./services/mongoService"; +import { steamPacksController } from "@/src/controllers/misc/steamPacksController"; +import { customRouter } from "@/src/routes/custom"; +import { dynamicController } from "@/src/routes/dynamic"; +import { statsRouter } from "@/src/routes/stats"; +import { connectDatabase } from "@/src/services/mongoService"; void connectDatabase(); diff --git a/src/controllers/api/dronesController.ts b/src/controllers/api/dronesController.ts index 1136ad42..bff5086c 100644 --- a/src/controllers/api/dronesController.ts +++ b/src/controllers/api/dronesController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; const dronesController: RequestHandler = (_req, res) => { - res.json({}) + res.json({}); }; export { dronesController }; diff --git a/src/controllers/api/findSessionsController.ts b/src/controllers/api/findSessionsController.ts index 98b51f13..32b1cf33 100644 --- a/src/controllers/api/findSessionsController.ts +++ b/src/controllers/api/findSessionsController.ts @@ -3,7 +3,7 @@ import { RequestHandler } from "express"; const findSessionsController: RequestHandler = (_req, res) => { console.log("FindSession Request:", JSON.parse(_req.body)); - res.json({ "sessionId": { "$oid": "64768f104722f795300c9fc0" }, "rewardSeed": 5867309943877621023 }); + res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); }; export { findSessionsController }; diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index 2557c120..ce541ada 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -4,4 +4,4 @@ const genericUpdateController: RequestHandler = (_req, res) => { res.json({}); }; -export { genericUpdateController }; \ No newline at end of file +export { genericUpdateController }; diff --git a/src/controllers/api/getCreditsController.ts b/src/controllers/api/getCreditsController.ts index 1c399f3c..9981fa47 100644 --- a/src/controllers/api/getCreditsController.ts +++ b/src/controllers/api/getCreditsController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; const getCreditsController: RequestHandler = (_req, res) => { - res.json({ "RegularCredits": 42069, "TradesRemaining": 1, "PremiumCreditsFree": 42069, "PremiumCredits": 42069 }); + res.json({ RegularCredits: 42069, TradesRemaining: 1, PremiumCreditsFree: 42069, PremiumCredits: 42069 }); }; export { getCreditsController }; diff --git a/src/controllers/api/getFriendsController.ts b/src/controllers/api/getFriendsController.ts index 9fb65fa1..c0ec7b33 100644 --- a/src/controllers/api/getFriendsController.ts +++ b/src/controllers/api/getFriendsController.ts @@ -1,6 +1,6 @@ import { Request, Response } from "express"; -export default (_request: Request, response: Response) => { +const getFriendsController = (_request: Request, response: Response) => { response.writeHead(200, { //Connection: "keep-alive", //"Content-Encoding": "gzip", @@ -10,3 +10,5 @@ export default (_request: Request, response: Response) => { }); response.end(Buffer.from([0x7b, 0x7d, 0x0a])); }; + +export { getFriendsController }; diff --git a/src/controllers/api/getNewRewardSeedController.ts b/src/controllers/api/getNewRewardSeedController.ts index 65655558..d700ac5d 100644 --- a/src/controllers/api/getNewRewardSeedController.ts +++ b/src/controllers/api/getNewRewardSeedController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; const getNewRewardSeedController: RequestHandler = (_req, res) => { - res.json({ "rewardSeed": 5867309943877621023 }); + res.json({ rewardSeed: 5867309943877621023 }); }; export { getNewRewardSeedController }; diff --git a/src/controllers/api/hostSessionController.ts b/src/controllers/api/hostSessionController.ts index 59d9b174..bbeb8eb7 100644 --- a/src/controllers/api/hostSessionController.ts +++ b/src/controllers/api/hostSessionController.ts @@ -4,7 +4,6 @@ const hostSessionController: RequestHandler = (_req, res) => { console.log("HostSession Request:", JSON.parse(_req.body)); res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); - }; export { hostSessionController }; diff --git a/src/controllers/api/hubController.ts b/src/controllers/api/hubController.ts index 4fc24ddb..8475a88b 100644 --- a/src/controllers/api/hubController.ts +++ b/src/controllers/api/hubController.ts @@ -4,4 +4,4 @@ const hubController: RequestHandler = (_req, res) => { res.json("hub 127.0.0.1:6952"); }; -export { hubController }; \ No newline at end of file +export { hubController }; diff --git a/src/controllers/api/hubInstancesController.ts b/src/controllers/api/hubInstancesController.ts index fd7c1137..b74c8976 100644 --- a/src/controllers/api/hubInstancesController.ts +++ b/src/controllers/api/hubInstancesController.ts @@ -4,4 +4,4 @@ const hubInstancesController: RequestHandler = (_req, res) => { res.json("list 50 16 1 0 scenarios 0 0 0 0 0 0"); }; -export { hubInstancesController }; \ No newline at end of file +export { hubInstancesController }; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 1341db4b..47ba5d25 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,11 +1,11 @@ import inventory from "@/static/fixed_responses/inventory.json"; import { Request, RequestHandler, Response } from "express"; -const inventorController: RequestHandler = (request: Request, response: Response) => { +const inventoryController: RequestHandler = (request: Request, response: Response) => { console.log(request.query); const accountId = request.query.accountId; console.log(accountId); response.json(inventory); }; -export default inventorController; +export { inventoryController }; diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 80f71d5f..efaa750a 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -9,7 +9,6 @@ import { createAccount, isCorrectPassword } from "@/src/services/loginService"; import { ILoginResponse } from "@/src/types/loginTypes"; import { DTLS, groups, HUB, IRC, Nonce, NRS, platformCDNs } from "@/static/fixed_responses/login_static"; -// eslint-disable-next-line @typescript-eslint/no-misused-promises const loginController: RequestHandler = async (request, response) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument const body = JSON.parse(request.body); // parse octet stream of json data to json object @@ -34,7 +33,6 @@ const loginController: RequestHandler = async (request, response) => { TrackedSettings: [] }); console.log("CREATED ACCOUNT", newAccount); - // eslint-disable-next-line @typescript-eslint/no-unused-vars const { email, password, ...databaseAccount } = newAccount; const newLoginResponse: ILoginResponse = { ...databaseAccount, diff --git a/src/controllers/api/logoutController.ts b/src/controllers/api/logoutController.ts index e2910ae3..615008a5 100644 --- a/src/controllers/api/logoutController.ts +++ b/src/controllers/api/logoutController.ts @@ -1,14 +1,12 @@ import { RequestHandler } from "express"; const logoutController: RequestHandler = (_req, res) => { - const data = Buffer.from([ - 0x31 - ]); + const data = Buffer.from([0x31]); res.writeHead(200, { "Content-Type": "text/html", "Content-Length": data.length }); - res.end(data); + res.end(data); }; -export { logoutController }; \ No newline at end of file +export { logoutController }; diff --git a/src/controllers/api/modularWeaponSaleController.ts b/src/controllers/api/modularWeaponSaleController.ts index 1a6333b7..fac479f3 100644 --- a/src/controllers/api/modularWeaponSaleController.ts +++ b/src/controllers/api/modularWeaponSaleController.ts @@ -1,7 +1,8 @@ import { RequestHandler } from "express"; +import modularWeaponSale from "@/static/fixed_responses/modularWeaponSale.json"; const modularWeaponSaleController: RequestHandler = (_req, res) => { - res.json({"SaleInfos":[{"Name":"Ostron","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":3045,"Weapons":[{"ItemType":"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon","PremiumPrice":171,"ModularParts":["/Lotus/Weapons/Ostron/Melee/ModularMelee01/Handle/HandleFive","/Lotus/Weapons/Ostron/Melee/ModularMelee01/Tip/TipSix","/Lotus/Weapons/Ostron/Melee/ModularMelee01/Balance/BalanceDamageICritII"]}]},{"Name":"SolarisUnitedHoverboard","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":1650,"Weapons":[{"ItemType":"/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit","PremiumPrice":51,"ModularParts":["/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCDeck","/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCEngine","/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusB/HoverboardCorpusBFront","/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCJet"]}]},{"Name":"SolarisUnitedMoaPet","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":1650,"Weapons":[{"ItemType":"/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit","PremiumPrice":175,"ModularParts":["/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetLegC","/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetHeadOloro","/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetEngineKrisys","/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetPayloadThermocor"]}]},{"Name":"SolarisUnitedKitGun","Expiry":{"$date":{"$numberLong":"1683586800000"}},"Revision":1650,"Weapons":[{"ItemType":"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam","PremiumPrice":157,"ModularParts":["/Lotus/Weapons/SolarisUnited/Primary/SUModularPrimarySet1/Handles/SUModularPrimaryHandleAPart","/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Barrel/SUModularSecondaryBarrelDPart","/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Clip/SUModularCritIReloadIIClipPart"]}]}]}); + res.json(modularWeaponSale); }; -export { modularWeaponSaleController }; \ No newline at end of file +export { modularWeaponSaleController }; diff --git a/src/controllers/api/purchaseController.ts b/src/controllers/api/purchaseController.ts index 78c5fee9..7f0902e2 100644 --- a/src/controllers/api/purchaseController.ts +++ b/src/controllers/api/purchaseController.ts @@ -1,6 +1,8 @@ import purchase from "@/static/fixed_responses/purchase.json"; import { Request, Response } from "express"; -export default (_req: Request, res: Response): void => { +const purchaseController = (_req: Request, res: Response): void => { res.json(purchase); }; + +export { purchaseController }; diff --git a/src/controllers/api/rerollRandomModController.ts b/src/controllers/api/rerollRandomModController.ts index f1d72a56..eabffb2e 100644 --- a/src/controllers/api/rerollRandomModController.ts +++ b/src/controllers/api/rerollRandomModController.ts @@ -1,8 +1,8 @@ import { RequestHandler } from "express"; const rerollRandomModController: RequestHandler = (_req, res) => { - console.log("RerollRandomMod Request:", _req.body.toString('hex').replace(/(.)(.)/g, '$1$2 ')); - res.json({ }); + console.log("RerollRandomMod Request:", _req.body.toString("hex").replace(/(.)(.)/g, "$1$2 ")); + res.json({}); }; -export { rerollRandomModController }; \ No newline at end of file +export { rerollRandomModController }; diff --git a/src/controllers/api/updateSessionController.ts b/src/controllers/api/updateSessionController.ts index 55f03f3c..f9e1cf16 100644 --- a/src/controllers/api/updateSessionController.ts +++ b/src/controllers/api/updateSessionController.ts @@ -6,6 +6,6 @@ const updateSessionGetController: RequestHandler = (_req, res) => { const updateSessionPostController: RequestHandler = (_req, res) => { console.log("UpdateSessions POST Request:", JSON.parse(_req.body)); - res.json({ "hasStarted": true }); + res.json({ hasStarted: true }); }; export { updateSessionGetController, updateSessionPostController }; diff --git a/src/controllers/custom/createAccountController.ts b/src/controllers/custom/createAccountController.ts index 148e0220..0d0d567d 100644 --- a/src/controllers/custom/createAccountController.ts +++ b/src/controllers/custom/createAccountController.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-misused-promises */ import { toCreateAccount, toDatabaseAccount } from "@/src/helpers/customHelpers"; import { createAccount } from "@/src/services/loginService"; import { RequestHandler } from "express"; diff --git a/src/controllers/dynamic/aggregateSessionsController.ts b/src/controllers/dynamic/aggregateSessionsController.ts index 172ee06e..a12c8d40 100644 --- a/src/controllers/dynamic/aggregateSessionsController.ts +++ b/src/controllers/dynamic/aggregateSessionsController.ts @@ -1,7 +1,8 @@ import { RequestHandler } from "express"; +import aggregateSessions from "@/static/fixed_responses/aggregateSessions.json"; const aggregateSessionsController: RequestHandler = (_req, res) => { - res.json( { "Results": [{ "gameModeId": 3228, "count": 12 }, { "gameModeId": 2022236, "count": 1 }, { "gameModeId": 1109004, "count": 1 }, { "gameModeId": 2004450, "count": 1 }, { "gameModeId": 2129, "count": 4 }, { "gameModeId": 8763, "count": 1 }, { "gameModeId": 12183, "count": 1 }, { "gameModeId": 11167, "count": 1 }, { "gameModeId": 17710, "count": 1 }, { "gameModeId": 22237, "count": 1 }, { "gameModeId": 3509, "count": 1 }, { "gameModeId": 13006, "count": 1 }, { "gameModeId": 20801, "count": 2 }, { "gameModeId": 204014, "count": 1 }, { "gameModeId": 2061, "count": 1 }, { "gameModeId": 303025, "count": 1 }, { "gameModeId": 702001, "count": 12 }, { "gameModeId": 2305121, "count": 1 }, { "gameModeId": 1704046, "count": 1 }, { "gameModeId": 17229, "count": 12 }, { "gameModeId": 717000, "count": 15 }, { "gameModeId": 9536, "count": 1 }, { "gameModeId": 15409, "count": 1 }, { "gameModeId": 722000, "count": 20 }, { "gameModeId": 22232, "count": 2 }, { "gameModeId": 2023, "count": 2 }, { "gameModeId": 1704008, "count": 1 }, { "gameModeId": 6042, "count": 1 }, { "gameModeId": 2305053, "count": 1 }, { "gameModeId": 2022238, "count": 2 }, { "gameModeId": 1708001, "count": 1 }, { "gameModeId": 5004, "count": 1 }, { "gameModeId": 605088, "count": 1 }, { "gameModeId": 6032, "count": 1 }, { "gameModeId": 2022, "count": 2 }, { "gameModeId": 1216214, "count": 1 }, { "gameModeId": 3903, "count": 1 }, { "gameModeId": 6096, "count": 1 }, { "gameModeId": 2003079, "count": 1 }, { "gameModeId": 1105121, "count": 1 }, { "gameModeId": 616020, "count": 1 }, { "gameModeId": 1204235, "count": 1 }, { "gameModeId": 9024, "count": 2 }, { "gameModeId": 703004, "count": 16 }, { "gameModeId": 706000, "count": 2 }, { "gameModeId": 201223, "count": 1 }, { "gameModeId": 1404068, "count": 2 }, { "gameModeId": 22231, "count": 1 }, { "gameModeId": 2111019, "count": 1 }, { "gameModeId": 1407064, "count": 1 }, { "gameModeId": 701000, "count": 2 }, { "gameModeId": 703000, "count": 2 }, { "gameModeId": 1703039, "count": 1 }, { "gameModeId": 5005, "count": 1 }, { "gameModeId": 2001094, "count": 1 }, { "gameModeId": 22236, "count": 2 }, { "gameModeId": 703003, "count": 1 }, { "gameModeId": 98000, "count": 30 }, { "gameModeId": 1419748, "count": 1 }, { "gameModeId": 21555, "count": 1 }, { "gameModeId": 22238, "count": 1 }, { "gameModeId": 1704113, "count": 1 }, { "gameModeId": 9025, "count": 2 }, { "gameModeId": 1318307, "count": 1 }, { "gameModeId": 303034, "count": 1 }, { "gameModeId": 15401, "count": 1 }, { "gameModeId": 4904, "count": 1 }, { "gameModeId": 2305126, "count": 1 }, { "gameModeId": 2002123, "count": 1 }, { "gameModeId": 9004, "count": 1 }, { "gameModeId": 1702109, "count": 1 }, { "gameModeId": 15408, "count": 1 }, { "gameModeId": 6013, "count": 1 }, { "gameModeId": 17706, "count": 2 }, { "gameModeId": 2005053, "count": 1 }, { "gameModeId": 1805125, "count": 2 }, { "gameModeId": 15402, "count": 1 }, { "gameModeId": 101, "count": 3 }, { "gameModeId": 2010144, "count": 1 }, { "gameModeId": 3027, "count": 1 }, { "gameModeId": 2001, "count": 1 }, { "gameModeId": 12191, "count": 1 }, { "gameModeId": 1112189, "count": 1 }, { "gameModeId": 4450, "count": 1 }, { "gameModeId": 2011019, "count": 1 }, { "gameModeId": 12195, "count": 1 }, { "gameModeId": 8525, "count": 1 }, { "gameModeId": 12014, "count": 1 }, { "gameModeId": 12189, "count": 1 }, { "gameModeId": 10147, "count": 1 }, { "gameModeId": 11175, "count": 1 }, { "gameModeId": 1703089, "count": 1 }, { "gameModeId": 2104, "count": 1 }, { "gameModeId": 2015409, "count": 1 }, { "gameModeId": 4058, "count": 1 }, { "gameModeId": 1416015, "count": 2 }, { "gameModeId": 1201108, "count": 1 }, { "gameModeId": 704001, "count": 6 }, { "gameModeId": 2022230, "count": 1 }, { "gameModeId": 5100, "count": 1 }, { "gameModeId": 1703026, "count": 1 }, { "gameModeId": 1415400, "count": 1 }] }); + res.json(aggregateSessions); }; export { aggregateSessionsController }; diff --git a/src/helpers/customHelpers.ts b/src/helpers/customHelpers.ts index d203f2d1..ebdde463 100644 --- a/src/helpers/customHelpers.ts +++ b/src/helpers/customHelpers.ts @@ -1,6 +1,6 @@ +import { IAccountCreation } from "@/src/types/customTypes"; +import { IDatabaseAccount } from "@/src/types/loginTypes"; import crypto from "crypto"; -import { IAccountCreation } from "../types/customTypes"; -import { IDatabaseAccount } from "../types/loginTypes"; import { isString, parseEmail, parseString } from "./general"; const getWhirlpoolHash = (rawPassword: string): string => { diff --git a/src/helpers/loginHelpers.ts b/src/helpers/loginHelpers.ts index b77b3560..f9335822 100644 --- a/src/helpers/loginHelpers.ts +++ b/src/helpers/loginHelpers.ts @@ -1,4 +1,4 @@ -import { ILoginRequest } from "../types/loginTypes"; +import { ILoginRequest } from "@/src/types/loginTypes"; import { parseEmail, parseNumber, parseString } from "./general"; const toLoginRequest = (loginRequest: unknown): ILoginRequest => { diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index 232bcba0..f1846784 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -1,5 +1,5 @@ +import { IDatabaseAccountDocument } from "@/src/types/loginTypes"; import { model, Schema, SchemaOptions } from "mongoose"; -import { IDatabaseAccountDocument } from "../types/loginTypes"; const opts = { toJSON: { virtuals: true }, diff --git a/src/routes/api.ts b/src/routes/api.ts index d198e16f..d13e8edd 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -1,35 +1,33 @@ -import getFriendsController from "@/src/controllers/api/getFriendsController"; -import inventoryController from "@/src/controllers/api/inventoryController"; -import purchaseController from "@/src/controllers/api/purchaseController"; +import { checkDailyMissionBonusController } from "@/src/controllers/api/checkDailyMissionBonusController"; +import { deleteSessionController } from "@/src/controllers/api/deleteSessionController"; +import { dronesController } from "@/src/controllers/api/dronesController"; +import { findSessionsController } from "@/src/controllers/api/findSessionsController"; +import { genericUpdateController } from "@/src/controllers/api/genericUpdateController"; +import { getAllianceController } from "@/src/controllers/api/getAllianceController"; +import { getCreditsController } from "@/src/controllers/api/getCreditsController"; +import { getFriendsController } from "@/src/controllers/api/getFriendsController"; +import { getIgnoredUsersController } from "@/src/controllers/api/getIgnoredUsersController"; +import { getNewRewardSeedController } from "@/src/controllers/api/getNewRewardSeedController"; +import { getShipController } from "@/src/controllers/api/getShipController"; +import { hostSessionController } from "@/src/controllers/api/hostSessionController"; +import { hubController } from "@/src/controllers/api/hubController"; +import { hubInstancesController } from "@/src/controllers/api/hubInstancesController"; +import { inboxController } from "@/src/controllers/api/inboxController"; +import { inventoryController } from "@/src/controllers/api/inventoryController"; +import { loginController } from "@/src/controllers/api/loginController"; +import { loginRewardsController } from "@/src/controllers/api/loginRewardsController"; +import { logoutController } from "@/src/controllers/api/logoutController"; +import { marketRecommendationsController } from "@/src/controllers/api/marketRecommendationsController"; +import { missionInventoryUpdateController } from "@/src/controllers/api/missionInventoryUpdateController"; +import { modularWeaponSaleController } from "@/src/controllers/api/modularWeaponSaleController"; +import { purchaseController } from "@/src/controllers/api/purchaseController"; +import { rerollRandomModController } from "@/src/controllers/api/rerollRandomModController"; +import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController"; +import { surveysController } from "@/src/controllers/api/surveysController"; +import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController"; +import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; +import { viewController } from "@/src/controllers/api/viewController"; import express from "express"; -import { checkDailyMissionBonusController } from "../controllers/api/checkDailyMissionBonusController"; -import { dronesController } from "../controllers/api/dronesController"; -import { findSessionsController } from "../controllers/api/findSessionsController"; -import { getAllianceController } from "../controllers/api/getAllianceController"; -import { getIgnoredUsersController } from "../controllers/api/getIgnoredUsersController"; -import { getNewRewardSeedController } from "../controllers/api/getNewRewardSeedController"; -import { getShipController } from "../controllers/api/getShipController"; -import { hostSessionController } from "../controllers/api/hostSessionController"; -import { inboxController } from "../controllers/api/inboxController"; -import { loginController } from "../controllers/api/loginController"; -import { loginRewardsController } from "../controllers/api/loginRewardsController"; -import { marketRecommendationsController } from "../controllers/api/marketRecommendationsController"; -import { setActiveQuestController } from "../controllers/api/setActiveQuestController"; -import { surveysController } from "../controllers/api/surveysController"; -import { updateChallengeProgressController } from "../controllers/api/updateChallengeProgressController"; -import { viewController } from "../controllers/api/viewController"; -import { updateSessionPostController } from "../controllers/api/updateSessionController"; -import { updateSessionGetController } from "../controllers/api/updateSessionController"; -import { getCreditsController } from "../controllers/api/getCreditsController"; -import { hubInstancesController } from "../controllers/api/hubInstancesController"; -import { hubController } from "../controllers/api/hubController"; -import { modularWeaponSaleController } from "../controllers/api/modularWeaponSaleController"; -import { deleteSessionController } from "../controllers/api/deleteSessionController"; -import { logoutController } from "../controllers/api/logoutController"; -import { missionInventoryUpdateController } from "../controllers/api/missionInventoryUpdateController"; -import { genericUpdateController } from "../controllers/api/genericUpdateController"; -import { rerollRandomModController } from "../controllers/api/rerollRandomModController"; - const apiRouter = express.Router(); @@ -44,7 +42,7 @@ apiRouter.get("/checkDailyMissionBonus.php", checkDailyMissionBonusController); apiRouter.get("/inbox.php", inboxController); apiRouter.get("/getShip.php", getShipController); apiRouter.get("/view.php", viewController); -apiRouter.get("/drones.php", dronesController); +apiRouter.get("/drones.php", dronesController); apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController); apiRouter.get("/getNewRewardSeed.php", getNewRewardSeedController); apiRouter.get("/setActiveQuest.php", setActiveQuestController); @@ -53,7 +51,7 @@ apiRouter.get("/credits.php", getCreditsController); apiRouter.get("/hubInstances", hubInstancesController); apiRouter.get("/hub", hubController); apiRouter.get("/modularWeaponSale.php", modularWeaponSaleController); -apiRouter.get("/deleteSession.php", deleteSessionController); +apiRouter.get("/deleteSession.php", deleteSessionController); apiRouter.get("/logout.php", logoutController); // post @@ -63,8 +61,8 @@ apiRouter.post("/login.php", loginController); apiRouter.post("/getAlliance.php", getAllianceController); apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController); apiRouter.post("/hostSession.php", hostSessionController); -apiRouter.post("/updateSession.php", updateSessionPostController); -apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); -apiRouter.post("/genericUpdate.php", genericUpdateController); -apiRouter.post("/rerollRandomMod.php", rerollRandomModController) +apiRouter.post("/updateSession.php", updateSessionPostController); +apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); +apiRouter.post("/genericUpdate.php", genericUpdateController); +apiRouter.post("/rerollRandomMod.php", rerollRandomModController); export { apiRouter }; diff --git a/src/routes/custom.ts b/src/routes/custom.ts index ee36d6fa..3495e17f 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -1,5 +1,5 @@ +import { createAccountController } from "@/src/controllers/custom/createAccountController"; import express from "express"; -import { createAccountController } from "../controllers/custom/createAccountController"; const customRouter = express.Router(); diff --git a/src/routes/dynamic.ts b/src/routes/dynamic.ts index ff91d42e..0e808d48 100644 --- a/src/routes/dynamic.ts +++ b/src/routes/dynamic.ts @@ -1,6 +1,6 @@ +import { aggregateSessionsController } from "@/src/controllers/dynamic/aggregateSessionsController"; +import { worldStateController } from "@/src/controllers/dynamic/worldStateController"; import express from "express"; -import { aggregateSessionsController } from "../controllers/dynamic/aggregateSessionsController"; -import { worldStateController } from "../controllers/dynamic/worldStateController"; const dynamicController = express.Router(); diff --git a/src/routes/stats.ts b/src/routes/stats.ts index 83ae591c..96b68e13 100644 --- a/src/routes/stats.ts +++ b/src/routes/stats.ts @@ -1,7 +1,7 @@ +import { uploadController } from "@/src/controllers/stats/uploadController"; import express from "express"; -import { uploadController } from "../controllers/stats/uploadController"; const statsRouter = express.Router(); -statsRouter.post("/upload.php", uploadController); +statsRouter.post("/upload.php", uploadController); export { statsRouter }; diff --git a/src/services/loginService.ts b/src/services/loginService.ts index 1c992b4c..8e5d1da2 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -1,5 +1,5 @@ -import { Account } from "../models/loginModel"; -import { IDatabaseAccount } from "../types/loginTypes"; +import { Account } from "@/src/models/loginModel"; +import { IDatabaseAccount } from "@/src/types/loginTypes"; const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => { return requestPassword === databasePassword; diff --git a/static/fixed_responses/aggregateSessions.json b/static/fixed_responses/aggregateSessions.json new file mode 100644 index 00000000..2ddee41b --- /dev/null +++ b/static/fixed_responses/aggregateSessions.json @@ -0,0 +1,106 @@ +{ + "Results": [ + { "gameModeId": 3228, "count": 12 }, + { "gameModeId": 2022236, "count": 1 }, + { "gameModeId": 1109004, "count": 1 }, + { "gameModeId": 2004450, "count": 1 }, + { "gameModeId": 2129, "count": 4 }, + { "gameModeId": 8763, "count": 1 }, + { "gameModeId": 12183, "count": 1 }, + { "gameModeId": 11167, "count": 1 }, + { "gameModeId": 17710, "count": 1 }, + { "gameModeId": 22237, "count": 1 }, + { "gameModeId": 3509, "count": 1 }, + { "gameModeId": 13006, "count": 1 }, + { "gameModeId": 20801, "count": 2 }, + { "gameModeId": 204014, "count": 1 }, + { "gameModeId": 2061, "count": 1 }, + { "gameModeId": 303025, "count": 1 }, + { "gameModeId": 702001, "count": 12 }, + { "gameModeId": 2305121, "count": 1 }, + { "gameModeId": 1704046, "count": 1 }, + { "gameModeId": 17229, "count": 12 }, + { "gameModeId": 717000, "count": 15 }, + { "gameModeId": 9536, "count": 1 }, + { "gameModeId": 15409, "count": 1 }, + { "gameModeId": 722000, "count": 20 }, + { "gameModeId": 22232, "count": 2 }, + { "gameModeId": 2023, "count": 2 }, + { "gameModeId": 1704008, "count": 1 }, + { "gameModeId": 6042, "count": 1 }, + { "gameModeId": 2305053, "count": 1 }, + { "gameModeId": 2022238, "count": 2 }, + { "gameModeId": 1708001, "count": 1 }, + { "gameModeId": 5004, "count": 1 }, + { "gameModeId": 605088, "count": 1 }, + { "gameModeId": 6032, "count": 1 }, + { "gameModeId": 2022, "count": 2 }, + { "gameModeId": 1216214, "count": 1 }, + { "gameModeId": 3903, "count": 1 }, + { "gameModeId": 6096, "count": 1 }, + { "gameModeId": 2003079, "count": 1 }, + { "gameModeId": 1105121, "count": 1 }, + { "gameModeId": 616020, "count": 1 }, + { "gameModeId": 1204235, "count": 1 }, + { "gameModeId": 9024, "count": 2 }, + { "gameModeId": 703004, "count": 16 }, + { "gameModeId": 706000, "count": 2 }, + { "gameModeId": 201223, "count": 1 }, + { "gameModeId": 1404068, "count": 2 }, + { "gameModeId": 22231, "count": 1 }, + { "gameModeId": 2111019, "count": 1 }, + { "gameModeId": 1407064, "count": 1 }, + { "gameModeId": 701000, "count": 2 }, + { "gameModeId": 703000, "count": 2 }, + { "gameModeId": 1703039, "count": 1 }, + { "gameModeId": 5005, "count": 1 }, + { "gameModeId": 2001094, "count": 1 }, + { "gameModeId": 22236, "count": 2 }, + { "gameModeId": 703003, "count": 1 }, + { "gameModeId": 98000, "count": 30 }, + { "gameModeId": 1419748, "count": 1 }, + { "gameModeId": 21555, "count": 1 }, + { "gameModeId": 22238, "count": 1 }, + { "gameModeId": 1704113, "count": 1 }, + { "gameModeId": 9025, "count": 2 }, + { "gameModeId": 1318307, "count": 1 }, + { "gameModeId": 303034, "count": 1 }, + { "gameModeId": 15401, "count": 1 }, + { "gameModeId": 4904, "count": 1 }, + { "gameModeId": 2305126, "count": 1 }, + { "gameModeId": 2002123, "count": 1 }, + { "gameModeId": 9004, "count": 1 }, + { "gameModeId": 1702109, "count": 1 }, + { "gameModeId": 15408, "count": 1 }, + { "gameModeId": 6013, "count": 1 }, + { "gameModeId": 17706, "count": 2 }, + { "gameModeId": 2005053, "count": 1 }, + { "gameModeId": 1805125, "count": 2 }, + { "gameModeId": 15402, "count": 1 }, + { "gameModeId": 101, "count": 3 }, + { "gameModeId": 2010144, "count": 1 }, + { "gameModeId": 3027, "count": 1 }, + { "gameModeId": 2001, "count": 1 }, + { "gameModeId": 12191, "count": 1 }, + { "gameModeId": 1112189, "count": 1 }, + { "gameModeId": 4450, "count": 1 }, + { "gameModeId": 2011019, "count": 1 }, + { "gameModeId": 12195, "count": 1 }, + { "gameModeId": 8525, "count": 1 }, + { "gameModeId": 12014, "count": 1 }, + { "gameModeId": 12189, "count": 1 }, + { "gameModeId": 10147, "count": 1 }, + { "gameModeId": 11175, "count": 1 }, + { "gameModeId": 1703089, "count": 1 }, + { "gameModeId": 2104, "count": 1 }, + { "gameModeId": 2015409, "count": 1 }, + { "gameModeId": 4058, "count": 1 }, + { "gameModeId": 1416015, "count": 2 }, + { "gameModeId": 1201108, "count": 1 }, + { "gameModeId": 704001, "count": 6 }, + { "gameModeId": 2022230, "count": 1 }, + { "gameModeId": 5100, "count": 1 }, + { "gameModeId": 1703026, "count": 1 }, + { "gameModeId": 1415400, "count": 1 } + ] +} diff --git a/static/fixed_responses/getShip.json b/static/fixed_responses/getShip.json index 4e0de41f..f15c1be8 100644 --- a/static/fixed_responses/getShip.json +++ b/static/fixed_responses/getShip.json @@ -1,24 +1,24 @@ { - "ShipOwnerId": "removed", - "Ship": { - "Rooms": [ - { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, - { "Name": "BridgeRoom", "MaxCapacity": 1600 }, - { "Name": "LisetRoom", "MaxCapacity": 1000 }, - { "Name": "OperatorChamberRoom", "MaxCapacity": 1600 }, - { "Name": "OutsideRoom", "MaxCapacity": 1600 }, - { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } - ], - "ContentUrlSignature": "removed" - }, - "Apartment": { - "Rooms": [ - { "Name": "ElevatorLanding", "MaxCapacity": 1600 }, - { "Name": "ApartmentRoomA", "MaxCapacity": 1000 }, - { "Name": "ApartmentRoomB", "MaxCapacity": 1600 }, - { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, - { "Name": "DuviriHallway", "MaxCapacity": 1600 } - ], - "FavouriteLoadouts": [] - } + "ShipOwnerId": "removed", + "Ship": { + "Rooms": [ + { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, + { "Name": "BridgeRoom", "MaxCapacity": 1600 }, + { "Name": "LisetRoom", "MaxCapacity": 1000 }, + { "Name": "OperatorChamberRoom", "MaxCapacity": 1600 }, + { "Name": "OutsideRoom", "MaxCapacity": 1600 }, + { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } + ], + "ContentUrlSignature": "removed" + }, + "Apartment": { + "Rooms": [ + { "Name": "ElevatorLanding", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomA", "MaxCapacity": 1000 }, + { "Name": "ApartmentRoomB", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, + { "Name": "DuviriHallway", "MaxCapacity": 1600 } + ], + "FavouriteLoadouts": [] + } } diff --git a/static/fixed_responses/inbox.json b/static/fixed_responses/inbox.json index a55108d4..a43fd2b1 100644 --- a/static/fixed_responses/inbox.json +++ b/static/fixed_responses/inbox.json @@ -1,24 +1,24 @@ { - "Inbox": [ + "Inbox": [ + { + "sndr": "/Lotus/Language/Bosses/Ordis", + "msg": "/Lotus/Language/Inbox/ThankYouFreeMultipleContent", + "countedAtt": [ { - "sndr": "/Lotus/Language/Bosses/Ordis", - "msg": "/Lotus/Language/Inbox/ThankYouFreeMultipleContent", - "countedAtt": [ - { - "ItemType": "/Lotus/Upgrades/Skins/Promo/Twitch/OgrisTwitchSkin", - "ItemCount": 1 - }, - { - "ItemType": "/Lotus/Weapons/ClanTech/Chemical/RocketLauncher", - "ItemCount": 1 - } - ], - "sub": "/Lotus/Language/Inbox/ThankYouFreeMultipleSubject", - "icon": "/Lotus/Interface/Icons/Npcs/Ordis.png", - "highPriority": true, - "messageId": "removed", - "date": { "$date": { "$numberLong": "removed" } }, - "r": true + "ItemType": "/Lotus/Upgrades/Skins/Promo/Twitch/OgrisTwitchSkin", + "ItemCount": 1 + }, + { + "ItemType": "/Lotus/Weapons/ClanTech/Chemical/RocketLauncher", + "ItemCount": 1 } - ] + ], + "sub": "/Lotus/Language/Inbox/ThankYouFreeMultipleSubject", + "icon": "/Lotus/Interface/Icons/Npcs/Ordis.png", + "highPriority": true, + "messageId": "removed", + "date": { "$date": { "$numberLong": "removed" } }, + "r": true + } + ] } diff --git a/static/fixed_responses/inventory.json b/static/fixed_responses/inventory.json index 74f9d43a..e19ac090 100644 --- a/static/fixed_responses/inventory.json +++ b/static/fixed_responses/inventory.json @@ -1,131 +1,131 @@ { - "SubscribedToEmails": 0, - "Created": { "$date": { "$numberLong": "removed" } }, - "SubscribedToEmailsPersonalized": 0, - "RewardSeed": -123123123123123, - "CrewMemberBin": { "Slots": 3 }, - "CrewShipSalvageBin": { "Slots": 8 }, - "DrifterMelee": [ - { - "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", - "ItemId": { "$oid": "removed" } - } - ], - "FusionPoints": 0, - "MechBin": { "Slots": 4 }, - "OperatorAmpBin": { "Slots": 8 }, - "PveBonusLoadoutBin": { "Slots": 0 }, - "PvpBonusLoadoutBin": { "Slots": 0 }, - "RandomModBin": { "Slots": 15 }, - "RegularCredits": 0, - "SentinelBin": { "Slots": 10 }, - "SpaceSuitBin": { "Slots": 4 }, - "SpaceWeaponBin": { "Slots": 4 }, - "SuitBin": { "Slots": 2 }, - "WeaponBin": { "Slots": 8 }, - "LastInventorySync": { "$oid": "removed" }, - "NextRefill": { "$date": { "$numberLong": "removed" } }, - "ActiveLandscapeTraps": [], - "ChallengeProgress": [], - "CrewMembers": [], - "CrewShips": [], - "CrewShipHarnesses": [], - "CrewShipSalvagedWeapons": [], - "CrewShipSalvagedWeaponSkins": [], - "CrewShipWeapons": [], - "CrewShipWeaponSkins": [], - "DataKnives": [], - "DrifterGuns": [], - "Drones": [], - "Horses": [], - "Hoverboards": [], - "KubrowPets": [], - "KubrowPetEggs": [], - "KubrowPetPrints": [], - "LongGuns": [], - "MechSuits": [], - "Melee": [], - "MoaPets": [], - "OperatorAmps": [], - "OperatorLoadOuts": [], - "AdultOperatorLoadOuts": [], - "KahlLoadOuts": [], - "PendingRecipes": [], - "PersonalGoalProgress": [], - "PersonalTechProjects": [], - "Pistols": [], - "QualifyingInvasions": [], - "RepVotes": [], - "Scoops": [], - "Sentinels": [], - "SentinelWeapons": [], - "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "123123" } }], - "SpaceGuns": [], - "SpaceMelee": [], - "SpaceSuits": [], - "SpecialItems": [], - "StepSequencers": [], - "Suits": [], - "Upgrades": [], - "WeaponSkins": [], - "Boosters": [], - "Consumables": [], - "EmailItems": [], - "FlavourItems": [], - "FocusUpgrades": [], - "FusionTreasures": [], - "LeagueTickets": [], - "LevelKeys": [], - "LoreFragmentScans": [], - "MiscItems": [], - "PendingSpectreLoadouts": [], - "Quests": [], - "QuestKeys": [], - "RawUpgrades": [], - "Recipes": [], - "Robotics": [], - "ShipDecorations": [], - "SpectreLoadouts": [], - "XPInfo": [], - "CrewShipAmmo": [], - "CrewShipRawSalvage": [], - "EvolutionProgress": [], - "Missions": [], - "TauntHistory": [], - "CompletedSyndicates": [], - "UsedDailyDeals": [], - "DailyAffiliation": 16000, - "DailyAffiliationPvp": 16000, - "DailyAffiliationLibrary": 16000, - "DailyAffiliationCetus": 16000, - "DailyAffiliationQuills": 16000, - "DailyAffiliationSolaris": 16000, - "DailyAffiliationVentkids": 16000, - "DailyAffiliationVox": 16000, - "DailyAffiliationEntrati": 16000, - "DailyAffiliationNecraloid": 16000, - "DailyAffiliationZariman": 16000, - "DailyAffiliationKahl": 16000, - "DailyFocus": 250000, - "GiftsRemaining": 8, - "LibraryAvailableDailyTaskInfo": { - "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"], - "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman", - "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png", - "ScansRequired": 4, - "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle", - "RewardQuantity": 10, - "RewardStanding": 10000 - }, - "DuviriInfo": { "Seed": 123123123123123123, "NumCompletions": 0 }, - "TradesRemaining": 0, - "HasContributedToDojo": false, - "HasResetAccount": false, - "PendingCoupon": { - "Expiry": { "$date": { "$numberLong": "0" } }, - "Discount": 0 - }, - "PremiumCreditsFree": 0, - "ReceivedStartingGear": true, - "StoryModeChoice": "WARFRAME" + "SubscribedToEmails": 0, + "Created": { "$date": { "$numberLong": "removed" } }, + "SubscribedToEmailsPersonalized": 0, + "RewardSeed": -123123123123123, + "CrewMemberBin": { "Slots": 3 }, + "CrewShipSalvageBin": { "Slots": 8 }, + "DrifterMelee": [ + { + "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", + "ItemId": { "$oid": "removed" } + } + ], + "FusionPoints": 0, + "MechBin": { "Slots": 4 }, + "OperatorAmpBin": { "Slots": 8 }, + "PveBonusLoadoutBin": { "Slots": 0 }, + "PvpBonusLoadoutBin": { "Slots": 0 }, + "RandomModBin": { "Slots": 15 }, + "RegularCredits": 0, + "SentinelBin": { "Slots": 10 }, + "SpaceSuitBin": { "Slots": 4 }, + "SpaceWeaponBin": { "Slots": 4 }, + "SuitBin": { "Slots": 2 }, + "WeaponBin": { "Slots": 8 }, + "LastInventorySync": { "$oid": "removed" }, + "NextRefill": { "$date": { "$numberLong": "removed" } }, + "ActiveLandscapeTraps": [], + "ChallengeProgress": [], + "CrewMembers": [], + "CrewShips": [], + "CrewShipHarnesses": [], + "CrewShipSalvagedWeapons": [], + "CrewShipSalvagedWeaponSkins": [], + "CrewShipWeapons": [], + "CrewShipWeaponSkins": [], + "DataKnives": [], + "DrifterGuns": [], + "Drones": [], + "Horses": [], + "Hoverboards": [], + "KubrowPets": [], + "KubrowPetEggs": [], + "KubrowPetPrints": [], + "LongGuns": [], + "MechSuits": [], + "Melee": [], + "MoaPets": [], + "OperatorAmps": [], + "OperatorLoadOuts": [], + "AdultOperatorLoadOuts": [], + "KahlLoadOuts": [], + "PendingRecipes": [], + "PersonalGoalProgress": [], + "PersonalTechProjects": [], + "Pistols": [], + "QualifyingInvasions": [], + "RepVotes": [], + "Scoops": [], + "Sentinels": [], + "SentinelWeapons": [], + "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "123123" } }], + "SpaceGuns": [], + "SpaceMelee": [], + "SpaceSuits": [], + "SpecialItems": [], + "StepSequencers": [], + "Suits": [], + "Upgrades": [], + "WeaponSkins": [], + "Boosters": [], + "Consumables": [], + "EmailItems": [], + "FlavourItems": [], + "FocusUpgrades": [], + "FusionTreasures": [], + "LeagueTickets": [], + "LevelKeys": [], + "LoreFragmentScans": [], + "MiscItems": [], + "PendingSpectreLoadouts": [], + "Quests": [], + "QuestKeys": [], + "RawUpgrades": [], + "Recipes": [], + "Robotics": [], + "ShipDecorations": [], + "SpectreLoadouts": [], + "XPInfo": [], + "CrewShipAmmo": [], + "CrewShipRawSalvage": [], + "EvolutionProgress": [], + "Missions": [], + "TauntHistory": [], + "CompletedSyndicates": [], + "UsedDailyDeals": [], + "DailyAffiliation": 16000, + "DailyAffiliationPvp": 16000, + "DailyAffiliationLibrary": 16000, + "DailyAffiliationCetus": 16000, + "DailyAffiliationQuills": 16000, + "DailyAffiliationSolaris": 16000, + "DailyAffiliationVentkids": 16000, + "DailyAffiliationVox": 16000, + "DailyAffiliationEntrati": 16000, + "DailyAffiliationNecraloid": 16000, + "DailyAffiliationZariman": 16000, + "DailyAffiliationKahl": 16000, + "DailyFocus": 250000, + "GiftsRemaining": 8, + "LibraryAvailableDailyTaskInfo": { + "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"], + "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman", + "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png", + "ScansRequired": 4, + "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle", + "RewardQuantity": 10, + "RewardStanding": 10000 + }, + "DuviriInfo": { "Seed": 123123123123123123, "NumCompletions": 0 }, + "TradesRemaining": 0, + "HasContributedToDojo": false, + "HasResetAccount": false, + "PendingCoupon": { + "Expiry": { "$date": { "$numberLong": "0" } }, + "Discount": 0 + }, + "PremiumCreditsFree": 0, + "ReceivedStartingGear": true, + "StoryModeChoice": "WARFRAME" } diff --git a/static/fixed_responses/loginRewards.json b/static/fixed_responses/loginRewards.json index 0ebbf5dc..b6632556 100644 --- a/static/fixed_responses/loginRewards.json +++ b/static/fixed_responses/loginRewards.json @@ -1,9 +1,9 @@ { - "DailyTributeInfo": { - "IsMilestoneDay": false, - "IsChooseRewardSet": true, - "LoginDays": 1337, - "NextMilestoneReward": "", - "NextMilestoneDay": 50 - } + "DailyTributeInfo": { + "IsMilestoneDay": false, + "IsChooseRewardSet": true, + "LoginDays": 1337, + "NextMilestoneReward": "", + "NextMilestoneDay": 50 + } } diff --git a/static/fixed_responses/modularWeaponSale.json b/static/fixed_responses/modularWeaponSale.json new file mode 100644 index 00000000..d6033439 --- /dev/null +++ b/static/fixed_responses/modularWeaponSale.json @@ -0,0 +1,70 @@ +{ + "SaleInfos": [ + { + "Name": "Ostron", + "Expiry": { "$date": { "$numberLong": "1683586800000" } }, + "Revision": 3045, + "Weapons": [ + { + "ItemType": "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon", + "PremiumPrice": 171, + "ModularParts": [ + "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Handle/HandleFive", + "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Tip/TipSix", + "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Balance/BalanceDamageICritII" + ] + } + ] + }, + { + "Name": "SolarisUnitedHoverboard", + "Expiry": { "$date": { "$numberLong": "1683586800000" } }, + "Revision": 1650, + "Weapons": [ + { + "ItemType": "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit", + "PremiumPrice": 51, + "ModularParts": [ + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCDeck", + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCEngine", + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusB/HoverboardCorpusBFront", + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCJet" + ] + } + ] + }, + { + "Name": "SolarisUnitedMoaPet", + "Expiry": { "$date": { "$numberLong": "1683586800000" } }, + "Revision": 1650, + "Weapons": [ + { + "ItemType": "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit", + "PremiumPrice": 175, + "ModularParts": [ + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetLegC", + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetHeadOloro", + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetEngineKrisys", + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetPayloadThermocor" + ] + } + ] + }, + { + "Name": "SolarisUnitedKitGun", + "Expiry": { "$date": { "$numberLong": "1683586800000" } }, + "Revision": 1650, + "Weapons": [ + { + "ItemType": "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam", + "PremiumPrice": 157, + "ModularParts": [ + "/Lotus/Weapons/SolarisUnited/Primary/SUModularPrimarySet1/Handles/SUModularPrimaryHandleAPart", + "/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Barrel/SUModularSecondaryBarrelDPart", + "/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Clip/SUModularCritIReloadIIClipPart" + ] + } + ] + } + ] +} diff --git a/static/fixed_responses/purchase.json b/static/fixed_responses/purchase.json index 12e2b20f..e9c27715 100644 --- a/static/fixed_responses/purchase.json +++ b/static/fixed_responses/purchase.json @@ -1,13 +1,13 @@ { - "InventoryChanges": { - "WeaponBin": { "count": 1, "platinum": 0, "Slots": -1 }, - "Suits": [ - { - "ItemType": "/Lotus/Powersuits/Ninja/Ninja", - "Configs": [], - "ItemId": { "$oid": "123123123123" } - } - ], - "RegularCredits": -25000 - } + "InventoryChanges": { + "WeaponBin": { "count": 1, "platinum": 0, "Slots": -1 }, + "Suits": [ + { + "ItemType": "/Lotus/Powersuits/Ninja/Ninja", + "Configs": [], + "ItemId": { "$oid": "123123123123" } + } + ], + "RegularCredits": -25000 + } } diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index cbca668d..30cbd618 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,2530 +1,2488 @@ { - "WorldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", - "Version": 10, - "MobileVersion": "4.15.13.1", - "BuildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", - "Time": 1685550327, - "Events": [ - { - "_id": { "$oid": "62d31b87106360aa5703954d" }, - "Messages": [ - { "LanguageCode": "en", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "fr", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "it", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "de", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "es", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "pt", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "ru", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "pl", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "uk", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "tr", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "ja", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "zh", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "ko", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, - { "LanguageCode": "tc", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" } - ], - "Prop": "https://discord.com/invite/playwarframe", - "Date": { "$date": { "$numberLong": "1658002200000" } }, - "Icon": "/Lotus/Interface/Icons/DiscordIconNoBacker.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "62dff6238607d6b5d80876f5" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Une ressource indispensable, le Wiki FR Warframe !" }], - "Prop": "https://warframe.fandom.com/fr/wiki/Wiki_Warframe", - "Date": { "$date": { "$numberLong": "1658844600000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2022_07/image.png.f54c43d80f7da00887a7c41471884c84.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "62e4112cb40d7d395d0b880f" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Warframe Türkiye Discord - Takas Odası Kanalları!" }], - "Prop": "https://forums.warframe.com/topic/1318162-warframe-t%C3%BCrkiye-discorduna-takas-kanallar%C4%B1-eklendi/", - "Date": { "$date": { "$numberLong": "1659113580000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2022_07/image.png.2515eac966b9f03c6eabf9b7e434d684.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "62ff8739293d0365d3046528" }, - "Messages": [ - { "LanguageCode": "fr", "Message": "[Guide] Que faire après avoir terminé \"Le Trophée de Vor\"" } - ], - "Prop": "https://forums.warframe.com/topic/1315672-guide-que-faire-apr%C3%A8s-avoir-termin%C3%A9-le-troph%C3%A9e-de-vor/", - "Date": { "$date": { "$numberLong": "1660913400000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0bd16bb52c55ec09ca1168becb87b030.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6319fa5321a116ecd1017614" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 32: Veilbreaker - szczegóły po polsku" }], - "Prop": "https://forums.warframe.com/topic/1321154-aktualizacja-32-veilbreaker/", - "Date": { "$date": { "$numberLong": "1662646740000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/76a29b4bf3e094861c3d36ef31b34b3e.png", - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "633b073816cec9695a056a84" }, - "Messages": [{ "LanguageCode": "pl", "Message": "PRZEGLĄD DEVSTREAM 164" }], - "Prop": "https://forums.warframe.com/topic/1326595-przegl%C4%85d-devstream-164/", - "Date": { "$date": { "$numberLong": "1664812800000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "63456893365cb9c9a309e104" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Wprowadzenie do Polowania na Archona" }], - "Prop": "https://forums.warframe.com/topic/1327682-wprowadzenie-do-polowania-na-archona/", - "Date": { "$date": { "$numberLong": "1665493080000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8c34580f18d0a489c282192bfc2a810b_1600x900.png", - "Priority": true, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "634d7f2f5c1c0e405d05254f" }, - "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Intro aux Chasses aux Archontes" }], - "Prop": "https://forums.warframe.com/topic/1328159-guide-introduction-aux-chasses-aux-archontes/", - "Date": { "$date": { "$numberLong": "1666023180000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8c34580f18d0a489c282192bfc2a810b_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "63878183da0783f1c00ffc85" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 32.2: Żer na Lua - Notki po polsku!" }], - "Prop": "https://forums.warframe.com/topic/1332240-aktualizacja-322-%C5%BCer-na-lua/", - "Date": { "$date": { "$numberLong": "1669824840000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "63a23acc1336bb81640a63dd" }, - "Messages": [], - "Prop": "", - "Date": { "$date": { "$numberLong": "1671576240000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "63c84f910ee5a50a18071a24" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Sentient Rehberi" }], - "Prop": "https://forums.warframe.com/topic/1337858-sentient-rehberi/", - "Date": { "$date": { "$numberLong": "1674071820000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64120cec5ca90487bf075d73" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Hildryn Prime Access is now available!" }, - { "LanguageCode": "fr", "Message": "Le Prime Access Hildryn Prime est maintenant disponible !" }, - { "LanguageCode": "it", "Message": "L'Accesso Hildryn Prime è ora disponibile!" }, - { "LanguageCode": "de", "Message": "Hildryn Prime Access ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡Prime Access de Hildryn ya está disponible!" }, - { "LanguageCode": "pt", "Message": "O Prime Access da Hildryn Prime já está disponível!" }, - { "LanguageCode": "ru", "Message": "Доступ Хильдрин Прайм уже открыт!" }, - { "LanguageCode": "pl", "Message": "Hildryn Prime Access już dostępny!" }, - { "LanguageCode": "uk", "Message": "Гільдрина-прайм уже доступна!" }, - { "LanguageCode": "tr", "Message": "Hildryn Prime Access şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "Hildryn Prime Accessが登場!" }, - { "LanguageCode": "zh", "Message": "Hildryn Prime Access 现已登场!" }, - { "LanguageCode": "ko", "Message": "힐드린 프라임 액세스를 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "Hildryn Prime Access 現已登場!" } - ], - "Prop": "https://www.warframe.com/news/hildryn-prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-03-HildrynPrimeAccessIGNLaunch", - "Date": { "$date": { "$numberLong": "1678904400000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8260dab07e051d35bcef1a2a82c22965_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64134e23bf2682c23b0214ad" }, - "Messages": [{ "LanguageCode": "es", "Message": "Programas de terceros y tú" }], - "Prop": "https://forums.warframe.com/topic/1343097-programas-de-terceros-y-t%C3%BA/", - "Date": { "$date": { "$numberLong": "1678986720000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "642ca76911f9a53a5006bac6" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Créez votre masque du Paradoxe Duviri !" }], - "Prop": "https://forums.warframe.com/topic/1344657-cr%C3%A9ez-votre-propre-masque-du-paradoxe-duviri/", - "Date": { "$date": { "$numberLong": "1680648000000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/c28ced01aaf966b9222f4a6ed5a7a7fd_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6444153668778753e30ed2d4" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Duviri et au-delà, dernières infos" }], - "Prop": "https://forums.warframe.com/topic/1345726-duviri-et-au-del%C3%A0-derni%C3%A8res-infos/", - "Date": { "$date": { "$numberLong": "1682183340000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_04/FuVYV0aWcAAc60t.jpg.0e90f5d9af010ecaa5b9467aaf7333c3.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64493dd93b9ce09dd509b136" }, - "Messages": [{ "LanguageCode": "ja", "Message": "「デュヴィリ・パラドックス」パッチノート" }], - "Prop": "https://bit.ly/3AxYiNW", - "Date": { "$date": { "$numberLong": "1682521440000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0c1fb4674583e7e29bf36784b28f3476.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64493fde2b02c323ce07ec73" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 33: Paradoks Duviri" }], - "Prop": "https://forums.warframe.com/topic/1345996-aktualizacja-33-paradoks-duviri/", - "Date": { "$date": { "$numberLong": "1682521920000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0c1fb4674583e7e29bf36784b28f3476.png", - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "64494dc72c44d78bab079685" }, - "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33: 두비리의 역설" }], - "Prop": "", - "Links": [ - { - "LanguageCode": "ko", - "Link": "https://forums.warframe.com/topic/1346037-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-33-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%97%AD%EC%84%A4/" - } - ], - "Date": { "$date": { "$numberLong": "1682525580000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64495365aca4975f2408f5c3" }, - "Messages": [{ "LanguageCode": "es", "Message": "Actualización 33: La Paradoja de Duviri" }], - "Prop": "https://forums.warframe.com/topic/1346059-actualizaci%C3%B3n-33-la-paradoja-de-duviri/", - "Date": { "$date": { "$numberLong": "1682527020000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64517606c429f4f85d0f069d" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Nora's Mix Vol. 3 終了日 + Nightwaveの今後について" }], - "Prop": "https://bit.ly/3AJu8HT", - "Date": { "$date": { "$numberLong": "1683060000000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6453f7bf20df842a150d8316" }, - "Messages": [{ "LanguageCode": "en", "Message": "Have your Dojo featured on the Star Chart!" }], - "Prop": "https://forums.warframe.com/topic/1349495-star-chart-dojo-showcase-spring-2023/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Spring-dojo-contest", - "Date": { "$date": { "$numberLong": "1683224460000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6453fc4380fb13ff9a072376" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Now Available: Nova Prime and Trinity Prime" }, - { "LanguageCode": "fr", "Message": "Maintenant disponible : Nova Prime et Trinity Prime" }, - { "LanguageCode": "it", "Message": "Ora Disponibili: Nova Prime e Trinity Prime" }, - { "LanguageCode": "de", "Message": "Jetzt erhältlich: Nova Prime und Trinity Prime" }, - { "LanguageCode": "es", "Message": "Disponible ya: Nova Prime y Trinity Prime" }, - { "LanguageCode": "pt", "Message": "Já Disponível: Nova Prime e Trinity Prime" }, - { "LanguageCode": "ru", "Message": "Уже доступны: Нова Прайм и Тринити Прайм" }, - { "LanguageCode": "pl", "Message": "Już dostępne: Nova Prime i Trinity Prime" }, - { "LanguageCode": "uk", "Message": "Уже доступні: Нова-прайм і Трініті-прайм\t" }, - { "LanguageCode": "tr", "Message": "Şimdi Sizlerle: Nova Prime ve Trinity Prime" }, - { "LanguageCode": "ja", "Message": "Nova PrimeとTrinity Primeをゲットしよう" }, - { "LanguageCode": "zh", "Message": "现已登场:Nova Prime 和 Trinity Prime" }, - { "LanguageCode": "ko", "Message": "지금 바로 구매 가능: 노바 프라임 및 트리니티 프라임" }, - { "LanguageCode": "tc", "Message": "現已登場:Nova Prime 以及 Trinity Prime" } - ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-PrimeResurgenceNovaTrinity-Launch", - "Date": { "$date": { "$numberLong": "1683222960000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685937600000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/3dde851b071ff5295e58f24d68b43760_800x450.png", - "Priority": false, - "MobileOnly": false, - "HideEndDateModifier": true - }, - { - "_id": { "$oid": "646646aad048b740ec04753c" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Refer a Friend Program Changes" }, - { "LanguageCode": "fr", "Message": "Modification du programme de parrainage" }, - { "LanguageCode": "it", "Message": "Cambiamenti al Programma Riferisci un Amico" }, - { "LanguageCode": "de", "Message": "Programmaktualisierung für 'Freunde rekrutieren'" }, - { "LanguageCode": "es", "Message": "Cambios en el programa \"Refiere a un amigo\"" }, - { "LanguageCode": "pt", "Message": "Mudanças no Programa de Indicação de Amigos" }, - { "LanguageCode": "pl", "Message": "Zmiany programu \"Zaproś Znajomego\"" }, - { "LanguageCode": "uk", "Message": "Зміни в програмі «Запросіть друга»" }, - { "LanguageCode": "tr", "Message": "Arkadaş Daveti Referans Programı Değişiklikleri" }, - { "LanguageCode": "ja", "Message": "お友達紹介プログラム更新" }, - { "LanguageCode": "zh", "Message": "「邀请好友计划」更新" }, - { "LanguageCode": "ko", "Message": "친구 초대 프로그램의 변화" } - ], - "Prop": "https://www.warframe.com/referral", - "Date": { "$date": { "$numberLong": "1684421760000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684393200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fe49a80950256bf393fa2aa0b9303a_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6466726e06ca85f0e202e343" }, - "Messages": [ - { "LanguageCode": "en", "Message": "TennoCon 2023 Digital Pack Now Available" }, - { "LanguageCode": "fr", "Message": "Le Pack Digital TennoCon 2023 est maintenant disponible" }, - { "LanguageCode": "it", "Message": "Il Pacchetto Digitale TennoCon 2023 è Ora Disponibile" }, - { "LanguageCode": "de", "Message": "TennoCon 2023 Digital Paket ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "El Paquete Digital de TennoCon 2023 ya está disponible" }, - { "LanguageCode": "pt", "Message": "O Pacote Digital da TennoCon 2023 já está disponível" }, - { "LanguageCode": "ru", "Message": "Цифровой набор TennoCon-2023 уже доступен" }, - { "LanguageCode": "pl", "Message": "Pakiet Cyfrowy TennoCon 2023 już dostępny" }, - { "LanguageCode": "uk", "Message": "Цифровий набір «Теннокон 2023» уже доступний" }, - { "LanguageCode": "tr", "Message": "TennoCon 2023 Dijital Paketi Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "TennoCon 2023 デジタルパック発売開始" }, - { "LanguageCode": "zh", "Message": "TennoCon 2023 虚拟礼包现已登场" }, - { "LanguageCode": "ko", "Message": "텐노콘 2023 디지털 팩을 지금 만나보세요" }, - { "LanguageCode": "tc", "Message": "TennoCon 2023 數位組合包現已登場" } - ], - "Prop": "", - "Links": [ - { "LanguageCode": "en", "Link": "https://www.warframe.com/tennocon" }, - { "LanguageCode": "fr", "Link": "https://www.warframe.com/fr/tennocon" }, - { "LanguageCode": "it", "Link": "https://www.warframe.com/it/tennocon" }, - { "LanguageCode": "de", "Link": "https://www.warframe.com/de/tennocon" }, - { "LanguageCode": "es", "Link": "https://www.warframe.com/es/tennocon" }, - { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/tennocon" }, - { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/tennocon" }, - { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/tennocon" }, - { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/tennocon" }, - { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/tennocon" }, - { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/tennocon" }, - { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/tennocon" }, - { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/tennocon" }, - { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/tennocon" } - ], - "Date": { "$date": { "$numberLong": "1684432080000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684404000000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/tennocon/2023/digital-pack-banner-2x.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64668cd31137f75bf70d0e09" }, - "Messages": [ - { "LanguageCode": "en", "Message": "May in Warframe Roundup" }, - { "LanguageCode": "fr", "Message": "Tour d'horizon du mois de mai dans Warframe" }, - { "LanguageCode": "it", "Message": "Maggio in Warframe: Riepilogo" }, - { "LanguageCode": "de", "Message": "Mai-Zusammenfassung für Warframe" }, - { "LanguageCode": "es", "Message": "Mayo en Warframe: Resumen" }, - { "LanguageCode": "pt", "Message": "Resumo do mês de maio no Warframe" }, - { "LanguageCode": "pl", "Message": "Maj w Warframe" }, - { "LanguageCode": "uk", "Message": "Травнева добірка у Warframe" }, - { "LanguageCode": "tr", "Message": "Mayıs Ayı Warframe Özeti" }, - { "LanguageCode": "ja", "Message": "5月の『Warframe』振り返り" }, - { "LanguageCode": "zh", "Message": "《Warframe》的五月摘要" }, - { "LanguageCode": "ko", "Message": "5월의 워프레임 요약" }, - { "LanguageCode": "tc", "Message": "Warframe 5 月份總結" } - ], - "Prop": "https://www.warframe.com/news/may-in-warframe-roundup?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-MayWarframeRoundup", - "Date": { "$date": { "$numberLong": "1684440240000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684440000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/8f08145f560b43a4cafadc7bb9c5748_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64677ce96fba686c8a06bd24" }, - "Messages": [ - { - "LanguageCode": "en", - "Message": "May 25 Charity Stream: Warframe x Covenant House! Click To Learn More. 6 p.m. EST " - } - ], - "Prop": "https://wrfr.me/chmm23", - "Date": { "$date": { "$numberLong": "1684503360000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6467baa3db8bd174db0b163b" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Pre-order 10 Year Anniversary Merch!" }, - { - "LanguageCode": "fr", - "Message": "Précommandez la Collection de produits dérivés du 10e Anniversaire !" - }, - { "LanguageCode": "it", "Message": "Preordina il Merch per il 10° Anniversario!" }, - { "LanguageCode": "de", "Message": "Bestellt die Merch-Kollektion zum 10. Jubiläum vor!" }, - { "LanguageCode": "es", "Message": "¡Reserva los productos del 10° aniversario!" }, - { "LanguageCode": "pt", "Message": "Faça a pré-encomenda de Produtos do Aniversário de 10 anos!" }, - { "LanguageCode": "pl", "Message": "Zamów w przedsprzedaży gadżety na 10-lecie!" }, - { "LanguageCode": "tr", "Message": "10. Yıl Dönümü Ürünleri için ön siparişini ver!" }, - { "LanguageCode": "ja", "Message": "Warframe 10周年記念グッズを予約購入!" }, - { "LanguageCode": "zh", "Message": "预购十周年纪念周边商品!" }, - { "LanguageCode": "ko", "Message": "10주년 기념 굿즈를 예약 주문하세요!" }, - { "LanguageCode": "tc", "Message": "預購 10 週年紀念周邊商品!" } - ], - "Prop": "https://store.warframe.com/products/10-year-anniversary-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Merch-10year-Collection", - "Date": { "$date": { "$numberLong": "1684519320000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684519200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/81f0ccac0ee2cdfb628a64f9f72d2166_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "646e55122b97d301df08b65a" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第171回のお知らせ" }], - "Prop": "https://bit.ly/426QXR5", - "Date": { "$date": { "$numberLong": "1684952280000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/4e0d4b80256c0b05a5a9643664799beb.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "646e5cc6af17a161c20d79a4" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Nora’s Mix Vol. 4 has begun" }, - { "LanguageCode": "fr", "Message": "Le Mix de Nora Vol. 4 est disponible" }, - { "LanguageCode": "it", "Message": "Mix di Nora Vol. 4 è iniziato" }, - { "LanguageCode": "de", "Message": "Noras Mix - Vol. 4 hat begonnen" }, - { "LanguageCode": "es", "Message": "Comenzó el Mix de Nora Vol. 4" }, - { "LanguageCode": "pt", "Message": "O Mix da Nora Vol. 4 começou" }, - { "LanguageCode": "ru", "Message": "Микс Норы: Диск 4 уже в начался" }, - { "LanguageCode": "pl", "Message": "Składanka Nory cz. 4 już dostępna" }, - { "LanguageCode": "uk", "Message": "Вибірка Нори 4 уже в грі" }, - { "LanguageCode": "tr", "Message": "Nora'nın Derlemesi - 4. Seri şimdi sizlerle" }, - { "LanguageCode": "ja", "Message": "Nora's Mix Vol.4 開催!" }, - { "LanguageCode": "zh", "Message": "《Nora 的混选 Vol. 4》现已开始!" }, - { "LanguageCode": "ko", "Message": "노라의 믹스 Vol. 4가 시작되었습니다" }, - { "LanguageCode": "tc", "Message": "Nora 合輯 VI 已登場" } - ], - "Prop": "https://www.warframe.com/news/noras-mix-vol-4?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-NightwaveVol4Launch", - "Date": { "$date": { "$numberLong": "1684953960000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684951200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/42721390b8812fe65296ce5eee7d862_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "646e6a4cf16914573401c77b" }, - "Messages": [ - { "LanguageCode": "tr", "Message": "Nora’nın Derlemesi - 3. Seri Tamamlandı + 4. Seri Sizlerle!" } - ], - "Prop": "https://forums.warframe.com/topic/1354223-nora%E2%80%99n%C4%B1n-derlemesi-seri-3-tamamland%C4%B1-seri-4-24-may%C4%B1s%E2%80%99ta-sizlerle/", - "Date": { "$date": { "$numberLong": "1684957500000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "646fbefdeaa2199bc406b117" }, - "Messages": [ - { "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.11 + Revisión 33.0.12" } - ], - "Prop": "https://forums.warframe.com/topic/1354406-la-paradoja-de-duviri-revisi%C3%B3n-33011-revisi%C3%B3n-33012/", - "Date": { "$date": { "$numberLong": "1685044920000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6471f7ad49b3f286420543a4" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #171 : version FR" }], - "Prop": "https://forums.warframe.com/topic/1354587-r%C3%A9sum%C3%A9-devstream-171-version-fr/", - "Date": { "$date": { "$numberLong": "1685190540000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.3fa3bb18a3cd29a7ee623ec88bf72429.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6475055203028af6f5076925" }, - "Messages": [{ "LanguageCode": "en", "Message": "The Duviri Paradox: Hotfix 33.0.14" }], - "Prop": "https://www.warframe.com/updates/pc/33-0-14", - "Date": { "$date": { "$numberLong": "1685387100000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "64751514ef6fa74efd0b624e" }, - "Messages": [ - { "LanguageCode": "en", "Message": " PSA: Hotfix pause until The 7 Crimes of Kullervo Update" } - ], - "Prop": "https://forums.warframe.com/topic/1355007-psa-hotfixing-paused-until-the-7-crimes-of-kullervo/", - "Date": { "$date": { "$numberLong": "1685394600000" } }, - "Priority": true, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "647516f0fefde43d790ad0ed" }, - "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #352!" }], - "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", - "Date": { "$date": { "$numberLong": "1685395080000" } }, - "EventStartDate": { "$date": { "$numberLong": "1685656800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685664000000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframe/", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6475175603028af6f50769e3" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Twitch Drops: Community Stream Schedule May 29 to June 2!" } - ], - "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", - "Date": { "$date": { "$numberLong": "1685395200000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6475ddac402fe7be5c0f0efb" }, - "Messages": [{ "LanguageCode": "ja", "Message": "5月29日~6月2日の配信スケジュール" }], - "Prop": "https://bit.ly/43eU1f4", - "Date": { "$date": { "$numberLong": "1685446020000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "647624dc351728a45207bd67" }, - "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: Programa de streams de la comunidad" }], - "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", - "Date": { "$date": { "$numberLong": "1685464200000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6476250bedcc8797810215de" }, - "Messages": [ - { "LanguageCode": "es", "Message": "¡Emisión Tenno con sorteo de Hildryn Prime Access + Twitch Drop!" } - ], - "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", - "Date": { "$date": { "$numberLong": "1685464260000" } }, - "EventStartDate": { "$date": { "$numberLong": "1685559600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685563200000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframeinternational", - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/1c2a55a07ef0fcf121b6b4633b92c060.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "647632c88f764656130e1824" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Streams : 29 mai - 2 juin" }], - "Prop": "https://forums.warframe.com/topic/1355110-streams-communautaires-29-mai-2-juin/", - "Date": { "$date": { "$numberLong": "1685467800000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64764bd4931e7ae47f0d1a60" }, - "Messages": [ - { "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.13 + Revisión 33.0.14" } - ], - "Prop": "https://forums.warframe.com/topic/1355129-la-paradoja-de-duviri-revisi%C3%B3n-33013-revisi%C3%B3n-33014/", - "Date": { "$date": { "$numberLong": "1685474220000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - } - ], - "Goals": [ - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1684512000000" } }, - "Expiry": { "$date": { "$numberLong": "1685721600000" } }, - "Node": "SolNode129", - "ScoreVar": "FissuresClosed", - "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", - "Count": 24, - "HealthPct": 0.24, - "Regions": [1], - "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", - "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", - "OptionalInMission": true, - "Tag": "HeatFissure", - "UpgradeIds": [{ "$oid": "64667809d9c6963e382d9546" }, { "$oid": "64667809d9c6963e382d9547" }], - "Personal": true, - "Community": true, - "Goal": 100, - "Reward": { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], - "countedItems": [] - }, - "InterimGoals": [5, 25, 50, 75], - "InterimRewards": [ - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": [ - "/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", - "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod" - ], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": [ - "/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", - "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod" - ], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], - "countedItems": [] - } - ] - }, - { - "_id": { "$oid": "64663a0c0483e3f5b70ff0b2" }, - "Activation": { "$date": { "$numberLong": "1684508400000" } }, - "Expiry": { "$date": { "$numberLong": "1685717940000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode27", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2018D", - "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", - "Tag": "Anniversary2018TacAlert", - "Reward": { - "items": [ - "/Lotus/StoreItems/Upgrades/Skins/Scarves/DexScarf", - "/Lotus/StoreItems/Types/Game/CatbrowPet/CatbrowGeneticSignature" - ] - } - }, - { - "_id": { "$oid": "64663a3c866d9fe65c012364" }, - "Activation": { "$date": { "$numberLong": "1684508400000" } }, - "Expiry": { "$date": { "$numberLong": "1685717940000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode24", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2023k", - "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", - "Tag": "Anniversary2018TacAlert", - "Reward": { - "items": [ - "/Lotus/StoreItems/Upgrades/Skins/Wisp/DexWispSkin", - "/Lotus/StoreItems/Types/StoreItems/SlotItems/TwoSentinelSlotItem" - ] - } - } - ], - "Alerts": [], - "Sorties": [ - { - "_id": { "$oid": "64776b7eba82e08c76d6cb9b" }, - "Activation": { "$date": { "$numberLong": "1685548800000" } }, - "Expiry": { "$date": { "$numberLong": "1685635200000" } }, - "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 28971, - "Boss": "SORTIE_BOSS_ALAD", - "ExtraDrops": [], - "Variants": [ - { - "missionType": "MT_MOBILE_DEFENSE", - "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", - "node": "SolNode53", - "tileset": "CorpusGasCityTileset" - }, - { - "missionType": "MT_RESCUE", - "modifierType": "SORTIE_MODIFIER_IMPACT", - "node": "SolNode107", - "tileset": "CorpusOutpostTileset" - }, - { - "missionType": "MT_EXTERMINATION", - "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", - "node": "SolNode304", - "tileset": "OrokinMoonTilesetCorpus" - } - ], - "Twitter": true - } - ], - "LiteSorties": [ - { - "_id": { "$oid": "6473e77dfff198b17e47812d" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 62757, - "Boss": "SORTIE_BOSS_AMAR", - "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode30" }, - { "missionType": "MT_EXCAVATE", "node": "SolNode11" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } - ] - } - ], - "SyndicateMissions": [ - { - "_id": { "$oid": "64775ff00000000000000002" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, - "Tag": "EntratiSyndicate", - "Seed": 20831, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [5, 5, 5] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [11, 11, 11] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", - "masteryReq": 5, - "minEnemyLevel": 25, - "maxEnemyLevel": 30, - "endless": true, - "bonusXpMultiplier": 0.15000001, - "xpAmounts": [14, 14, 14] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", - "masteryReq": 2, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 29] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 39] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [25, 25, 25, 25, 50] - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", - "masteryReq": 5, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [2, 2, 2, 4], - "locationTag": "ChamberB", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [4, 4, 4, 5], - "locationTag": "ChamberA", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", - "masteryReq": 5, - "minEnemyLevel": 50, - "maxEnemyLevel": 60, - "xpAmounts": [5, 5, 5, 7], - "locationTag": "ChamberC", - "isVault": true - } - ] - }, - { - "_id": { "$oid": "64775ff00000000000000022" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, - "Tag": "SolarisSyndicate", - "Seed": 20831, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [350, 350, 350] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [680, 680, 680] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 890] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [580, 580, 580, 580, 1140] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [680, 680, 680, 680, 1340] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [760, 760, 760, 760, 1500] - } - ] - }, - { - "_id": { "$oid": "64775ff00000000000000007" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, - "Tag": "CetusSyndicate", - "Seed": 20831, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [690, 690, 690] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [590, 590, 590, 870] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 550, 1080] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1350] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [830, 830, 830, 830, 1640] - } - ] - }, - { - "_id": { "$oid": "64775ff00000000000000026" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, - "Tag": "ZarimanSyndicate", - "Seed": 20831, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4de" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "ArbitersSyndicate", - "Seed": 28971, - "Nodes": ["SolNode36", "SolNode123", "SolNode225", "SolNode709", "SolNode137", "SolNode195", "SolNode81"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4df" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 25969, - "Nodes": ["SolNode79", "SolNode41", "SettlementNode1", "SolNode132", "SolNode166", "SolNode72", "SolNode23"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e0" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 81067, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e1" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "EventSyndicate", - "Seed": 28897, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e2" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "KahlSyndicate", - "Seed": 92441, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e4" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "QuillsSyndicate", - "Seed": 61214, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e3" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 21393, - "Nodes": ["SolNode68", "SolNode2", "SolNode82", "SolNode217", "SolNode409", "SolNode139", "SolNode75"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e5" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "PerrinSyndicate", - "Seed": 72469, - "Nodes": ["SolNode39", "SolNode12", "SolNode146", "SolNode101", "SolNode121", "SolNode408", "SolNode96"] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e6" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 13526, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ea" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 20328, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4eb" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 87241, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ec" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 54438, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e7" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 20666, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e9" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 7709, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e8" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 33027, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ee" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 21780, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ef" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 95381, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ed" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 53091, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f0" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 60623, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f1" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 78309, - "Nodes": [ - "SolNode15", - "SolNode106", - "SettlementNode3", - "SolNode224", - "SolNode401", - "SolNode76", - "SolNode62" - ] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f3" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "VoxSyndicate", - "Seed": 52842, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f2" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 49149, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f4" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 9289, - "Nodes": ["SolNode130", "SolNode61", "SolNode30", "SolNode10", "SolNode102", "SolNode64", "SolNode50"] - } - ], - "ActiveMissions": [ - { - "_id": { "$oid": "64775c05cab187e046c3d277" }, - "Region": 12, - "Seed": 94704, - "Activation": { "$date": { "$numberLong": "1685543941731" } }, - "Expiry": { "$date": { "$numberLong": "1685550975969" } }, - "Node": "SolNode184", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "647761698afaf76e50461fc8" }, - "Region": 19, - "Seed": 58268, - "Activation": { "$date": { "$numberLong": "1685545321337" } }, - "Expiry": { "$date": { "$numberLong": "1685551434577" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "6477630df698f676b0b32282" }, - "Region": 15, - "Seed": 70123, - "Activation": { "$date": { "$numberLong": "1685545741655" } }, - "Expiry": { "$date": { "$numberLong": "1685550886528" } }, - "Node": "SolNode412", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "6477630df698f676b0b32283" }, - "Region": 9, - "Seed": 15094, - "Activation": { "$date": { "$numberLong": "1685545741655" } }, - "Expiry": { "$date": { "$numberLong": "1685550459337" } }, - "Node": "SolNode56", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "647764ed12544a97c96618a5" }, - "Region": 15, - "Seed": 66090, - "Activation": { "$date": { "$numberLong": "1685546221415" } }, - "Expiry": { "$date": { "$numberLong": "1685553063549" } }, - "Node": "SolNode405", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "647764ed12544a97c96618a6" }, - "Region": 13, - "Seed": 19703, - "Activation": { "$date": { "$numberLong": "1685546221415" } }, - "Expiry": { "$date": { "$numberLong": "1685550448683" } }, - "Node": "SolNode216", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "64776565dc85a669dae19b38" }, - "Region": 3, - "Seed": 90150, - "Activation": { "$date": { "$numberLong": "1685546341763" } }, - "Expiry": { "$date": { "$numberLong": "1685552506487" } }, - "Node": "SolNode89", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64776565dc85a669dae19b39" }, - "Region": 2, - "Seed": 11253, - "Activation": { "$date": { "$numberLong": "1685546341763" } }, - "Expiry": { "$date": { "$numberLong": "1685550810452" } }, - "Node": "SolNode128", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64776655b191713293c08dfe" }, - "Region": 5, - "Seed": 67983, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685553220288" } }, - "Node": "SolNode97", - "MissionType": "MT_INTEL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64776655b191713293c08dff" }, - "Region": 10, - "Seed": 74682, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685551010303" } }, - "Node": "SolNode135", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64776655b191713293c08e00" }, - "Region": 6, - "Seed": 15538, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685551799194" } }, - "Node": "SolNode18", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64776ec5752b9bd0c871fa7c" }, - "Region": 4, - "Seed": 47626, - "Activation": { "$date": { "$numberLong": "1685548741727" } }, - "Expiry": { "$date": { "$numberLong": "1685553411719" } }, - "Node": "SolNode36", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "647770a68bb595254a64c26e" }, - "Region": 7, - "Seed": 86090, - "Activation": { "$date": { "$numberLong": "1685549222143" } }, - "Expiry": { "$date": { "$numberLong": "1685556263692" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "647770a68bb595254a64c26f" }, - "Region": 13, - "Seed": 39703, - "Activation": { "$date": { "$numberLong": "1685549222143" } }, - "Expiry": { "$date": { "$numberLong": "1685553504151" } }, - "Node": "SolNode212", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "6477720ec9dd724c888eff5b" }, - "Region": 19, - "Seed": 2767, - "Activation": { "$date": { "$numberLong": "1685549582078" } }, - "Expiry": { "$date": { "$numberLong": "1685554300277" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7c" }, - "Region": 10, - "Seed": 84581, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685554027918" } }, - "Node": "SolNode149", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7d" }, - "Region": 16, - "Seed": 50951, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685553961019" } }, - "Node": "SettlementNode12", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7e" }, - "Region": 5, - "Seed": 37897, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685556218772" } }, - "Node": "SolNode73", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT2" - } - ], - "GlobalUpgrades": [], - "FlashSales": [ - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "StartDate": { "$date": { "$numberLong": "1662422400000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "StartDate": { "$date": { "$numberLong": "1667347200000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": true, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 5, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 80, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 195, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 85, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 430, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 90, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 90, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 95, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 260, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 105, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 20, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 100, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 325, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 110, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 35, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 115, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 80, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 120, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 165, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693494000000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 1, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693440000000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 2, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1683828000000" } }, - "EndDate": { "$date": { "$numberLong": "1687110900000" } }, - "DefaultPremium": 1, - "DefaulRegular": 0, - "LocalizedItemName": "FREE WITH PRIME GAMING" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1683828000000" } }, - "EndDate": { "$date": { "$numberLong": "1687110900000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1684432800000" } }, - "EndDate": { "$date": { "$numberLong": "1693504800000" } } - } - ], - "InGameMarket": { - "LandingPage": { - "Categories": [ - { - "CategoryName": "POPULAR", - "Name": "/Lotus/Language/Menu/StorePopular", - "Icon": "popular", - "Items": [ - "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/WolfFrameBundle", - "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/EmberDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/RailjackVoidrigBundle", - "/Lotus/StoreItems/Powersuits/Werewolf/Werewolf", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/FormaPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" - ] - }, - { - "CategoryName": "DUVIRI_PARADOX", - "Name": "/Lotus/Language/Store/Store_DuviriParadox", - "Icon": "duviriparadox", - "AddToMenu": true, - "Items": [ - "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/WispDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/VoidAdornmentIVBundle", - "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", - "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/StoreItems/Upgrades/Skins/Duviri/DuviriSwordTowerShieldSkin", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit1ABundle", - "/Lotus/StoreItems/Weapons/Tenno/Bows/DaxDuviriAsymetricalBow/DaxDuviriAsymmetricalLongBowPlayerWeapon", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAetigo", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundlePsyacus", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAccessories", - "/Lotus/Types/StoreItems/Packages/Tattoo/TattooBundleDuviri", - "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" - ] - }, - { - "CategoryName": "TENNOGEN", - "Name": "/Lotus/Language/Menu/Store_Tennogen", - "Icon": "tennogen", - "Items": [ - "/Lotus/StoreItems/Upgrades/Skins/Runner/SWGaussNitrolystSkin", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRetrorolystSyandana", - "/Lotus/StoreItems/Upgrades/Skins/BrokenFrame/SWXakuDeatheaSkin", - "/Lotus/StoreItems/Upgrades/Skins/Sentient/SWCalibanScionHelmet", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWAlocanaSyandana", - "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" - ] - }, - { - "CategoryName": "DUVIRI_CHOICES", - "Name": "/Lotus/Language/Store/Store_DuviriChoices", - "Icon": "duvirichoices", - "AddToMenu": true, - "Items": [] - }, - { - "CategoryName": "PREMIUM_BUNDLES", - "Name": "/Lotus/Language/Store/Store_PremiumBundles", - "Icon": "premiumbundles", - "Items": [ - "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB" - ] - }, - { - "CategoryName": "WISH_LIST", - "Name": "/Lotus/Language/Menu/Store_Wishlist", - "Icon": "wishlist", - "Items": [] - } - ] - } + "WorldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", + "Version": 10, + "MobileVersion": "4.15.13.1", + "BuildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", + "Time": 1685550327, + "Events": [ + { + "_id": { "$oid": "62d31b87106360aa5703954d" }, + "Messages": [ + { "LanguageCode": "en", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "fr", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "it", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "de", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "es", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "pt", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "ru", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "pl", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "uk", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "tr", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "ja", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "zh", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "ko", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" }, + { "LanguageCode": "tc", "Message": "/Lotus/Language/CommunityMessages/JoinDiscord" } + ], + "Prop": "https://discord.com/invite/playwarframe", + "Date": { "$date": { "$numberLong": "1658002200000" } }, + "Icon": "/Lotus/Interface/Icons/DiscordIconNoBacker.png", + "Priority": false, + "MobileOnly": false, + "Community": true }, - "Invasions": [ - { - "_id": { "$oid": "6471a5c11c84d8991785ccc1" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode4", - "Count": -35500, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "646e00f1d08856975bb476fe" }, - "AttackerReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] - }, - "AttackerMissionInfo": { "seed": 573551, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 810078, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1685170489276" } } - }, - { - "_id": { "$oid": "64729729ea6b289e0f440b37" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode177", - "Count": -40065, - "Goal": 40000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "646fdcb95a219384bdbbd5f1" }, - "AttackerReward": { - "countedItems": [ - { "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 } - ] - }, - "AttackerMissionInfo": { "seed": 181914, "faction": "FC_GRINEER" }, - "DefenderReward": { - "countedItems": [ - { "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 } - ] - }, - "DefenderMissionInfo": { "seed": 197505, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1685232025336" } } - }, - { - "_id": { "$oid": "64764c611959704d82e095f8" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode127", - "Count": -19265, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "647612f5b75e9d02362f0c6c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 995781, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 978707, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1685474401909" } } - }, - { - "_id": { "$oid": "6476ba8aca0663ae5a22b6bb" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode68", - "Count": -33274, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6476ba8aca0663ae5a22b6bb" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 512950, "faction": "FC_GRINEER" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 160228, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685508708793" } } - }, - { - "_id": { "$oid": "647730e50ecf58593d735cb0" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode107", - "Count": -17526, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 640989, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 53442, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685537906204" } } - }, - { - "_id": { "$oid": "64775e991d3a1c5c0a181494" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode66", - "Count": -1218, - "Goal": 45000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 563164, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 203755, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685544601696" } } - }, - { - "_id": { "$oid": "64775e991d3a1c5c0a181495" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode22", - "Count": -1490, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 933714, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 693132, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685544601696" } } - } - ], - "HubEvents": [], - "NodeOverrides": [ - { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, - { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, - { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9507716 }, - { - "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, - "Node": "EarthHUB", - "Hide": false, - "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubTwoB", - "Activation": { "$date": { "$numberLong": "1535646600000" } } - }, - { - "_id": { "$oid": "5d24d1f674491d51f8d44473" }, - "Node": "MercuryHUB", - "Hide": true, - "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", - "Activation": { "$date": { "$numberLong": "1563030000000" } } - }, - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1684512000000" } }, - "Expiry": { "$date": { "$numberLong": "1685721600000" } }, - "Node": "SolNode129", - "Faction": "FC_CORPUS", - "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] - } - ], - "VoidTraders": [ - { - "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1685710800000" } }, - "Expiry": { "$date": { "$numberLong": "1685883600000" } }, - "Id": "5d1e07a0a38e4a4fdd7cefca", - "Character": "Baro'Ki Teel", - "Node": "SaturnHUB" - } - ], - "PrimeVaultTraders": [ - { - "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1683223200000" } }, - "Completed": false, - "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, - "Node": "TradeHUB1", - "Manifest": [ - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaTrinityPrimeDualPack", - "PrimePrice": 10 - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack", - "PrimePrice": 10, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOberonPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTrinityPrimeSinglePack", - "PrimePrice": 6 - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaPrimeSinglePack", - "PrimePrice": 6 - }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Paladin/PaladinPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeOberonCape", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/SurakaPrimeDangle", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeSilvaAegis/PrimeSilvaAegis", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSybaris/PrimeSybarisRifle", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Necro/NekrosPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/UruPrimeScarf", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAcanthusPrimeArmorSet", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTigris/PrimeTigris", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeGalatine/PrimeGalatine", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Trinity/TrinityPrime", "PrimePrice": 3 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVKavasaPrimeKubrowArmor", - "PrimePrice": 2 - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", - "PrimePrice": 1 - }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeDualKamas/PrimeDualKamas", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/AntiMatter/NovaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEdoPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilFive", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSoma/PrimeSomaRifle", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeVasto/PrimeVastoPistol", "PrimePrice": 2 }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OberonPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NekrosPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NovaPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TrinityPrimeBobbleHead", "PrimePrice": 1 }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultBBronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultBBronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - } - ], - "Expiry": { "$date": { "$numberLong": "1685718000000" } }, - "EvergreenManifest": [ - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/DualDagger/FangPrimeDagger", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeLex/PrimeLex", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/ShipScenes/PrimeLisetFiligreeScene", "PrimePrice": 1 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAviaPrimeArmorSet", "PrimePrice": 2 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVayasPrimeAccessories", - "PrimePrice": 2 - }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/TwitchPrimeMeleeDangle", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeAviaSyandana", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeTwitchScarf", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/TwitchPrimeScarf", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/TwitchPrimeSigil", "PrimePrice": 1 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNecraloidBundle", - "RegularPrice": 10 - }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinTwitchPrime", "RegularPrice": 10 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/InfMembraneCape", "RegularPrice": 10 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PrimeBucks", "RegularPrice": 1 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoidTraceBundle", "RegularPrice": 1 } - ], - "ScheduleInfo": [ - { - "Expiry": { "$date": { "$numberLong": "1667498400000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1669921200000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1672945200000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1668711600000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOberonPrimeSinglePack" - }, - { - "Expiry": { "$date": { "$numberLong": "1675364400000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1671130800000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoltLokiPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1677783600000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1674154800000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtlasVaubanPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1680804000000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1676473200000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1683223200000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1679594400000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMagRhinoPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1685718000000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1682013600000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1688666400000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1684433100000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVInarosAshPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1691085600000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1691085600000" } } - } - ] - } - ], - "VoidStorms": [ - { - "_id": { "$oid": "64775c416894d083a29b8872" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1685546401825" } }, - "Expiry": { "$date": { "$numberLong": "1685551801825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64775c416894d083a29b8871" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1685546401821" } }, - "Expiry": { "$date": { "$numberLong": "1685551801821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64775c416894d083a29b8874" }, - "Node": "CrewBattleNode521", - "Activation": { "$date": { "$numberLong": "1685546401829" } }, - "Expiry": { "$date": { "$numberLong": "1685551801829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "64775c416894d083a29b8873" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1685546401827" } }, - "Expiry": { "$date": { "$numberLong": "1685551801827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64775c416894d083a29b8876" }, - "Node": "CrewBattleNode543", - "Activation": { "$date": { "$numberLong": "1685546401834" } }, - "Expiry": { "$date": { "$numberLong": "1685551801834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64775c416894d083a29b8875" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1685546401832" } }, - "Expiry": { "$date": { "$numberLong": "1685551801832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3db" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1685550001821" } }, - "Expiry": { "$date": { "$numberLong": "1685555401821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3de" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1685550001829" } }, - "Expiry": { "$date": { "$numberLong": "1685555401829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3dd" }, - "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1685550001827" } }, - "Expiry": { "$date": { "$numberLong": "1685555401827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3dc" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1685550001825" } }, - "Expiry": { "$date": { "$numberLong": "1685555401825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3e0" }, - "Node": "CrewBattleNode542", - "Activation": { "$date": { "$numberLong": "1685550001834" } }, - "Expiry": { "$date": { "$numberLong": "1685555401834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3df" }, - "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1685550001832" } }, - "Expiry": { "$date": { "$numberLong": "1685555401832" } }, - "ActiveMissionTier": "VoidT4" - } - ], - "PrimeAccessAvailability": { "State": "PRIME1" }, - "PrimeVaultAvailabilities": [false, false, false, false, false], - "PrimeTokenAvailability": true, - "DailyDeals": [ - { - "StoreItem": "/Lotus/StoreItems/Upgrades/Focus/AttackLensGreater", - "Activation": { "$date": { "$numberLong": "1685480400000" } }, - "Expiry": { "$date": { "$numberLong": "1685574000000" } }, - "Discount": 20, - "OriginalPrice": 40, - "SalePrice": 32, - "AmountTotal": 125, - "AmountSold": 125 - } - ], - "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, - "PVPChallengeInstances": [ - { - "_id": { "$oid": "6470fd0132c7efc24f00caf0" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "6470fd0132c7efc24f00caf1" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, - "params": [{ "n": "ScriptParamValue", "v": 20 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "6470fd0132c7efc24f00caf2" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "6470fd0132c7efc24f00caf3" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], - "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [ - { "$oid": "6470fd0132c7efc24f00caf0" }, - { "$oid": "6470fd0132c7efc24f00caf1" }, - { "$oid": "6470fd0132c7efc24f00caf2" } - ], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfb8" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfb9" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbc" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbb" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfba" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbf" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsMEDIUM", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbd" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbe" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - } - ], - "PersistentEnemies": [], - "PVPAlternativeModes": [], - "PVPActiveTournaments": [], - "ProjectPct": [55.93717913052773, 90.86309625235785, 0], - "ConstructionProjects": [], - "TwitchPromos": [], - "ExperimentRecommended": [], - "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, - { "Category": "EXC_HARD", "Choices": ["Zylok", "Sibear", "Dread", "Despair", "Hate"] } - ], - "ForceLogoutVersion": 0, - "FeaturedGuilds": [ - { - "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, - "Name": "Miau after Tomorrow", - "Tier": 1, - "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, - "Emblem": true - }, - { - "_id": { "$oid": "56ab8b2407c56fd145c91aa5" }, - "Name": "Slayers of Darkness", - "Tier": 2, - "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, - "Emblem": true - }, - { - "_id": { "$oid": "57ed05cb08c56ffd67386105" }, - "Name": "Nazaryk", - "Tier": 3, - "AllianceId": { "$oid": "5fdcf602fc5cef2d337800e0" }, - "Emblem": true - }, - { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz", "Tier": 4, "Emblem": true }, - { - "_id": { "$oid": "56d8b39408c56fd89a1799ec" }, - "Name": "Phantom Vanguard", - "Tier": 5, - "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, - "Emblem": true - }, - { - "_id": { "$oid": "54e44a5006c56f7eab0d5aa9" }, - "Name": "Violet Church", - "Tier": 3, - "AllianceId": { "$oid": "56c44d0b08c56f5c367b4665" }, - "Emblem": true - } - ], - "SeasonInfo": { - "Activation": { "$date": { "$numberLong": "1684951200000" } }, - "Expiry": { "$date": { "$numberLong": "1702857600000" } }, - "AffiliationTag": "RadioLegionIntermission8Syndicate", - "Season": 10, - "Phase": 0, - "Params": "", - "ActiveChallenges": [ - { - "_id": { "$oid": "001100020000000000000022" }, - "Daily": true, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685577600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithElectricity" - }, - { - "_id": { "$oid": "001100020000000000000023" }, - "Daily": true, - "Activation": { "$date": { "$numberLong": "1685404800000" } }, - "Expiry": { "$date": { "$numberLong": "1685664000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTransmuteMods" - }, - { - "_id": { "$oid": "001100020000000000000024" }, - "Daily": true, - "Activation": { "$date": { "$numberLong": "1685491200000" } }, - "Expiry": { "$date": { "$numberLong": "1685750400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySolveCiphers" - }, - { - "_id": { "$oid": "001100020000000000000015" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteRescue" - }, - { - "_id": { "$oid": "001100020000000000000016" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteKuva" - }, - { - "_id": { "$oid": "001100020000000000000017" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEximus" - }, - { - "_id": { "$oid": "001100020000000000000018" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPerfectAnimalCapture" - }, - { - "_id": { "$oid": "001100020000000000000019" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUnlockRelics" - }, - { - "_id": { "$oid": "001100020000000000000020" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillEnemies" - }, - { - "_id": { "$oid": "001100020000000000000021" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFastCapture" - } - ] + { + "_id": { "$oid": "62dff6238607d6b5d80876f5" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Une ressource indispensable, le Wiki FR Warframe !" }], + "Prop": "https://warframe.fandom.com/fr/wiki/Wiki_Warframe", + "Date": { "$date": { "$numberLong": "1658844600000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2022_07/image.png.f54c43d80f7da00887a7c41471884c84.png", + "Priority": false, + "MobileOnly": false, + "Community": true }, - "Tmp": "{\"sfn\":555}" + { + "_id": { "$oid": "62e4112cb40d7d395d0b880f" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Warframe Türkiye Discord - Takas Odası Kanalları!" }], + "Prop": "https://forums.warframe.com/topic/1318162-warframe-t%C3%BCrkiye-discorduna-takas-kanallar%C4%B1-eklendi/", + "Date": { "$date": { "$numberLong": "1659113580000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2022_07/image.png.2515eac966b9f03c6eabf9b7e434d684.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "62ff8739293d0365d3046528" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Que faire après avoir terminé \"Le Trophée de Vor\"" }], + "Prop": "https://forums.warframe.com/topic/1315672-guide-que-faire-apr%C3%A8s-avoir-termin%C3%A9-le-troph%C3%A9e-de-vor/", + "Date": { "$date": { "$numberLong": "1660913400000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0bd16bb52c55ec09ca1168becb87b030.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6319fa5321a116ecd1017614" }, + "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 32: Veilbreaker - szczegóły po polsku" }], + "Prop": "https://forums.warframe.com/topic/1321154-aktualizacja-32-veilbreaker/", + "Date": { "$date": { "$numberLong": "1662646740000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/76a29b4bf3e094861c3d36ef31b34b3e.png", + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "633b073816cec9695a056a84" }, + "Messages": [{ "LanguageCode": "pl", "Message": "PRZEGLĄD DEVSTREAM 164" }], + "Prop": "https://forums.warframe.com/topic/1326595-przegl%C4%85d-devstream-164/", + "Date": { "$date": { "$numberLong": "1664812800000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "63456893365cb9c9a309e104" }, + "Messages": [{ "LanguageCode": "pl", "Message": "Wprowadzenie do Polowania na Archona" }], + "Prop": "https://forums.warframe.com/topic/1327682-wprowadzenie-do-polowania-na-archona/", + "Date": { "$date": { "$numberLong": "1665493080000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8c34580f18d0a489c282192bfc2a810b_1600x900.png", + "Priority": true, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "634d7f2f5c1c0e405d05254f" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Intro aux Chasses aux Archontes" }], + "Prop": "https://forums.warframe.com/topic/1328159-guide-introduction-aux-chasses-aux-archontes/", + "Date": { "$date": { "$numberLong": "1666023180000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8c34580f18d0a489c282192bfc2a810b_1600x900.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "63878183da0783f1c00ffc85" }, + "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 32.2: Żer na Lua - Notki po polsku!" }], + "Prop": "https://forums.warframe.com/topic/1332240-aktualizacja-322-%C5%BCer-na-lua/", + "Date": { "$date": { "$numberLong": "1669824840000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "63a23acc1336bb81640a63dd" }, + "Messages": [], + "Prop": "", + "Date": { "$date": { "$numberLong": "1671576240000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "63c84f910ee5a50a18071a24" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Sentient Rehberi" }], + "Prop": "https://forums.warframe.com/topic/1337858-sentient-rehberi/", + "Date": { "$date": { "$numberLong": "1674071820000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64120cec5ca90487bf075d73" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Hildryn Prime Access is now available!" }, + { "LanguageCode": "fr", "Message": "Le Prime Access Hildryn Prime est maintenant disponible !" }, + { "LanguageCode": "it", "Message": "L'Accesso Hildryn Prime è ora disponibile!" }, + { "LanguageCode": "de", "Message": "Hildryn Prime Access ist jetzt verfügbar!" }, + { "LanguageCode": "es", "Message": "¡Prime Access de Hildryn ya está disponible!" }, + { "LanguageCode": "pt", "Message": "O Prime Access da Hildryn Prime já está disponível!" }, + { "LanguageCode": "ru", "Message": "Доступ Хильдрин Прайм уже открыт!" }, + { "LanguageCode": "pl", "Message": "Hildryn Prime Access już dostępny!" }, + { "LanguageCode": "uk", "Message": "Гільдрина-прайм уже доступна!" }, + { "LanguageCode": "tr", "Message": "Hildryn Prime Access şimdi sizlerle!" }, + { "LanguageCode": "ja", "Message": "Hildryn Prime Accessが登場!" }, + { "LanguageCode": "zh", "Message": "Hildryn Prime Access 现已登场!" }, + { "LanguageCode": "ko", "Message": "힐드린 프라임 액세스를 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "Hildryn Prime Access 現已登場!" } + ], + "Prop": "https://www.warframe.com/news/hildryn-prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-03-HildrynPrimeAccessIGNLaunch", + "Date": { "$date": { "$numberLong": "1678904400000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8260dab07e051d35bcef1a2a82c22965_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64134e23bf2682c23b0214ad" }, + "Messages": [{ "LanguageCode": "es", "Message": "Programas de terceros y tú" }], + "Prop": "https://forums.warframe.com/topic/1343097-programas-de-terceros-y-t%C3%BA/", + "Date": { "$date": { "$numberLong": "1678986720000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "642ca76911f9a53a5006bac6" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Créez votre masque du Paradoxe Duviri !" }], + "Prop": "https://forums.warframe.com/topic/1344657-cr%C3%A9ez-votre-propre-masque-du-paradoxe-duviri/", + "Date": { "$date": { "$numberLong": "1680648000000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/c28ced01aaf966b9222f4a6ed5a7a7fd_1600x900.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6444153668778753e30ed2d4" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Duviri et au-delà, dernières infos" }], + "Prop": "https://forums.warframe.com/topic/1345726-duviri-et-au-del%C3%A0-derni%C3%A8res-infos/", + "Date": { "$date": { "$numberLong": "1682183340000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_04/FuVYV0aWcAAc60t.jpg.0e90f5d9af010ecaa5b9467aaf7333c3.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64493dd93b9ce09dd509b136" }, + "Messages": [{ "LanguageCode": "ja", "Message": "「デュヴィリ・パラドックス」パッチノート" }], + "Prop": "https://bit.ly/3AxYiNW", + "Date": { "$date": { "$numberLong": "1682521440000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0c1fb4674583e7e29bf36784b28f3476.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64493fde2b02c323ce07ec73" }, + "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 33: Paradoks Duviri" }], + "Prop": "https://forums.warframe.com/topic/1345996-aktualizacja-33-paradoks-duviri/", + "Date": { "$date": { "$numberLong": "1682521920000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0c1fb4674583e7e29bf36784b28f3476.png", + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "64494dc72c44d78bab079685" }, + "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33: 두비리의 역설" }], + "Prop": "", + "Links": [ + { + "LanguageCode": "ko", + "Link": "https://forums.warframe.com/topic/1346037-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-33-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%97%AD%EC%84%A4/" + } + ], + "Date": { "$date": { "$numberLong": "1682525580000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64495365aca4975f2408f5c3" }, + "Messages": [{ "LanguageCode": "es", "Message": "Actualización 33: La Paradoja de Duviri" }], + "Prop": "https://forums.warframe.com/topic/1346059-actualizaci%C3%B3n-33-la-paradoja-de-duviri/", + "Date": { "$date": { "$numberLong": "1682527020000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64517606c429f4f85d0f069d" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Nora's Mix Vol. 3 終了日 + Nightwaveの今後について" }], + "Prop": "https://bit.ly/3AJu8HT", + "Date": { "$date": { "$numberLong": "1683060000000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6453f7bf20df842a150d8316" }, + "Messages": [{ "LanguageCode": "en", "Message": "Have your Dojo featured on the Star Chart!" }], + "Prop": "https://forums.warframe.com/topic/1349495-star-chart-dojo-showcase-spring-2023/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Spring-dojo-contest", + "Date": { "$date": { "$numberLong": "1683224460000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6453fc4380fb13ff9a072376" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Now Available: Nova Prime and Trinity Prime" }, + { "LanguageCode": "fr", "Message": "Maintenant disponible : Nova Prime et Trinity Prime" }, + { "LanguageCode": "it", "Message": "Ora Disponibili: Nova Prime e Trinity Prime" }, + { "LanguageCode": "de", "Message": "Jetzt erhältlich: Nova Prime und Trinity Prime" }, + { "LanguageCode": "es", "Message": "Disponible ya: Nova Prime y Trinity Prime" }, + { "LanguageCode": "pt", "Message": "Já Disponível: Nova Prime e Trinity Prime" }, + { "LanguageCode": "ru", "Message": "Уже доступны: Нова Прайм и Тринити Прайм" }, + { "LanguageCode": "pl", "Message": "Już dostępne: Nova Prime i Trinity Prime" }, + { "LanguageCode": "uk", "Message": "Уже доступні: Нова-прайм і Трініті-прайм\t" }, + { "LanguageCode": "tr", "Message": "Şimdi Sizlerle: Nova Prime ve Trinity Prime" }, + { "LanguageCode": "ja", "Message": "Nova PrimeとTrinity Primeをゲットしよう" }, + { "LanguageCode": "zh", "Message": "现已登场:Nova Prime 和 Trinity Prime" }, + { "LanguageCode": "ko", "Message": "지금 바로 구매 가능: 노바 프라임 및 트리니티 프라임" }, + { "LanguageCode": "tc", "Message": "現已登場:Nova Prime 以及 Trinity Prime" } + ], + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-PrimeResurgenceNovaTrinity-Launch", + "Date": { "$date": { "$numberLong": "1683222960000" } }, + "EventEndDate": { "$date": { "$numberLong": "1685937600000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/3dde851b071ff5295e58f24d68b43760_800x450.png", + "Priority": false, + "MobileOnly": false, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "646646aad048b740ec04753c" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Refer a Friend Program Changes" }, + { "LanguageCode": "fr", "Message": "Modification du programme de parrainage" }, + { "LanguageCode": "it", "Message": "Cambiamenti al Programma Riferisci un Amico" }, + { "LanguageCode": "de", "Message": "Programmaktualisierung für 'Freunde rekrutieren'" }, + { "LanguageCode": "es", "Message": "Cambios en el programa \"Refiere a un amigo\"" }, + { "LanguageCode": "pt", "Message": "Mudanças no Programa de Indicação de Amigos" }, + { "LanguageCode": "pl", "Message": "Zmiany programu \"Zaproś Znajomego\"" }, + { "LanguageCode": "uk", "Message": "Зміни в програмі «Запросіть друга»" }, + { "LanguageCode": "tr", "Message": "Arkadaş Daveti Referans Programı Değişiklikleri" }, + { "LanguageCode": "ja", "Message": "お友達紹介プログラム更新" }, + { "LanguageCode": "zh", "Message": "「邀请好友计划」更新" }, + { "LanguageCode": "ko", "Message": "친구 초대 프로그램의 변화" } + ], + "Prop": "https://www.warframe.com/referral", + "Date": { "$date": { "$numberLong": "1684421760000" } }, + "EventStartDate": { "$date": { "$numberLong": "1684393200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fe49a80950256bf393fa2aa0b9303a_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6466726e06ca85f0e202e343" }, + "Messages": [ + { "LanguageCode": "en", "Message": "TennoCon 2023 Digital Pack Now Available" }, + { "LanguageCode": "fr", "Message": "Le Pack Digital TennoCon 2023 est maintenant disponible" }, + { "LanguageCode": "it", "Message": "Il Pacchetto Digitale TennoCon 2023 è Ora Disponibile" }, + { "LanguageCode": "de", "Message": "TennoCon 2023 Digital Paket ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "El Paquete Digital de TennoCon 2023 ya está disponible" }, + { "LanguageCode": "pt", "Message": "O Pacote Digital da TennoCon 2023 já está disponível" }, + { "LanguageCode": "ru", "Message": "Цифровой набор TennoCon-2023 уже доступен" }, + { "LanguageCode": "pl", "Message": "Pakiet Cyfrowy TennoCon 2023 już dostępny" }, + { "LanguageCode": "uk", "Message": "Цифровий набір «Теннокон 2023» уже доступний" }, + { "LanguageCode": "tr", "Message": "TennoCon 2023 Dijital Paketi Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "TennoCon 2023 デジタルパック発売開始" }, + { "LanguageCode": "zh", "Message": "TennoCon 2023 虚拟礼包现已登场" }, + { "LanguageCode": "ko", "Message": "텐노콘 2023 디지털 팩을 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "TennoCon 2023 數位組合包現已登場" } + ], + "Prop": "", + "Links": [ + { "LanguageCode": "en", "Link": "https://www.warframe.com/tennocon" }, + { "LanguageCode": "fr", "Link": "https://www.warframe.com/fr/tennocon" }, + { "LanguageCode": "it", "Link": "https://www.warframe.com/it/tennocon" }, + { "LanguageCode": "de", "Link": "https://www.warframe.com/de/tennocon" }, + { "LanguageCode": "es", "Link": "https://www.warframe.com/es/tennocon" }, + { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/tennocon" }, + { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/tennocon" }, + { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/tennocon" }, + { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/tennocon" }, + { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/tennocon" }, + { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/tennocon" }, + { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/tennocon" }, + { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/tennocon" }, + { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/tennocon" } + ], + "Date": { "$date": { "$numberLong": "1684432080000" } }, + "EventStartDate": { "$date": { "$numberLong": "1684404000000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/tennocon/2023/digital-pack-banner-2x.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64668cd31137f75bf70d0e09" }, + "Messages": [ + { "LanguageCode": "en", "Message": "May in Warframe Roundup" }, + { "LanguageCode": "fr", "Message": "Tour d'horizon du mois de mai dans Warframe" }, + { "LanguageCode": "it", "Message": "Maggio in Warframe: Riepilogo" }, + { "LanguageCode": "de", "Message": "Mai-Zusammenfassung für Warframe" }, + { "LanguageCode": "es", "Message": "Mayo en Warframe: Resumen" }, + { "LanguageCode": "pt", "Message": "Resumo do mês de maio no Warframe" }, + { "LanguageCode": "pl", "Message": "Maj w Warframe" }, + { "LanguageCode": "uk", "Message": "Травнева добірка у Warframe" }, + { "LanguageCode": "tr", "Message": "Mayıs Ayı Warframe Özeti" }, + { "LanguageCode": "ja", "Message": "5月の『Warframe』振り返り" }, + { "LanguageCode": "zh", "Message": "《Warframe》的五月摘要" }, + { "LanguageCode": "ko", "Message": "5월의 워프레임 요약" }, + { "LanguageCode": "tc", "Message": "Warframe 5 月份總結" } + ], + "Prop": "https://www.warframe.com/news/may-in-warframe-roundup?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-MayWarframeRoundup", + "Date": { "$date": { "$numberLong": "1684440240000" } }, + "EventStartDate": { "$date": { "$numberLong": "1684440000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/8f08145f560b43a4cafadc7bb9c5748_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64677ce96fba686c8a06bd24" }, + "Messages": [ + { + "LanguageCode": "en", + "Message": "May 25 Charity Stream: Warframe x Covenant House! Click To Learn More. 6 p.m. EST " + } + ], + "Prop": "https://wrfr.me/chmm23", + "Date": { "$date": { "$numberLong": "1684503360000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6467baa3db8bd174db0b163b" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Pre-order 10 Year Anniversary Merch!" }, + { + "LanguageCode": "fr", + "Message": "Précommandez la Collection de produits dérivés du 10e Anniversaire !" + }, + { "LanguageCode": "it", "Message": "Preordina il Merch per il 10° Anniversario!" }, + { "LanguageCode": "de", "Message": "Bestellt die Merch-Kollektion zum 10. Jubiläum vor!" }, + { "LanguageCode": "es", "Message": "¡Reserva los productos del 10° aniversario!" }, + { "LanguageCode": "pt", "Message": "Faça a pré-encomenda de Produtos do Aniversário de 10 anos!" }, + { "LanguageCode": "pl", "Message": "Zamów w przedsprzedaży gadżety na 10-lecie!" }, + { "LanguageCode": "tr", "Message": "10. Yıl Dönümü Ürünleri için ön siparişini ver!" }, + { "LanguageCode": "ja", "Message": "Warframe 10周年記念グッズを予約購入!" }, + { "LanguageCode": "zh", "Message": "预购十周年纪念周边商品!" }, + { "LanguageCode": "ko", "Message": "10주년 기념 굿즈를 예약 주문하세요!" }, + { "LanguageCode": "tc", "Message": "預購 10 週年紀念周邊商品!" } + ], + "Prop": "https://store.warframe.com/products/10-year-anniversary-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Merch-10year-Collection", + "Date": { "$date": { "$numberLong": "1684519320000" } }, + "EventStartDate": { "$date": { "$numberLong": "1684519200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/81f0ccac0ee2cdfb628a64f9f72d2166_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "646e55122b97d301df08b65a" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第171回のお知らせ" }], + "Prop": "https://bit.ly/426QXR5", + "Date": { "$date": { "$numberLong": "1684952280000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/4e0d4b80256c0b05a5a9643664799beb.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "646e5cc6af17a161c20d79a4" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Nora’s Mix Vol. 4 has begun" }, + { "LanguageCode": "fr", "Message": "Le Mix de Nora Vol. 4 est disponible" }, + { "LanguageCode": "it", "Message": "Mix di Nora Vol. 4 è iniziato" }, + { "LanguageCode": "de", "Message": "Noras Mix - Vol. 4 hat begonnen" }, + { "LanguageCode": "es", "Message": "Comenzó el Mix de Nora Vol. 4" }, + { "LanguageCode": "pt", "Message": "O Mix da Nora Vol. 4 começou" }, + { "LanguageCode": "ru", "Message": "Микс Норы: Диск 4 уже в начался" }, + { "LanguageCode": "pl", "Message": "Składanka Nory cz. 4 już dostępna" }, + { "LanguageCode": "uk", "Message": "Вибірка Нори 4 уже в грі" }, + { "LanguageCode": "tr", "Message": "Nora'nın Derlemesi - 4. Seri şimdi sizlerle" }, + { "LanguageCode": "ja", "Message": "Nora's Mix Vol.4 開催!" }, + { "LanguageCode": "zh", "Message": "《Nora 的混选 Vol. 4》现已开始!" }, + { "LanguageCode": "ko", "Message": "노라의 믹스 Vol. 4가 시작되었습니다" }, + { "LanguageCode": "tc", "Message": "Nora 合輯 VI 已登場" } + ], + "Prop": "https://www.warframe.com/news/noras-mix-vol-4?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-NightwaveVol4Launch", + "Date": { "$date": { "$numberLong": "1684953960000" } }, + "EventStartDate": { "$date": { "$numberLong": "1684951200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/42721390b8812fe65296ce5eee7d862_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "646e6a4cf16914573401c77b" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Nora’nın Derlemesi - 3. Seri Tamamlandı + 4. Seri Sizlerle!" }], + "Prop": "https://forums.warframe.com/topic/1354223-nora%E2%80%99n%C4%B1n-derlemesi-seri-3-tamamland%C4%B1-seri-4-24-may%C4%B1s%E2%80%99ta-sizlerle/", + "Date": { "$date": { "$numberLong": "1684957500000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "646fbefdeaa2199bc406b117" }, + "Messages": [{ "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.11 + Revisión 33.0.12" }], + "Prop": "https://forums.warframe.com/topic/1354406-la-paradoja-de-duviri-revisi%C3%B3n-33011-revisi%C3%B3n-33012/", + "Date": { "$date": { "$numberLong": "1685044920000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6471f7ad49b3f286420543a4" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #171 : version FR" }], + "Prop": "https://forums.warframe.com/topic/1354587-r%C3%A9sum%C3%A9-devstream-171-version-fr/", + "Date": { "$date": { "$numberLong": "1685190540000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.3fa3bb18a3cd29a7ee623ec88bf72429.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6475055203028af6f5076925" }, + "Messages": [{ "LanguageCode": "en", "Message": "The Duviri Paradox: Hotfix 33.0.14" }], + "Prop": "https://www.warframe.com/updates/pc/33-0-14", + "Date": { "$date": { "$numberLong": "1685387100000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "64751514ef6fa74efd0b624e" }, + "Messages": [{ "LanguageCode": "en", "Message": " PSA: Hotfix pause until The 7 Crimes of Kullervo Update" }], + "Prop": "https://forums.warframe.com/topic/1355007-psa-hotfixing-paused-until-the-7-crimes-of-kullervo/", + "Date": { "$date": { "$numberLong": "1685394600000" } }, + "Priority": true, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "647516f0fefde43d790ad0ed" }, + "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #352!" }], + "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", + "Date": { "$date": { "$numberLong": "1685395080000" } }, + "EventStartDate": { "$date": { "$numberLong": "1685656800000" } }, + "EventEndDate": { "$date": { "$numberLong": "1685664000000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframe/", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6475175603028af6f50769e3" }, + "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: Community Stream Schedule May 29 to June 2!" }], + "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", + "Date": { "$date": { "$numberLong": "1685395200000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6475ddac402fe7be5c0f0efb" }, + "Messages": [{ "LanguageCode": "ja", "Message": "5月29日~6月2日の配信スケジュール" }], + "Prop": "https://bit.ly/43eU1f4", + "Date": { "$date": { "$numberLong": "1685446020000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "647624dc351728a45207bd67" }, + "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: Programa de streams de la comunidad" }], + "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", + "Date": { "$date": { "$numberLong": "1685464200000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6476250bedcc8797810215de" }, + "Messages": [{ "LanguageCode": "es", "Message": "¡Emisión Tenno con sorteo de Hildryn Prime Access + Twitch Drop!" }], + "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", + "Date": { "$date": { "$numberLong": "1685464260000" } }, + "EventStartDate": { "$date": { "$numberLong": "1685559600000" } }, + "EventEndDate": { "$date": { "$numberLong": "1685563200000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframeinternational", + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/1c2a55a07ef0fcf121b6b4633b92c060.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "647632c88f764656130e1824" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Streams : 29 mai - 2 juin" }], + "Prop": "https://forums.warframe.com/topic/1355110-streams-communautaires-29-mai-2-juin/", + "Date": { "$date": { "$numberLong": "1685467800000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64764bd4931e7ae47f0d1a60" }, + "Messages": [{ "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.13 + Revisión 33.0.14" }], + "Prop": "https://forums.warframe.com/topic/1355129-la-paradoja-de-duviri-revisi%C3%B3n-33013-revisi%C3%B3n-33014/", + "Date": { "$date": { "$numberLong": "1685474220000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + } + ], + "Goals": [ + { + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1684512000000" } }, + "Expiry": { "$date": { "$numberLong": "1685721600000" } }, + "Node": "SolNode129", + "ScoreVar": "FissuresClosed", + "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", + "Count": 24, + "HealthPct": 0.24, + "Regions": [1], + "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", + "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", + "OptionalInMission": true, + "Tag": "HeatFissure", + "UpgradeIds": [{ "$oid": "64667809d9c6963e382d9546" }, { "$oid": "64667809d9c6963e382d9547" }], + "Personal": true, + "Community": true, + "Goal": 100, + "Reward": { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], + "countedItems": [] + }, + "InterimGoals": [5, 25, 50, 75], + "InterimRewards": [ + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], + "countedItems": [] + }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], + "countedItems": [] + }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], + "countedItems": [] + }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], + "countedItems": [] + } + ] + }, + { + "_id": { "$oid": "64663a0c0483e3f5b70ff0b2" }, + "Activation": { "$date": { "$numberLong": "1684508400000" } }, + "Expiry": { "$date": { "$numberLong": "1685717940000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "ClampNodeScores": true, + "Node": "EventNode27", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2018D", + "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", + "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", + "Tag": "Anniversary2018TacAlert", + "Reward": { + "items": ["/Lotus/StoreItems/Upgrades/Skins/Scarves/DexScarf", "/Lotus/StoreItems/Types/Game/CatbrowPet/CatbrowGeneticSignature"] + } + }, + { + "_id": { "$oid": "64663a3c866d9fe65c012364" }, + "Activation": { "$date": { "$numberLong": "1684508400000" } }, + "Expiry": { "$date": { "$numberLong": "1685717940000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "ClampNodeScores": true, + "Node": "EventNode24", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2023k", + "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", + "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", + "Tag": "Anniversary2018TacAlert", + "Reward": { + "items": ["/Lotus/StoreItems/Upgrades/Skins/Wisp/DexWispSkin", "/Lotus/StoreItems/Types/StoreItems/SlotItems/TwoSentinelSlotItem"] + } + } + ], + "Alerts": [], + "Sorties": [ + { + "_id": { "$oid": "64776b7eba82e08c76d6cb9b" }, + "Activation": { "$date": { "$numberLong": "1685548800000" } }, + "Expiry": { "$date": { "$numberLong": "1685635200000" } }, + "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", + "Seed": 28971, + "Boss": "SORTIE_BOSS_ALAD", + "ExtraDrops": [], + "Variants": [ + { + "missionType": "MT_MOBILE_DEFENSE", + "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", + "node": "SolNode53", + "tileset": "CorpusGasCityTileset" + }, + { + "missionType": "MT_RESCUE", + "modifierType": "SORTIE_MODIFIER_IMPACT", + "node": "SolNode107", + "tileset": "CorpusOutpostTileset" + }, + { + "missionType": "MT_EXTERMINATION", + "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", + "node": "SolNode304", + "tileset": "OrokinMoonTilesetCorpus" + } + ], + "Twitter": true + } + ], + "LiteSorties": [ + { + "_id": { "$oid": "6473e77dfff198b17e47812d" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", + "Seed": 62757, + "Boss": "SORTIE_BOSS_AMAR", + "Missions": [ + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode30" }, + { "missionType": "MT_EXCAVATE", "node": "SolNode11" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } + ] + } + ], + "SyndicateMissions": [ + { + "_id": { "$oid": "64775ff00000000000000002" }, + "Activation": { "$date": { "$numberLong": "1685544944674" } }, + "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "Tag": "EntratiSyndicate", + "Seed": 20831, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [5, 5, 5] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [11, 11, 11] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", + "masteryReq": 5, + "minEnemyLevel": 25, + "maxEnemyLevel": 30, + "endless": true, + "bonusXpMultiplier": 0.15000001, + "xpAmounts": [14, 14, 14] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "masteryReq": 2, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [19, 19, 19, 29] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [20, 20, 20, 20, 39] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [25, 25, 25, 25, 50] + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", + "masteryReq": 5, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [2, 2, 2, 4], + "locationTag": "ChamberB", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [4, 4, 4, 5], + "locationTag": "ChamberA", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", + "masteryReq": 5, + "minEnemyLevel": 50, + "maxEnemyLevel": 60, + "xpAmounts": [5, 5, 5, 7], + "locationTag": "ChamberC", + "isVault": true + } + ] + }, + { + "_id": { "$oid": "64775ff00000000000000022" }, + "Activation": { "$date": { "$numberLong": "1685544944674" } }, + "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "Tag": "SolarisSyndicate", + "Seed": 20831, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [350, 350, 350] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [680, 680, 680] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [610, 610, 610, 890] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [580, 580, 580, 580, 1140] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [680, 680, 680, 680, 1340] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [760, 760, 760, 760, 1500] + } + ] + }, + { + "_id": { "$oid": "64775ff00000000000000007" }, + "Activation": { "$date": { "$numberLong": "1685544944674" } }, + "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "Tag": "CetusSyndicate", + "Seed": 20831, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [420, 420, 420] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [690, 690, 690] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [590, 590, 590, 870] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [550, 550, 550, 550, 1080] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [690, 690, 690, 690, 1350] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [830, 830, 830, 830, 1640] + } + ] + }, + { + "_id": { "$oid": "64775ff00000000000000026" }, + "Activation": { "$date": { "$numberLong": "1685544944674" } }, + "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "Tag": "ZarimanSyndicate", + "Seed": 20831, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4de" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "ArbitersSyndicate", + "Seed": 28971, + "Nodes": ["SolNode36", "SolNode123", "SolNode225", "SolNode709", "SolNode137", "SolNode195", "SolNode81"] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4df" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 25969, + "Nodes": ["SolNode79", "SolNode41", "SettlementNode1", "SolNode132", "SolNode166", "SolNode72", "SolNode23"] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4e0" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 81067, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4e1" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "EventSyndicate", + "Seed": 28897, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4e2" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "KahlSyndicate", + "Seed": 92441, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4e4" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "QuillsSyndicate", + "Seed": 61214, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4e3" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 21393, + "Nodes": ["SolNode68", "SolNode2", "SolNode82", "SolNode217", "SolNode409", "SolNode139", "SolNode75"] + }, + { + "_id": { "$oid": "64776ec5e72990bfd5fea4e5" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "PerrinSyndicate", + "Seed": 72469, + "Nodes": ["SolNode39", "SolNode12", "SolNode146", "SolNode101", "SolNode121", "SolNode408", "SolNode96"] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4e6" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 13526, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4ea" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 20328, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4eb" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 87241, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4ec" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 54438, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4e7" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 20666, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4e9" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 7709, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4e8" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 33027, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4ee" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 21780, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4ef" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 95381, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4ed" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 53091, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4f0" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 60623, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4f1" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 78309, + "Nodes": ["SolNode15", "SolNode106", "SettlementNode3", "SolNode224", "SolNode401", "SolNode76", "SolNode62"] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4f3" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "VoxSyndicate", + "Seed": 52842, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4f2" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 49149, + "Nodes": [] + }, + { + "_id": { "$oid": "64776ec6e72990bfd5fea4f4" }, + "Activation": { "$date": { "$numberLong": "1685548741732" } }, + "Expiry": { "$date": { "$numberLong": "1685635140000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 9289, + "Nodes": ["SolNode130", "SolNode61", "SolNode30", "SolNode10", "SolNode102", "SolNode64", "SolNode50"] + } + ], + "ActiveMissions": [ + { + "_id": { "$oid": "64775c05cab187e046c3d277" }, + "Region": 12, + "Seed": 94704, + "Activation": { "$date": { "$numberLong": "1685543941731" } }, + "Expiry": { "$date": { "$numberLong": "1685550975969" } }, + "Node": "SolNode184", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "647761698afaf76e50461fc8" }, + "Region": 19, + "Seed": 58268, + "Activation": { "$date": { "$numberLong": "1685545321337" } }, + "Expiry": { "$date": { "$numberLong": "1685551434577" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "6477630df698f676b0b32282" }, + "Region": 15, + "Seed": 70123, + "Activation": { "$date": { "$numberLong": "1685545741655" } }, + "Expiry": { "$date": { "$numberLong": "1685550886528" } }, + "Node": "SolNode412", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "6477630df698f676b0b32283" }, + "Region": 9, + "Seed": 15094, + "Activation": { "$date": { "$numberLong": "1685545741655" } }, + "Expiry": { "$date": { "$numberLong": "1685550459337" } }, + "Node": "SolNode56", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "647764ed12544a97c96618a5" }, + "Region": 15, + "Seed": 66090, + "Activation": { "$date": { "$numberLong": "1685546221415" } }, + "Expiry": { "$date": { "$numberLong": "1685553063549" } }, + "Node": "SolNode405", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "647764ed12544a97c96618a6" }, + "Region": 13, + "Seed": 19703, + "Activation": { "$date": { "$numberLong": "1685546221415" } }, + "Expiry": { "$date": { "$numberLong": "1685550448683" } }, + "Node": "SolNode216", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "64776565dc85a669dae19b38" }, + "Region": 3, + "Seed": 90150, + "Activation": { "$date": { "$numberLong": "1685546341763" } }, + "Expiry": { "$date": { "$numberLong": "1685552506487" } }, + "Node": "SolNode89", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64776565dc85a669dae19b39" }, + "Region": 2, + "Seed": 11253, + "Activation": { "$date": { "$numberLong": "1685546341763" } }, + "Expiry": { "$date": { "$numberLong": "1685550810452" } }, + "Node": "SolNode128", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64776655b191713293c08dfe" }, + "Region": 5, + "Seed": 67983, + "Activation": { "$date": { "$numberLong": "1685546581712" } }, + "Expiry": { "$date": { "$numberLong": "1685553220288" } }, + "Node": "SolNode97", + "MissionType": "MT_INTEL", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64776655b191713293c08dff" }, + "Region": 10, + "Seed": 74682, + "Activation": { "$date": { "$numberLong": "1685546581712" } }, + "Expiry": { "$date": { "$numberLong": "1685551010303" } }, + "Node": "SolNode135", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64776655b191713293c08e00" }, + "Region": 6, + "Seed": 15538, + "Activation": { "$date": { "$numberLong": "1685546581712" } }, + "Expiry": { "$date": { "$numberLong": "1685551799194" } }, + "Node": "SolNode18", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64776ec5752b9bd0c871fa7c" }, + "Region": 4, + "Seed": 47626, + "Activation": { "$date": { "$numberLong": "1685548741727" } }, + "Expiry": { "$date": { "$numberLong": "1685553411719" } }, + "Node": "SolNode36", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "647770a68bb595254a64c26e" }, + "Region": 7, + "Seed": 86090, + "Activation": { "$date": { "$numberLong": "1685549222143" } }, + "Expiry": { "$date": { "$numberLong": "1685556263692" } }, + "Node": "SolNode122", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "647770a68bb595254a64c26f" }, + "Region": 13, + "Seed": 39703, + "Activation": { "$date": { "$numberLong": "1685549222143" } }, + "Expiry": { "$date": { "$numberLong": "1685553504151" } }, + "Node": "SolNode212", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "6477720ec9dd724c888eff5b" }, + "Region": 19, + "Seed": 2767, + "Activation": { "$date": { "$numberLong": "1685549582078" } }, + "Expiry": { "$date": { "$numberLong": "1685554300277" } }, + "Node": "SolNode744", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "647772fd22c01cbb6ccb9e7c" }, + "Region": 10, + "Seed": 84581, + "Activation": { "$date": { "$numberLong": "1685549821318" } }, + "Expiry": { "$date": { "$numberLong": "1685554027918" } }, + "Node": "SolNode149", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "647772fd22c01cbb6ccb9e7d" }, + "Region": 16, + "Seed": 50951, + "Activation": { "$date": { "$numberLong": "1685549821318" } }, + "Expiry": { "$date": { "$numberLong": "1685553961019" } }, + "Node": "SettlementNode12", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "647772fd22c01cbb6ccb9e7e" }, + "Region": 5, + "Seed": 37897, + "Activation": { "$date": { "$numberLong": "1685549821318" } }, + "Expiry": { "$date": { "$numberLong": "1685556218772" } }, + "Node": "SolNode73", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT2" + } + ], + "GlobalUpgrades": [], + "FlashSales": [ + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": false, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": true, + "VoidEclipse": false, + "BannerIndex": 999, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "StartDate": { "$date": { "$numberLong": "1661173200000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": false, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": true, + "VoidEclipse": false, + "BannerIndex": 999, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "StartDate": { "$date": { "$numberLong": "1662422400000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": false, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": true, + "VoidEclipse": false, + "BannerIndex": 999, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "StartDate": { "$date": { "$numberLong": "1667347200000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": true, + "Popular": false, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": true, + "VoidEclipse": false, + "BannerIndex": 5, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 80, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 195, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 85, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 430, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 90, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 90, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 95, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 260, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 105, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 20, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 100, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 325, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 110, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 35, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 115, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 80, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "Featured": false, + "Popular": true, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 120, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 165, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693494000000" } }, + "Featured": false, + "Popular": false, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 1, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693440000000" } }, + "Featured": false, + "Popular": false, + "ShowInMarket": true, + "HideFromMarket": false, + "ShowWithRecommended": true, + "SupporterPack": false, + "VoidEclipse": false, + "BannerIndex": 2, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1683828000000" } }, + "EndDate": { "$date": { "$numberLong": "1687110900000" } }, + "DefaultPremium": 1, + "DefaulRegular": 0, + "LocalizedItemName": "FREE WITH PRIME GAMING" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1683828000000" } }, + "EndDate": { "$date": { "$numberLong": "1687110900000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1684432800000" } }, + "EndDate": { "$date": { "$numberLong": "1693504800000" } } + } + ], + "InGameMarket": { + "LandingPage": { + "Categories": [ + { + "CategoryName": "POPULAR", + "Name": "/Lotus/Language/Menu/StorePopular", + "Icon": "popular", + "Items": [ + "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", + "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", + "/Lotus/Types/StoreItems/Packages/WarframeBundles/WolfFrameBundle", + "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/EmberDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/RailjackVoidrigBundle", + "/Lotus/StoreItems/Powersuits/Werewolf/Werewolf", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", + "/Lotus/Types/StoreItems/Packages/FormaPack", + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" + ] + }, + { + "CategoryName": "DUVIRI_PARADOX", + "Name": "/Lotus/Language/Store/Store_DuviriParadox", + "Icon": "duviriparadox", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/WispDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/VoidAdornmentIVBundle", + "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", + "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", + "/Lotus/StoreItems/Upgrades/Skins/Duviri/DuviriSwordTowerShieldSkin", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit1ABundle", + "/Lotus/StoreItems/Weapons/Tenno/Bows/DaxDuviriAsymetricalBow/DaxDuviriAsymmetricalLongBowPlayerWeapon", + "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAetigo", + "/Lotus/Types/StoreItems/Packages/DuviriHorseBundlePsyacus", + "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAccessories", + "/Lotus/Types/StoreItems/Packages/Tattoo/TattooBundleDuviri", + "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" + ] + }, + { + "CategoryName": "TENNOGEN", + "Name": "/Lotus/Language/Menu/Store_Tennogen", + "Icon": "tennogen", + "Items": [ + "/Lotus/StoreItems/Upgrades/Skins/Runner/SWGaussNitrolystSkin", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRetrorolystSyandana", + "/Lotus/StoreItems/Upgrades/Skins/BrokenFrame/SWXakuDeatheaSkin", + "/Lotus/StoreItems/Upgrades/Skins/Sentient/SWCalibanScionHelmet", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWAlocanaSyandana", + "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" + ] + }, + { + "CategoryName": "DUVIRI_CHOICES", + "Name": "/Lotus/Language/Store/Store_DuviriChoices", + "Icon": "duvirichoices", + "AddToMenu": true, + "Items": [] + }, + { + "CategoryName": "PREMIUM_BUNDLES", + "Name": "/Lotus/Language/Store/Store_PremiumBundles", + "Icon": "premiumbundles", + "Items": [ + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", + "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB" + ] + }, + { + "CategoryName": "WISH_LIST", + "Name": "/Lotus/Language/Menu/Store_Wishlist", + "Icon": "wishlist", + "Items": [] + } + ] + } + }, + "Invasions": [ + { + "_id": { "$oid": "6471a5c11c84d8991785ccc1" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode4", + "Count": -35500, + "Goal": 43000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "646e00f1d08856975bb476fe" }, + "AttackerReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] + }, + "AttackerMissionInfo": { "seed": 573551, "faction": "FC_CORPUS" }, + "DefenderReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] + }, + "DefenderMissionInfo": { "seed": 810078, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1685170489276" } } + }, + { + "_id": { "$oid": "64729729ea6b289e0f440b37" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode177", + "Count": -40065, + "Goal": 40000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "646fdcb95a219384bdbbd5f1" }, + "AttackerReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 }] + }, + "AttackerMissionInfo": { "seed": 181914, "faction": "FC_GRINEER" }, + "DefenderReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 }] + }, + "DefenderMissionInfo": { "seed": 197505, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1685232025336" } } + }, + { + "_id": { "$oid": "64764c611959704d82e095f8" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode127", + "Count": -19265, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": false, + "ChainID": { "$oid": "647612f5b75e9d02362f0c6c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 995781, "faction": "FC_CORPUS" }, + "DefenderReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] + }, + "DefenderMissionInfo": { "seed": 978707, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1685474401909" } } + }, + { + "_id": { "$oid": "6476ba8aca0663ae5a22b6bb" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode68", + "Count": -33274, + "Goal": 33000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6476ba8aca0663ae5a22b6bb" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 512950, "faction": "FC_GRINEER" }, + "DefenderReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] + }, + "DefenderMissionInfo": { "seed": 160228, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1685508708793" } } + }, + { + "_id": { "$oid": "647730e50ecf58593d735cb0" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode107", + "Count": -17526, + "Goal": 36000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 640989, "faction": "FC_CORPUS" }, + "DefenderReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] + }, + "DefenderMissionInfo": { "seed": 53442, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1685537906204" } } + }, + { + "_id": { "$oid": "64775e991d3a1c5c0a181494" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode66", + "Count": -1218, + "Goal": 45000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 563164, "faction": "FC_CORPUS" }, + "DefenderReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] + }, + "DefenderMissionInfo": { "seed": 203755, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1685544601696" } } + }, + { + "_id": { "$oid": "64775e991d3a1c5c0a181495" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode22", + "Count": -1490, + "Goal": 36000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 933714, "faction": "FC_CORPUS" }, + "DefenderReward": { + "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] + }, + "DefenderMissionInfo": { "seed": 693132, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1685544601696" } } + } + ], + "HubEvents": [], + "NodeOverrides": [ + { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, + { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, + { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9507716 }, + { + "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, + "Node": "EarthHUB", + "Hide": false, + "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubTwoB", + "Activation": { "$date": { "$numberLong": "1535646600000" } } + }, + { + "_id": { "$oid": "5d24d1f674491d51f8d44473" }, + "Node": "MercuryHUB", + "Hide": true, + "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", + "Activation": { "$date": { "$numberLong": "1563030000000" } } + }, + { + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1684512000000" } }, + "Expiry": { "$date": { "$numberLong": "1685721600000" } }, + "Node": "SolNode129", + "Faction": "FC_CORPUS", + "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] + } + ], + "VoidTraders": [ + { + "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, + "Activation": { "$date": { "$numberLong": "1685710800000" } }, + "Expiry": { "$date": { "$numberLong": "1685883600000" } }, + "Id": "5d1e07a0a38e4a4fdd7cefca", + "Character": "Baro'Ki Teel", + "Node": "SaturnHUB" + } + ], + "PrimeVaultTraders": [ + { + "_id": { "$oid": "631f8c4ac36af423770eaa97" }, + "Activation": { "$date": { "$numberLong": "1683223200000" } }, + "Completed": false, + "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, + "Node": "TradeHUB1", + "Manifest": [ + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaTrinityPrimeDualPack", + "PrimePrice": 10 + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack", + "PrimePrice": 10, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOberonPrimeSinglePack", + "PrimePrice": 6, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosPrimeSinglePack", + "PrimePrice": 6, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTrinityPrimeSinglePack", + "PrimePrice": 6 + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaPrimeSinglePack", + "PrimePrice": 6 + }, + { + "ItemType": "/Lotus/StoreItems/Powersuits/Paladin/PaladinPrime", + "PrimePrice": 3, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeOberonCape", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/SurakaPrimeDangle", + "PrimePrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeSilvaAegis/PrimeSilvaAegis", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSybaris/PrimeSybarisRifle", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Powersuits/Necro/NekrosPrime", + "PrimePrice": 3, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/UruPrimeScarf", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAcanthusPrimeArmorSet", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTigris/PrimeTigris", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeGalatine/PrimeGalatine", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Trinity/TrinityPrime", "PrimePrice": 3 }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVKavasaPrimeKubrowArmor", + "PrimePrice": 2 + }, + { + "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", + "PrimePrice": 1 + }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeDualKamas/PrimeDualKamas", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/AntiMatter/NovaPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEdoPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilFive", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSoma/PrimeSomaRifle", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeVasto/PrimeVastoPistol", "PrimePrice": 2 }, + { + "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OberonPrimeBobbleHead", + "PrimePrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NekrosPrimeBobbleHead", + "PrimePrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NovaPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TrinityPrimeBobbleHead", "PrimePrice": 1 }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultBBronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionOberonNekrosVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultBBronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionOberonNekrosVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1684508400000" } }, + "EndDate": { "$date": { "$numberLong": "1685718000000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNovaTrinityVaultABronze", + "RegularPrice": 1 + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNovaTrinityVaultABronze", + "RegularPrice": 1 + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNovaTrinityVaultABronze", + "RegularPrice": 1 + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNovaTrinityVaultABronze", + "RegularPrice": 1 + } + ], + "Expiry": { "$date": { "$numberLong": "1685718000000" } }, + "EvergreenManifest": [ + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/DualDagger/FangPrimeDagger", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeLex/PrimeLex", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/ShipScenes/PrimeLisetFiligreeScene", "PrimePrice": 1 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAviaPrimeArmorSet", "PrimePrice": 2 }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVayasPrimeAccessories", + "PrimePrice": 2 + }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/TwitchPrimeMeleeDangle", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeAviaSyandana", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeTwitchScarf", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/TwitchPrimeScarf", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/TwitchPrimeSigil", "PrimePrice": 1 }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNecraloidBundle", + "RegularPrice": 10 + }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinTwitchPrime", "RegularPrice": 10 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/InfMembraneCape", "RegularPrice": 10 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PrimeBucks", "RegularPrice": 1 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoidTraceBundle", "RegularPrice": 1 } + ], + "ScheduleInfo": [ + { + "Expiry": { "$date": { "$numberLong": "1667498400000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1669921200000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1672945200000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1668711600000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOberonPrimeSinglePack" + }, + { + "Expiry": { "$date": { "$numberLong": "1675364400000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1671130800000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoltLokiPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1677783600000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1674154800000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtlasVaubanPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1680804000000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1676473200000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1683223200000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1679594400000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMagRhinoPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1685718000000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1682013600000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1688666400000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1684433100000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVInarosAshPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1691085600000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1691085600000" } } + } + ] + } + ], + "VoidStorms": [ + { + "_id": { "$oid": "64775c416894d083a29b8872" }, + "Node": "CrewBattleNode511", + "Activation": { "$date": { "$numberLong": "1685546401825" } }, + "Expiry": { "$date": { "$numberLong": "1685551801825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64775c416894d083a29b8871" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1685546401821" } }, + "Expiry": { "$date": { "$numberLong": "1685551801821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64775c416894d083a29b8874" }, + "Node": "CrewBattleNode521", + "Activation": { "$date": { "$numberLong": "1685546401829" } }, + "Expiry": { "$date": { "$numberLong": "1685551801829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "64775c416894d083a29b8873" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1685546401827" } }, + "Expiry": { "$date": { "$numberLong": "1685551801827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "64775c416894d083a29b8876" }, + "Node": "CrewBattleNode543", + "Activation": { "$date": { "$numberLong": "1685546401834" } }, + "Expiry": { "$date": { "$numberLong": "1685551801834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64775c416894d083a29b8875" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1685546401832" } }, + "Expiry": { "$date": { "$numberLong": "1685551801832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "647765a1dcb87be34e0ce3db" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1685550001821" } }, + "Expiry": { "$date": { "$numberLong": "1685555401821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "647765a1dcb87be34e0ce3de" }, + "Node": "CrewBattleNode524", + "Activation": { "$date": { "$numberLong": "1685550001829" } }, + "Expiry": { "$date": { "$numberLong": "1685555401829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "647765a1dcb87be34e0ce3dd" }, + "Node": "CrewBattleNode535", + "Activation": { "$date": { "$numberLong": "1685550001827" } }, + "Expiry": { "$date": { "$numberLong": "1685555401827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "647765a1dcb87be34e0ce3dc" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1685550001825" } }, + "Expiry": { "$date": { "$numberLong": "1685555401825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "647765a1dcb87be34e0ce3e0" }, + "Node": "CrewBattleNode542", + "Activation": { "$date": { "$numberLong": "1685550001834" } }, + "Expiry": { "$date": { "$numberLong": "1685555401834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "647765a1dcb87be34e0ce3df" }, + "Node": "CrewBattleNode536", + "Activation": { "$date": { "$numberLong": "1685550001832" } }, + "Expiry": { "$date": { "$numberLong": "1685555401832" } }, + "ActiveMissionTier": "VoidT4" + } + ], + "PrimeAccessAvailability": { "State": "PRIME1" }, + "PrimeVaultAvailabilities": [false, false, false, false, false], + "PrimeTokenAvailability": true, + "DailyDeals": [ + { + "StoreItem": "/Lotus/StoreItems/Upgrades/Focus/AttackLensGreater", + "Activation": { "$date": { "$numberLong": "1685480400000" } }, + "Expiry": { "$date": { "$numberLong": "1685574000000" } }, + "Discount": 20, + "OriginalPrice": 40, + "SalePrice": 32, + "AmountTotal": 125, + "AmountSold": 125 + } + ], + "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, + "PVPChallengeInstances": [ + { + "_id": { "$oid": "6470fd0132c7efc24f00caf0" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", + "startDate": { "$date": { "$numberLong": "1685126401676" } }, + "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "6470fd0132c7efc24f00caf1" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", + "startDate": { "$date": { "$numberLong": "1685126401676" } }, + "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "params": [{ "n": "ScriptParamValue", "v": 20 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "6470fd0132c7efc24f00caf2" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1685126401676" } }, + "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "6470fd0132c7efc24f00caf3" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1685126401676" } }, + "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], + "isGenerated": true, + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "6470fd0132c7efc24f00caf0" }, { "$oid": "6470fd0132c7efc24f00caf1" }, { "$oid": "6470fd0132c7efc24f00caf2" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfb8" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfb9" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfbc" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfbb" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfba" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfbf" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsMEDIUM", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfbd" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6477498105719ffc9780dfbe" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsHARD", + "startDate": { "$date": { "$numberLong": "1685539201381" } }, + "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + } + ], + "PersistentEnemies": [], + "PVPAlternativeModes": [], + "PVPActiveTournaments": [], + "ProjectPct": [55.93717913052773, 90.86309625235785, 0], + "ConstructionProjects": [], + "TwitchPromos": [], + "ExperimentRecommended": [], + "EndlessXpChoices": [ + { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, + { "Category": "EXC_HARD", "Choices": ["Zylok", "Sibear", "Dread", "Despair", "Hate"] } + ], + "ForceLogoutVersion": 0, + "FeaturedGuilds": [ + { + "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, + "Name": "Miau after Tomorrow", + "Tier": 1, + "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, + "Emblem": true + }, + { + "_id": { "$oid": "56ab8b2407c56fd145c91aa5" }, + "Name": "Slayers of Darkness", + "Tier": 2, + "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, + "Emblem": true + }, + { + "_id": { "$oid": "57ed05cb08c56ffd67386105" }, + "Name": "Nazaryk", + "Tier": 3, + "AllianceId": { "$oid": "5fdcf602fc5cef2d337800e0" }, + "Emblem": true + }, + { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz", "Tier": 4, "Emblem": true }, + { + "_id": { "$oid": "56d8b39408c56fd89a1799ec" }, + "Name": "Phantom Vanguard", + "Tier": 5, + "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, + "Emblem": true + }, + { + "_id": { "$oid": "54e44a5006c56f7eab0d5aa9" }, + "Name": "Violet Church", + "Tier": 3, + "AllianceId": { "$oid": "56c44d0b08c56f5c367b4665" }, + "Emblem": true + } + ], + "SeasonInfo": { + "Activation": { "$date": { "$numberLong": "1684951200000" } }, + "Expiry": { "$date": { "$numberLong": "1702857600000" } }, + "AffiliationTag": "RadioLegionIntermission8Syndicate", + "Season": 10, + "Phase": 0, + "Params": "", + "ActiveChallenges": [ + { + "_id": { "$oid": "001100020000000000000022" }, + "Daily": true, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685577600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithElectricity" + }, + { + "_id": { "$oid": "001100020000000000000023" }, + "Daily": true, + "Activation": { "$date": { "$numberLong": "1685404800000" } }, + "Expiry": { "$date": { "$numberLong": "1685664000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTransmuteMods" + }, + { + "_id": { "$oid": "001100020000000000000024" }, + "Daily": true, + "Activation": { "$date": { "$numberLong": "1685491200000" } }, + "Expiry": { "$date": { "$numberLong": "1685750400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySolveCiphers" + }, + { + "_id": { "$oid": "001100020000000000000015" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteRescue" + }, + { + "_id": { "$oid": "001100020000000000000016" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteKuva" + }, + { + "_id": { "$oid": "001100020000000000000017" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEximus" + }, + { + "_id": { "$oid": "001100020000000000000018" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPerfectAnimalCapture" + }, + { + "_id": { "$oid": "001100020000000000000019" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUnlockRelics" + }, + { + "_id": { "$oid": "001100020000000000000020" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillEnemies" + }, + { + "_id": { "$oid": "001100020000000000000021" }, + "Activation": { "$date": { "$numberLong": "1685318400000" } }, + "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFastCapture" + } + ] + }, + "Tmp": "{\"sfn\":555}" } -- 2.47.2 From ec95bab507ea58051657dd5c1838120977f89777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Fri, 2 Jun 2023 11:35:14 -0300 Subject: [PATCH 010/522] Better error message when .env file is missing (#9) --- src/services/mongoService.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/mongoService.ts b/src/services/mongoService.ts index 9defba3a..f9a6a044 100644 --- a/src/services/mongoService.ts +++ b/src/services/mongoService.ts @@ -5,9 +5,9 @@ dotenv.config(); const url = process.env.MONGODB_URL; -if (!url) throw new Error("MONGODB_URL not found"); - -console.log("connecting to MongoDB URL:", url); +if (url === undefined) { + throw new Error("MONGODB_URL not found. Make sure you have a .env file in the root of the project!"); +} const connectDatabase = async () => { try { -- 2.47.2 From b3a5479e753463661547b2421d271ba29ee2ba2b Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 4 Jun 2023 03:06:22 +0200 Subject: [PATCH 011/522] Inventory Infrastructure and Example for Suits (#10) --- .eslintrc | 1 - config.json | 12 +- .../api/deleteSessionController.ts | 2 +- src/controllers/api/inventoryController.ts | 26 +- src/controllers/api/loginController.ts | 8 +- src/helpers/inventoryHelpers.ts | 9 + src/models/inventoryModel.ts | 258 ++++ src/services/inventoryService.ts | 25 + src/services/loginService.ts | 3 +- src/types/inventoryTypes.ts | 1232 +++++++++++++++++ static/fixed_responses/getShip.json | 12 +- static/fixed_responses/new_inventory.json | 121 ++ .../postTutorialInventory.json | 145 ++ 13 files changed, 1834 insertions(+), 20 deletions(-) create mode 100644 src/helpers/inventoryHelpers.ts create mode 100644 src/models/inventoryModel.ts create mode 100644 src/services/inventoryService.ts create mode 100644 src/types/inventoryTypes.ts create mode 100644 static/fixed_responses/new_inventory.json create mode 100644 static/fixed_responses/postTutorialInventory.json diff --git a/.eslintrc b/.eslintrc index dc83cd5b..9c2b88f9 100644 --- a/.eslintrc +++ b/.eslintrc @@ -11,7 +11,6 @@ "node": true }, "rules": { - "@typescript-eslint/no-misused-promises": "off", "prettier/prettier": "error", "@typescript-eslint/semi": ["error"], "@typescript-eslint/explicit-function-return-type": "off", diff --git a/config.json b/config.json index d0c662ae..5d15dcf4 100644 --- a/config.json +++ b/config.json @@ -1,7 +1,9 @@ { - "autoCreateAccount": true, - "buildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", - "matchmakingBuildId": "4920386201513015989", - "version": "33.0.14", - "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==" + "autoCreateAccount": true, + "buildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", + "matchmakingBuildId": "4920386201513015989", + "version": "33.0.14", + "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", + "skipStoryModeChoice": true, + "skipTutorial": true } diff --git a/src/controllers/api/deleteSessionController.ts b/src/controllers/api/deleteSessionController.ts index ba062e88..a1dd4167 100644 --- a/src/controllers/api/deleteSessionController.ts +++ b/src/controllers/api/deleteSessionController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; const deleteSessionController: RequestHandler = (_req, res) => { - res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); + res.sendStatus(200); }; export { deleteSessionController }; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 47ba5d25..c7ad069c 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,11 +1,29 @@ -import inventory from "@/static/fixed_responses/inventory.json"; +/* eslint-disable @typescript-eslint/no-misused-promises */ +import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; +import { Inventory } from "@/src/models/inventoryModel"; import { Request, RequestHandler, Response } from "express"; -const inventoryController: RequestHandler = (request: Request, response: Response) => { - console.log(request.query); +const inventoryController: RequestHandler = async (request: Request, response: Response) => { const accountId = request.query.accountId; + + if (!accountId) { + response.status(400).json({ error: "accountId was not provided" }); + return; + } console.log(accountId); - response.json(inventory); + + const inventory = await Inventory.findOne({ accountOwnerId: accountId }); + + if (!inventory) { + response.status(400).json({ error: "inventory was undefined" }); + return; + } + + const inventoryJSON = inventory.toJSON(); + + const inventoreResponse = toInventoryResponse(inventoryJSON); + + response.json(inventoreResponse); }; export { inventoryController }; diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index efaa750a..7819df06 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -13,11 +13,8 @@ const loginController: RequestHandler = async (request, response) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument const body = JSON.parse(request.body); // parse octet stream of json data to json object const loginRequest = toLoginRequest(body); - // console.log(body); - //console.log(String.fromCharCode.apiRouterly(null, req.body)); const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 } - console.log("findone", account); if (!account && config.autoCreateAccount) { try { @@ -32,7 +29,8 @@ const loginController: RequestHandler = async (request, response) => { ConsentNeeded: false, TrackedSettings: [] }); - console.log("CREATED ACCOUNT", newAccount); + console.log("creating new account"); + // eslint-disable-next-line @typescript-eslint/no-unused-vars const { email, password, ...databaseAccount } = newAccount; const newLoginResponse: ILoginResponse = { ...databaseAccount, @@ -47,7 +45,6 @@ const loginController: RequestHandler = async (request, response) => { MatchmakingBuildId: config.matchmakingBuildId }; - console.log(newLoginResponse); response.json(newLoginResponse); return; } catch (error: unknown) { @@ -77,7 +74,6 @@ const loginController: RequestHandler = async (request, response) => { MatchmakingBuildId: config.matchmakingBuildId }; - console.log("login response", newLoginResponse); response.json(newLoginResponse); }; diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts new file mode 100644 index 00000000..7879c007 --- /dev/null +++ b/src/helpers/inventoryHelpers.ts @@ -0,0 +1,9 @@ +import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes"; + +const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { accountOwnerId, ...inventoreResponse } = inventoryDatabase; + return inventoreResponse; +}; + +export { toInventoryResponse }; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts new file mode 100644 index 00000000..bdc2065d --- /dev/null +++ b/src/models/inventoryModel.ts @@ -0,0 +1,258 @@ +import { Document, Schema, model } from "mongoose"; +import { IInventoryDatabase, IInventoryResponse, ISuitDatabase, ISuitDocument, Oid } from "../types/inventoryTypes"; + +const polaritySchema = new Schema({ + Slot: Number, + Value: String +}); + +const abilityOverrideSchema = new Schema({ + Ability: String, + Index: Number +}); + +const colorSchema = new Schema({ + t0: Number, + t1: Number, + t2: Number, + t3: Number, + en: Number, + e1: Number, + m0: Number, + m1: Number +}); + +const suitConfigSchema = new Schema({ + Skins: [String], + pricol: colorSchema, + attcol: colorSchema, + eyecol: colorSchema, + sigcol: colorSchema, + Upgrades: [String], + Songs: [ + { + m: String, + b: String, + p: String, + s: String + } + ], + Name: String, + AbilityOverride: abilityOverrideSchema, + PvpUpgrades: [String], + ugly: Boolean +}); + +suitConfigSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const suitSchema = new Schema({ + ItemType: String, + Configs: [suitConfigSchema], + UpgradeVer: Number, + XP: Number, + InfestationDate: Date, + Features: Number, + Polarity: [polaritySchema], + Polarized: Number, + ModSlotPurchases: Number, + FocusLens: String, + UnlockLevel: Number +}); + +suitSchema.set("toJSON", { + transform(_document, returnedObject: ISuitDocument) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const inventorySchema = new Schema({ + accountOwnerId: Schema.Types.ObjectId, + SubscribedToEmails: Number, + Created: Schema.Types.Mixed, + RewardSeed: Number, + RegularCredits: Number, + PremiumCredits: Number, + PremiumCreditsFree: Number, + FusionPoints: Number, + SuitBin: Schema.Types.Mixed, + WeaponBin: Schema.Types.Mixed, + SentinelBin: Schema.Types.Mixed, + SpaceSuitBin: Schema.Types.Mixed, + SpaceWeaponBin: Schema.Types.Mixed, + PvpBonusLoadoutBin: Schema.Types.Mixed, + PveBonusLoadoutBin: Schema.Types.Mixed, + RandomModBin: Schema.Types.Mixed, + TradesRemaining: Number, + DailyAffiliation: Number, + DailyAffiliationPvp: Number, + DailyAffiliationLibrary: Number, + DailyFocus: Number, + GiftsRemaining: Number, + HandlerPoints: Number, + MiscItems: [Schema.Types.Mixed], + ChallengesFixVersion: Number, + ChallengeProgress: [Schema.Types.Mixed], + RawUpgrades: [Schema.Types.Mixed], + ReceivedStartingGear: Boolean, + Suits: [suitSchema], + LongGuns: [Schema.Types.Mixed], + Pistols: [Schema.Types.Mixed], + Melee: [Schema.Types.Mixed], + Ships: [Schema.Types.Mixed], + QuestKeys: [Schema.Types.Mixed], + FlavourItems: [Schema.Types.Mixed], + Scoops: [Schema.Types.Mixed], + TrainingRetriesLeft: Number, + LoadOutPresets: Schema.Types.Mixed, + CurrentLoadOutIds: [Schema.Types.Mixed], + Missions: [Schema.Types.Mixed], + RandomUpgradesIdentified: Number, + LastRegionPlayed: String, + XPInfo: [Schema.Types.Mixed], + Recipes: [Schema.Types.Mixed], + WeaponSkins: [Schema.Types.Mixed], + PendingRecipes: [Schema.Types.Mixed], + TrainingDate: Schema.Types.Mixed, + PlayerLevel: Number, + Upgrades: [Schema.Types.Mixed], + EquippedGear: [String], + DeathMarks: [String], + FusionTreasures: [Schema.Types.Mixed], + WebFlags: Schema.Types.Mixed, + CompletedAlerts: [String], + Consumables: [Schema.Types.Mixed], + LevelKeys: [Schema.Types.Mixed], + TauntHistory: [Schema.Types.Mixed], + StoryModeChoice: String, + PeriodicMissionCompletions: [Schema.Types.Mixed], + KubrowPetEggs: [Schema.Types.Mixed], + LoreFragmentScans: [Schema.Types.Mixed], + EquippedEmotes: [String], + PendingTrades: [Schema.Types.Mixed], + Boosters: [Schema.Types.Mixed], + ActiveDojoColorResearch: String, + SentientSpawnChanceBoosters: Schema.Types.Mixed, + Affiliations: [Schema.Types.Mixed], + QualifyingInvasions: [Schema.Types.Mixed], + FactionScores: [Number], + SpaceSuits: [Schema.Types.Mixed], + SpaceMelee: [Schema.Types.Mixed], + SpaceGuns: [Schema.Types.Mixed], + ArchwingEnabled: Boolean, + PendingSpectreLoadouts: [Schema.Types.Mixed], + SpectreLoadouts: [Schema.Types.Mixed], + SentinelWeapons: [Schema.Types.Mixed], + Sentinels: [Schema.Types.Mixed], + EmailItems: [Schema.Types.Mixed], + CompletedSyndicates: [String], + FocusXP: Schema.Types.Mixed, + Wishlist: [String], + Alignment: Schema.Types.Mixed, + CompletedSorties: [String], + LastSortieReward: [Schema.Types.Mixed], + Drones: [Schema.Types.Mixed], + StepSequencers: [Schema.Types.Mixed], + ActiveAvatarImageType: String, + KubrowPets: [Schema.Types.Mixed], + ShipDecorations: [Schema.Types.Mixed], + OperatorAmpBin: Schema.Types.Mixed, + DailyAffiliationCetus: Number, + DailyAffiliationQuills: Number, + DiscoveredMarkers: [Schema.Types.Mixed], + CompletedJobs: [Schema.Types.Mixed], + FocusAbility: String, + FocusUpgrades: [Schema.Types.Mixed], + OperatorAmps: [Schema.Types.Mixed], + HasContributedToDojo: Boolean, + HWIDProtectEnabled: Boolean, + KubrowPetPrints: [Schema.Types.Mixed], + AlignmentReplay: Schema.Types.Mixed, + PersonalGoalProgress: [Schema.Types.Mixed], + DailyAffiliationSolaris: Number, + SpecialItems: [Schema.Types.Mixed], + ThemeStyle: String, + ThemeBackground: String, + ThemeSounds: String, + BountyScore: Number, + ChallengeInstanceStates: [Schema.Types.Mixed], + LoginMilestoneRewards: [String], + OperatorLoadOuts: [Schema.Types.Mixed], + DailyAffiliationVentkids: Number, + DailyAffiliationVox: Number, + RecentVendorPurchases: [Schema.Types.Mixed], + Hoverboards: [Schema.Types.Mixed], + NodeIntrosCompleted: [String], + CompletedJobChains: [Schema.Types.Mixed], + SeasonChallengeHistory: [Schema.Types.Mixed], + MoaPets: [Schema.Types.Mixed], + EquippedInstrument: String, + InvasionChainProgress: [Schema.Types.Mixed], + DataKnives: [Schema.Types.Mixed], + NemesisHistory: [Schema.Types.Mixed], + LastNemesisAllySpawnTime: Schema.Types.Mixed, + Settings: Schema.Types.Mixed, + PersonalTechProjects: [Schema.Types.Mixed], + CrewShips: [Schema.Types.Mixed], + CrewShipSalvageBin: Schema.Types.Mixed, + PlayerSkills: Schema.Types.Mixed, + CrewShipAmmo: [Schema.Types.Mixed], + CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed], + CrewShipWeapons: [Schema.Types.Mixed], + CrewShipSalvagedWeapons: [Schema.Types.Mixed], + CrewShipWeaponSkins: [Schema.Types.Mixed], + TradeBannedUntil: Schema.Types.Mixed, + PlayedParkourTutorial: Boolean, + SubscribedToEmailsPersonalized: Number, + MechBin: Schema.Types.Mixed, + DailyAffiliationEntrati: Number, + DailyAffiliationNecraloid: Number, + MechSuits: [Schema.Types.Mixed], + InfestedFoundry: Schema.Types.Mixed, + BlessingCooldown: Schema.Types.Mixed, + CrewMemberBin: Schema.Types.Mixed, + CrewShipHarnesses: [Schema.Types.Mixed], + CrewShipRawSalvage: [Schema.Types.Mixed], + CrewMembers: [Schema.Types.Mixed], + AdultOperatorLoadOuts: [Schema.Types.Mixed], + LotusCustomization: Schema.Types.Mixed, + UseAdultOperatorLoadout: Boolean, + DailyAffiliationZariman: Number, + NemesisAbandonedRewards: [String], + DailyAffiliationKahl: Number, + LastInventorySync: Schema.Types.Mixed, + NextRefill: Schema.Types.Mixed, + ActiveLandscapeTraps: [Schema.Types.Mixed], + EvolutionProgress: [Schema.Types.Mixed], + RepVotes: [Schema.Types.Mixed], + LeagueTickets: [Schema.Types.Mixed], + Quests: [Schema.Types.Mixed], + Robotics: [Schema.Types.Mixed], + UsedDailyDeals: [Schema.Types.Mixed], + LibraryPersonalProgress: [Schema.Types.Mixed], + CollectibleSeries: [Schema.Types.Mixed], + LibraryAvailableDailyTaskInfo: Schema.Types.Mixed, + HasResetAccount: Boolean, + PendingCoupon: Schema.Types.Mixed, + Harvestable: Boolean, + DeathSquadable: Boolean +}); + +inventorySchema.set("toJSON", { + transform(_document, returnedObject: ISuitDocument) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const Suit = model("Suit", suitSchema); +const Inventory = model("Inventory", inventorySchema); + +export { Inventory, Suit }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts new file mode 100644 index 00000000..36f49d06 --- /dev/null +++ b/src/services/inventoryService.ts @@ -0,0 +1,25 @@ +import { Inventory } from "@/src/models/inventoryModel"; +import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; +import config from "@/config.json"; +import { Types } from "mongoose"; + +const createInventory = async (accountOwnerId: Types.ObjectId) => { + try { + const inventory = new Inventory({ ...new_inventory, accountOwnerId: accountOwnerId }); + if (config.skipStoryModeChoice) { + inventory.StoryModeChoice = "WARFRAME"; + } + if (config.skipTutorial) { + inventory.PlayedParkourTutorial = true; + inventory.ReceivedStartingGear = true; + } + await inventory.save(); + } catch (error) { + if (error instanceof Error) { + throw new Error(`error creating inventory" ${error.message}`); + } + throw new Error("error creating inventory that is not of instance Error"); + } +}; + +export { createInventory }; diff --git a/src/services/loginService.ts b/src/services/loginService.ts index 8e5d1da2..c110d491 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -1,4 +1,5 @@ import { Account } from "@/src/models/loginModel"; +import { createInventory } from "@/src/services/inventoryService"; import { IDatabaseAccount } from "@/src/types/loginTypes"; const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => { @@ -6,10 +7,10 @@ const isCorrectPassword = (requestPassword: string, databasePassword: string): b }; const createAccount = async (accountData: IDatabaseAccount) => { - console.log("test", accountData); const account = new Account(accountData); try { await account.save(); + await createInventory(account._id); return account.toJSON(); } catch (error) { if (error instanceof Error) { diff --git a/src/types/inventoryTypes.ts b/src/types/inventoryTypes.ts new file mode 100644 index 00000000..70bac7ce --- /dev/null +++ b/src/types/inventoryTypes.ts @@ -0,0 +1,1232 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import { Document, Types } from "mongoose"; + +export interface IInventoryDatabase extends IInventoryResponse { + accountOwnerId: Types.ObjectId; +} + +export interface IInventoryResponse { + SubscribedToEmails: number; + Created: Date; + RewardSeed: number; + RegularCredits: number; + PremiumCredits: number; + PremiumCreditsFree: number; + FusionPoints: number; + SuitBin: CrewShipSalvageBinClass; + WeaponBin: CrewShipSalvageBinClass; + SentinelBin: CrewShipSalvageBinClass; + SpaceSuitBin: CrewShipSalvageBinClass; + SpaceWeaponBin: CrewShipSalvageBinClass; + PvpBonusLoadoutBin: CrewMemberBinClass; + PveBonusLoadoutBin: CrewShipSalvageBinClass; + RandomModBin: CrewShipSalvageBinClass; + TradesRemaining: number; + DailyAffiliation: number; + DailyAffiliationPvp: number; + DailyAffiliationLibrary: number; + DailyFocus: number; + GiftsRemaining: number; + HandlerPoints: number; + MiscItems: Consumable[]; + ChallengesFixVersion: number; + ChallengeProgress: ChallengeProgress[]; + RawUpgrades: RawUpgrade[]; + ReceivedStartingGear: boolean; + Suits: ISuitDatabase[]; + LongGuns: LongGun[]; + Pistols: LongGun[]; + Melee: Melee[]; + Ships: Ship[]; + QuestKeys: QuestKey[]; + FlavourItems: FlavourItem[]; + Scoops: Scoop[]; + TrainingRetriesLeft: number; + LoadOutPresets: LoadOutPresets; + CurrentLoadOutIds: Array; + Missions: Mission[]; + RandomUpgradesIdentified: number; + LastRegionPlayed: string; + XPInfo: EmailItem[]; + Recipes: Consumable[]; + WeaponSkins: WeaponSkin[]; + PendingRecipes: PendingRecipe[]; + TrainingDate: Date; + PlayerLevel: number; + Upgrades: CrewShipSalvagedWeaponSkin[]; + EquippedGear: string[]; + DeathMarks: string[]; + FusionTreasures: FusionTreasure[]; + WebFlags: WebFlags; + CompletedAlerts: string[]; + Consumables: Consumable[]; + LevelKeys: Consumable[]; + TauntHistory: TauntHistory[]; + StoryModeChoice: string; + PeriodicMissionCompletions: PeriodicMissionCompletion[]; + KubrowPetEggs: KubrowPetEgg[]; + LoreFragmentScans: LoreFragmentScan[]; + EquippedEmotes: string[]; + PendingTrades: PendingTrade[]; + Boosters: Booster[]; + ActiveDojoColorResearch: string; + SentientSpawnChanceBoosters: SentientSpawnChanceBoosters; + Affiliations: Affiliation[]; + QualifyingInvasions: any[]; + FactionScores: number[]; + SpaceSuits: Space[]; + SpaceMelee: Space[]; + SpaceGuns: SpaceGun[]; + ArchwingEnabled: boolean; + PendingSpectreLoadouts: any[]; + SpectreLoadouts: SpectreLoadout[]; + SentinelWeapons: SentinelWeapon[]; + Sentinels: Sentinel[]; + EmailItems: EmailItem[]; + CompletedSyndicates: string[]; + FocusXP: FocusXP; + Wishlist: string[]; + Alignment: Alignment; + CompletedSorties: string[]; + LastSortieReward: LastSortieReward[]; + Drones: Drone[]; + StepSequencers: StepSequencer[]; + ActiveAvatarImageType: string; + KubrowPets: KubrowPet[]; + ShipDecorations: Consumable[]; + OperatorAmpBin: CrewShipSalvageBinClass; + DailyAffiliationCetus: number; + DailyAffiliationQuills: number; + DiscoveredMarkers: DiscoveredMarker[]; + CompletedJobs: CompletedJob[]; + FocusAbility: string; + FocusUpgrades: FocusUpgrade[]; + OperatorAmps: OperatorAmp[]; + HasContributedToDojo: boolean; + HWIDProtectEnabled: boolean; + KubrowPetPrints: KubrowPetPrint[]; + AlignmentReplay: Alignment; + PersonalGoalProgress: PersonalGoalProgress[]; + DailyAffiliationSolaris: number; + SpecialItems: SpecialItem[]; + ThemeStyle: string; + ThemeBackground: string; + ThemeSounds: string; + BountyScore: number; + ChallengeInstanceStates: ChallengeInstanceState[]; + LoginMilestoneRewards: string[]; + OperatorLoadOuts: OperatorLoadOut[]; + DailyAffiliationVentkids: number; + DailyAffiliationVox: number; + RecentVendorPurchases: Array; + Hoverboards: Hoverboard[]; + NodeIntrosCompleted: string[]; + CompletedJobChains: CompletedJobChain[]; + SeasonChallengeHistory: SeasonChallengeHistory[]; + MoaPets: MoaPet[]; + EquippedInstrument: string; + InvasionChainProgress: InvasionChainProgress[]; + DataKnives: DataKnife[]; + NemesisHistory: NemesisHistory[]; + LastNemesisAllySpawnTime: Date; + Settings: Settings; + PersonalTechProjects: PersonalTechProject[]; + CrewShips: CrewShip[]; + CrewShipSalvageBin: CrewShipSalvageBinClass; + PlayerSkills: PlayerSkills; + CrewShipAmmo: Consumable[]; + CrewShipSalvagedWeaponSkins: CrewShipSalvagedWeaponSkin[]; + CrewShipWeapons: CrewShipWeapon[]; + CrewShipSalvagedWeapons: CrewShipWeapon[]; + CrewShipWeaponSkins: CrewShipSalvagedWeaponSkin[]; + TradeBannedUntil: Date; + PlayedParkourTutorial: boolean; + SubscribedToEmailsPersonalized: number; + MechBin: CrewMemberBinClass; + DailyAffiliationEntrati: number; + DailyAffiliationNecraloid: number; + MechSuits: MechSuit[]; + InfestedFoundry: InfestedFoundry; + BlessingCooldown: Date; + CrewMemberBin: CrewMemberBinClass; + CrewShipHarnesses: CrewShipHarness[]; + CrewShipRawSalvage: Consumable[]; + CrewMembers: CrewMember[]; + AdultOperatorLoadOuts: AdultOperatorLoadOut[]; + LotusCustomization: LotusCustomization; + UseAdultOperatorLoadout: boolean; + DailyAffiliationZariman: number; + NemesisAbandonedRewards: string[]; + DailyAffiliationKahl: number; + LastInventorySync: Oid; + NextRefill: Date; + ActiveLandscapeTraps: any[]; + EvolutionProgress: any[]; + RepVotes: any[]; + LeagueTickets: any[]; + Quests: any[]; + Robotics: any[]; + UsedDailyDeals: any[]; + LibraryPersonalProgress: LibraryPersonalProgress[]; + CollectibleSeries: CollectibleSery[]; + LibraryAvailableDailyTaskInfo: LibraryAvailableDailyTaskInfo; + HasResetAccount: boolean; + PendingCoupon: PendingCoupon; + Harvestable: boolean; + DeathSquadable: boolean; +} + +export interface AdultOperatorLoadOut { + Skins: string[]; + attcol: Color; + eyecol: Color; + facial: Color; + pricol: Color; + Upgrades?: string[]; + ItemId: Oid; +} + +export interface Oid { + $oid: string; +} + +export interface Color { + t0?: number; + t1?: number; + t2?: number; + t3?: number; + en?: number; + e1?: number; + m0?: number; + m1?: number; +} + +export interface Affiliation { + Initiated?: boolean; + Standing: number; + Title?: number; + FreeFavorsEarned?: number[]; + FreeFavorsUsed?: number[]; + Tag: string; +} + +export interface Alignment { + Wisdom: number; + Alignment: number; +} + +export interface Date { + $date: { $numberLong: string }; +} + +export interface Booster { + ExpiryDate: number; + ItemType: string; +} + +export interface ChallengeInstanceState { + id: Oid; + Progress: number; + params: Param[]; + IsRewardCollected: boolean; +} + +export interface Param { + n: string; + v: string; +} + +export interface ChallengeProgress { + Progress: number; + Name: string; + Completed?: string[]; +} + +export interface CollectibleSery { + CollectibleType: string; + Count: number; + Tracking: string; + ReqScans: number; + IncentiveStates: IncentiveState[]; +} + +export interface IncentiveState { + threshold: number; + complete: boolean; + sent: boolean; +} + +export interface CompletedJobChain { + LocationTag: string; + Jobs: string[]; +} + +export interface CompletedJob { + JobId: string; + StageCompletions: number[]; +} + +export interface Consumable { + ItemCount: number; + ItemType: string; +} + +export interface CrewMemberBinClass { + Slots: number; +} + +export interface CrewMember { + ItemType: string; + NemesisFingerprint: number; + Seed: number; + HireDate: Date; + AssignedRole: number; + SkillEfficiency: SkillEfficiency; + WeaponConfigIdx: number; + WeaponId: Oid; + XP: number; + PowersuitType: string; + Configs: CrewMemberConfig[]; + SecondInCommand: boolean; + ItemId: Oid; +} + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface CrewMemberConfig {} + +export interface SkillEfficiency { + PILOTING: Combat; + GUNNERY: Combat; + ENGINEERING: Combat; + COMBAT: Combat; + SURVIVABILITY: Combat; +} + +export interface Combat { + Assigned: number; +} + +export interface CrewShipHarness { + ItemType: string; + Configs: CrewShipHarnessConfig[]; + Features: number; + UpgradeVer: number; + XP: number; + Polarity: Polarity[]; + Polarized: number; + ItemId: Oid; +} + +export interface CrewShipHarnessConfig { + Upgrades?: string[]; +} + +export interface Polarity { + Slot: number; + Value: FocusSchool; +} + +export enum FocusSchool { + ApAny = "AP_ANY", + ApAttack = "AP_ATTACK", + ApDefense = "AP_DEFENSE", + ApPower = "AP_POWER", + ApPrecept = "AP_PRECEPT", + ApTactic = "AP_TACTIC", + ApUmbra = "AP_UMBRA", + ApUniversal = "AP_UNIVERSAL", + ApWard = "AP_WARD" +} + +export interface CrewShipSalvageBinClass { + Extra: number; + Slots: number; +} + +export interface CrewShipSalvagedWeaponSkin { + ItemType: string; + UpgradeFingerprint?: string; + ItemId: Oid; +} + +export interface CrewShipWeapon { + ItemType: string; + UpgradeType?: string; + UpgradeFingerprint?: string; + Configs?: CrewShipHarnessConfig[]; + UpgradeVer?: number; + ItemId: Oid; +} + +export interface CrewShip { + ItemType: string; + Configs: CrewShipConfig[]; + Weapon: Weapon; + Customization: Customization; + ItemName: string; + RailjackImage: FlavourItem; + CrewMembers: CrewMembers; + ItemId: Oid; +} + +export interface CrewShipConfig { + Skins?: string[]; + pricol?: Color; +} + +export interface CrewMembers { + SLOT_A: Slot; + SLOT_B: Slot; + SLOT_C: Slot; +} + +export interface Slot { + ItemId: Oid; +} + +export interface Customization { + CrewshipInterior: Terior; +} + +export interface Terior { + SkinFlavourItem: string; + Colors: Color; + ShipAttachments?: ShipAttachments; +} + +export interface ShipAttachments { + HOOD_ORNAMENT: string; +} + +export interface FlavourItem { + ItemType: string; +} + +export interface Weapon { + PILOT: Pilot; + PORT_GUNS: PortGuns; +} + +export interface Pilot { + PRIMARY_A: L; + SECONDARY_A: L; +} + +export interface L { + ItemId?: Oid; + mod?: number; + cus?: number; + ItemType?: string; + hide?: boolean; +} + +export interface PortGuns { + PRIMARY_A: L; +} + +export interface DataKnife { + ItemType: string; + XP: number; + Configs: DataKnifeConfig[]; + UpgradeVer: number; + ItemId: Oid; +} + +export interface DataKnifeConfig { + Upgrades?: string[]; + pricol?: Color; + Skins: string[]; + attcol?: Color; + sigcol?: Color; +} + +export interface DiscoveredMarker { + tag: string; + discoveryState: number[]; +} + +export interface Drone { + ItemType: string; + CurrentHP: number; + ItemId: Oid; + RepairStart?: Date; +} + +export interface EmailItem { + ItemType: string; + XP: number; +} + +export interface FocusUpgrade { + ItemType: string; + Level?: number; + IsUniversal?: boolean; +} + +export interface FocusXP { + AP_POWER: number; + AP_TACTIC: number; + AP_DEFENSE: number; + AP_ATTACK: number; + AP_WARD: number; +} + +export interface FusionTreasure { + ItemCount: number; + ItemType: string; + Sockets: number; +} + +export interface Hoverboard { + ItemType: string; + Configs: HoverboardConfig[]; + ModularParts: string[]; + ItemName?: string; + Polarity?: Polarity[]; + UpgradeVer: number; + XP: number; + Features: number; + ItemId: Oid; +} + +export interface HoverboardConfig { + Upgrades?: string[]; + Skins?: PurpleSkin[]; + pricol?: Color; + sigcol?: Sigcol; + attcol?: Color; +} + +export enum PurpleSkin { + Empty = "", + The5Be4Af71A38E4A9306040E15 = "5be4af71a38e4a9306040e15", + The5C930Ac3A38E4A24Bc3Ad5De = "5c930ac3a38e4a24bc3ad5de", + The5C9C6F9857904A7A3B25656B = "5c9c6f9857904a7a3b25656b", + The5Dd8A8E3A38E4A321A45E6A0 = "5dd8a8e3a38e4a321a45e6a0" +} + +export interface Sigcol { + t3: number; +} + +export interface InfestedFoundry { + Name: string; + Resources: Resource[]; + Slots: number; + XP: number; + ConsumedSuits: ConsumedSuit[]; + InvigorationIndex: number; + InvigorationSuitOfferings: string[]; + InvigorationsApplied: number; +} + +export interface ConsumedSuit { + s: string; + c?: Color; +} + +export interface Resource { + ItemType: string; + Count: number; +} + +export interface InvasionChainProgress { + id: Oid; + count: number; +} + +export interface KubrowPetEgg { + ItemType: KubrowPetEggItemType; + ExpirationDate: Date; + ItemId: Oid; +} + +export enum KubrowPetEggItemType { + LotusTypesGameKubrowPetEggsKubrowEgg = "/Lotus/Types/Game/KubrowPet/Eggs/KubrowEgg" +} + +export interface KubrowPetPrint { + ItemType: KubrowPetPrintItemType; + Name: string; + IsMale: boolean; + Size: number; + DominantTraits: Traits; + RecessiveTraits: Traits; + ItemId: Oid; + InheritedModularParts?: any[]; +} + +export interface Traits { + BaseColor: string; + SecondaryColor: string; + TertiaryColor: string; + AccentColor: string; + EyeColor: string; + FurPattern: string; + Personality: string; + BodyType: string; + Head?: string; + Tail?: Tail; +} + +export enum Tail { + Empty = "", + LotusTypesGameCatbrowPetTailsCatbrowTailA = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailA", + LotusTypesGameCatbrowPetTailsCatbrowTailB = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailB", + LotusTypesGameCatbrowPetTailsCatbrowTailC = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailC", + LotusTypesGameCatbrowPetTailsCatbrowTailD = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailD" +} + +export enum KubrowPetPrintItemType { + LotusTypesGameKubrowPetImprintedTraitPrint = "/Lotus/Types/Game/KubrowPet/ImprintedTraitPrint" +} + +export interface KubrowPet { + ItemType: string; + Configs: KubrowPetConfig[]; + UpgradeVer: number; + Details: Details; + XP?: number; + Polarized?: number; + Polarity?: Polarity[]; + Features?: number; + InfestationDate?: Date; + InfestationDays?: number; + InfestationType?: string; + ItemId: Oid; + ModularParts?: string[]; +} + +export interface KubrowPetConfig { + Skins?: string[]; + pricol?: Color; + attcol?: Color; + Upgrades?: string[]; +} + +export interface Details { + Name: string; + IsPuppy: boolean; + HasCollar: boolean; + PrintsRemaining: number; + Status: Status; + HatchDate: Date; + DominantTraits: Traits; + RecessiveTraits: Traits; + IsMale: boolean; + Size: number; +} + +export enum Status { + StatusAvailable = "STATUS_AVAILABLE", + StatusStasis = "STATUS_STASIS" +} + +export interface LastSortieReward { + SortieId: Oid; + StoreItem: string; + Manifest: string; +} + +export interface LibraryAvailableDailyTaskInfo { + EnemyTypes: string[]; + EnemyLocTag: string; + EnemyIcon: string; + ScansRequired: number; + RewardStoreItem: string; + RewardQuantity: number; + RewardStanding: number; +} + +export interface LibraryPersonalProgress { + TargetType: string; + Scans: number; + Completed: boolean; +} + +export interface LoadOutPresets { + NORMAL: Normal[]; + NORMAL_PVP: Archwing[]; + LUNARO: Lunaro[]; + ARCHWING: Archwing[]; + SENTINEL: Archwing[]; + OPERATOR: Archwing[]; + GEAR: Gear[]; + KDRIVE: Kdrive[]; + DATAKNIFE: Archwing[]; + MECH: Mech[]; + OPERATOR_ADULT: Archwing[]; +} + +export interface Archwing { + PresetIcon: string; + Favorite: boolean; + n?: string; + s: L; + l?: L; + m?: L; + ItemId: Oid; + p?: L; +} + +export interface Gear { + n: string; + s: L; + p: L; + l: L; + m: L; + ItemId: Oid; +} + +export interface Kdrive { + PresetIcon: string; + Favorite: boolean; + s: L; + ItemId: Oid; +} + +export interface Lunaro { + n: string; + s: L; + m: L; + ItemId: Oid; +} + +export interface Mech { + PresetIcon: string; + Favorite: boolean; + s: L; + h: L; + a: L; + ItemId: Oid; +} + +export interface Normal { + FocusSchool: FocusSchool; + PresetIcon: string; + Favorite: boolean; + n: string; + s: L; + p: L; + l: L; + m: L; + h: L; + a?: L; + ItemId: Oid; +} + +export interface LongGun { + ItemType: string; + Configs: LongGunConfig[]; + UpgradeVer?: number; + XP?: number; + Features?: number; + ItemId: Oid; + Polarized?: number; + Polarity?: Polarity[]; + FocusLens?: string; + ModSlotPurchases?: number; + UpgradeType?: UpgradeType; + UpgradeFingerprint?: string; + ItemName?: string; + ModularParts?: string[]; + UnlockLevel?: number; +} + +export interface LongGunConfig { + Upgrades?: string[]; + Skins?: string[]; + pricol?: Color; + attcol?: Color; + PvpUpgrades?: string[]; + Name?: string; +} + +export enum UpgradeType { + LotusWeaponsGrineerKuvaLichUpgradesInnateDamageRandomMod = "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" +} + +export interface LoreFragmentScan { + Progress: number; + Region?: string; + ItemType: string; +} + +export interface LotusCustomization { + Upgrades: any[]; + PvpUpgrades: any[]; + Skins: string[]; + pricol: Color; + attcol: any[]; + sigcol: any[]; + eyecol: any[]; + facial: any[]; + Songs: any[]; + Persona: string; +} + +export interface MechSuit { + ItemType: string; + Configs: DataKnifeConfig[]; + Features: number; + UpgradeVer: number; + XP: number; + Polarity: Polarity[]; + Polarized: number; + ItemId: Oid; +} + +export interface Melee { + ItemType: string; + Configs: MeleeConfig[]; + UpgradeVer?: number; + XP?: number; + Features?: number; + Polarity?: Polarity[]; + Polarized?: number; + ModSlotPurchases?: number; + ItemId: Oid; + FocusLens?: string; + ModularParts?: string[]; + ItemName?: string; + UpgradeType?: UpgradeType; + UpgradeFingerprint?: string; + UnlockLevel?: number; +} + +export interface MeleeConfig { + Skins?: string[]; + pricol?: Color; + Upgrades?: string[]; + attcol?: Color; + eyecol?: OperatorLoadOutSigcol; + Name?: string; + PvpUpgrades?: string[]; +} + +export interface OperatorLoadOutSigcol { + t0?: number; + t1?: number; + en?: number; +} + +export interface Mission { + Completes: number; + Tier?: number; + Tag: string; + RewardsCooldownTime?: Date; +} + +export interface MoaPet { + ItemType: string; + Configs: KubrowPetConfig[]; + UpgradeVer: number; + ModularParts: string[]; + XP?: number; + Features?: number; + ItemName: string; + Polarity?: Polarity[]; + ItemId: Oid; +} + +export interface NemesisHistory { + fp: number; + manifest: Manifest; + KillingSuit: string; + killingDamageType: number; + ShoulderHelmet: string; + AgentIdx: number; + BirthNode: BirthNode; + Rank: number; + k: boolean; + d: Date; + GuessHistory?: number[]; + currentGuess?: number; + Traded?: boolean; + PrevOwners?: number; + SecondInCommand?: boolean; + Faction?: string; + Weakened?: boolean; +} + +export enum BirthNode { + SolNode181 = "SolNode181", + SolNode4 = "SolNode4", + SolNode70 = "SolNode70", + SolNode76 = "SolNode76" +} + +export enum Manifest { + LotusTypesEnemiesCorpusLawyersLawyerManifest = "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerManifest", + LotusTypesGameNemesisKuvaLichKuvaLichManifest = "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifest", + LotusTypesGameNemesisKuvaLichKuvaLichManifestVersionThree = "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionThree", + LotusTypesGameNemesisKuvaLichKuvaLichManifestVersionTwo = "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionTwo" +} + +export interface OperatorAmp { + ItemType: string; + Configs: KubrowPetConfig[]; + ModularParts?: string[]; + XP?: number; + UpgradeVer?: number; + ItemName?: string; + Features?: number; + ItemId: Oid; +} + +export interface OperatorLoadOut { + Skins: string[]; + pricol?: Color; + attcol?: Color; + eyecol: Color; + facial?: Color; + sigcol?: OperatorLoadOutSigcol; + OperatorAmp?: Oid; + Upgrades?: string[]; + AbilityOverride: AbilityOverride; + ItemId: Oid; +} + +export interface AbilityOverride { + Ability: string; + Index: number; +} + +export interface PendingCoupon { + Expiry: Date; + Discount: number; +} + +export interface PendingRecipe { + ItemType: string; + CompletionDate: Date; + ItemId: Oid; +} + +export interface PendingTrade { + State: number; + SelfReady: boolean; + BuddyReady: boolean; + Giving?: Giving; + Revision: number; + Getting: Getting; + ItemId: Oid; + ClanTax?: number; +} + +export interface Getting { + RandomUpgrades?: RandomUpgrade[]; + _SlotOrderInfo: GettingSlotOrderInfo[]; + PremiumCredits?: number; +} + +export interface RandomUpgrade { + UpgradeFingerprint: UpgradeFingerprint; + ItemType: string; + ItemId: Oid; +} + +export interface UpgradeFingerprint { + compat: string; + lim: number; + lvlReq: number; + pol: FocusSchool; + buffs: Buff[]; + curses: Buff[]; +} + +export interface Buff { + Tag: string; + Value: number; +} + +export enum GettingSlotOrderInfo { + Empty = "", + LotusUpgradesModsRandomizedPlayerMeleeWeaponRandomModRare0 = "/Lotus/Upgrades/Mods/Randomized/PlayerMeleeWeaponRandomModRare:0", + P = "P" +} + +export interface Giving { + RawUpgrades: Consumable[]; + _SlotOrderInfo: GivingSlotOrderInfo[]; +} + +export enum GivingSlotOrderInfo { + Empty = "", + LotusTypesSentinelsSentinelPreceptsItemVacum = "/Lotus/Types/Sentinels/SentinelPrecepts/ItemVacum", + LotusUpgradesModsPistolDualStatElectEventPistolMod = "/Lotus/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod" +} + +export interface PeriodicMissionCompletion { + date: Date; + tag: string; + count?: number; +} + +export interface PersonalGoalProgress { + Count: number; + Tag: string; + Best?: number; + _id: Oid; + ReceivedClanReward0?: boolean; + ReceivedClanReward1?: boolean; +} + +export interface PersonalTechProject { + State: number; + ReqCredits: number; + ItemType: string; + ReqItems: Consumable[]; + CompletionDate?: Date; + ItemId: Oid; + ProductCategory?: string; + CategoryItemId?: Oid; + HasContributions?: boolean; +} + +export interface PlayerSkills { + LPP_SPACE: number; + LPS_GUNNERY: number; + LPS_PILOTING: number; + LPS_ENGINEERING: number; + LPS_TACTICAL: number; + LPS_COMMAND: number; +} + +export interface QuestKey { + Progress: Progress[]; + unlock: boolean; + Completed: boolean; + ItemType: string; + CompletionDate?: Date; +} + +export interface Progress { + c: number; + i: boolean; + m: boolean; + b?: any[]; +} + +export interface RawUpgrade { + ItemCount: number; + LastAdded: Oid; + ItemType: string; +} + +export interface Scoop { + ItemType: string; + Configs: ScoopConfig[]; + UpgradeVer: number; + ItemId: Oid; +} + +export interface ScoopConfig { + pricol?: Color; +} + +export interface SeasonChallengeHistory { + challenge: string; + id: string; +} + +export interface SentientSpawnChanceBoosters { + numOceanMissionsCompleted: number; +} + +export interface SentinelWeapon { + ItemType: string; + Configs: SentinelWeaponConfig[]; + UpgradeVer?: number; + XP?: number; + ItemId: Oid; + Features?: number; + Polarity?: Polarity[]; + Polarized?: number; +} + +export interface SentinelWeaponConfig { + Skins?: FluffySkin[]; + Upgrades?: string[]; +} + +export enum FluffySkin { + Empty = "", + LotusUpgradesSkinsHolsterCustomizationsGlaiveInPlace = "/Lotus/Upgrades/Skins/HolsterCustomizations/GlaiveInPlace", + LotusUpgradesSkinsHolsterCustomizationsPistolHipsR = "/Lotus/Upgrades/Skins/HolsterCustomizations/PistolHipsR", + LotusUpgradesSkinsHolsterCustomizationsRifleUpperBack = "/Lotus/Upgrades/Skins/HolsterCustomizations/RifleUpperBack" +} + +export interface Sentinel { + ItemType: string; + Configs: KubrowPetConfig[]; + UpgradeVer: number; + XP: number; + Features?: number; + Polarity?: Polarity[]; + Polarized?: number; + ItemId: Oid; +} + +export interface Settings { + FriendInvRestriction: string; + GiftMode: string; + GuildInvRestriction: string; + ShowFriendInvNotifications: boolean; + TradingRulesConfirmed: boolean; +} + +export interface Ship { + ItemType: string; + ShipExterior: Terior; + AirSupportPower: string; + ItemId: Oid; +} + +export interface SpaceGun { + ItemType: string; + Configs: SpaceGunConfig[]; + XP?: number; + UpgradeVer?: number; + ItemId: Oid; + Features?: number; + Polarized?: number; + Polarity?: Polarity[]; + UpgradeType?: UpgradeType; + UpgradeFingerprint?: string; + ItemName?: string; +} + +export interface SpaceGunConfig { + Skins?: string[]; + pricol?: Color; + Upgrades?: string[]; +} + +export interface Space { + ItemType: string; + Configs: KubrowPetConfig[]; + XP: number; + UpgradeVer: number; + ItemId: Oid; + Features?: number; +} + +export interface SpecialItem { + ItemType: string; + Configs: SpecialItemConfig[]; + XP?: number; + UpgradeVer?: number; + Features: number; + ItemId: Oid; + Polarized?: number; + Polarity?: Polarity[]; + ModSlotPurchases?: number; +} + +export interface SpecialItemConfig { + Upgrades?: string[]; + pricol?: Color; + Skins?: string[]; + attcol?: Color; + eyecol?: PurpleCol; + sigcol?: PurpleCol; + Name?: string; +} + +export interface PurpleCol { + en: number; +} + +export interface SpectreLoadout { + LongGuns: string; + Melee: string; + Pistols: string; + PistolsFeatures: number; + PistolsModularParts: string[]; + Suits: string; + ItemType: string; +} + +export interface StepSequencer { + NotePacks: NotePacks; + FingerPrint: string; + Name: string; + ItemId: Oid; +} + +export interface NotePacks { + MELODY: string; + BASS: string; + PERCUSSION: string; +} + +export interface ISuitDocument extends ISuitDatabase, Document {} + +export interface ISuitResponse extends ISuitDatabase { + ItemId: Oid; +} + +export interface ISuitDatabase { + ItemType: string; + Configs: SuitConfig[]; + UpgradeVer?: number; + XP?: number; + InfestationDate?: Date; + Features?: number; + Polarity?: Polarity[]; + Polarized?: number; + ModSlotPurchases?: number; + ItemId: Oid; + FocusLens?: string; + UnlockLevel?: number; +} + +export interface SuitConfig { + Skins?: string[]; + pricol?: Color; + attcol?: Color; + eyecol?: Color; + sigcol?: Color; + Upgrades?: string[]; + Songs?: Song[]; + Name?: string; + AbilityOverride?: AbilityOverride; + PvpUpgrades?: string[]; + ugly?: boolean; +} + +export interface Song { + m?: string; + b?: string; + p?: string; + s: string; +} + +export interface TauntHistory { + node: string; + state: string; +} + +export interface WeaponSkin { + ItemType: string; + ItemId: Oid; +} + +export interface WebFlags { + activeBuyPlat: number; + noShow2FA: boolean; + Tennocon2018Digital: boolean; + VisitPrimeAccess: Date; + VisitTennocon2019: Date; + enteredSC2019: Date; + VisitPrimeVault: Date; + VisitBuyPlatinum: Date; + ClickedSku_640_Page__en_buyplatinum: Date; + ClickedSku_640_Page__buyplatinum: Date; + VisitStarterPack: Date; + Tennocon2020Digital: boolean; + Anniversary2021: boolean; + HitDownloadBtn: Date; +} diff --git a/static/fixed_responses/getShip.json b/static/fixed_responses/getShip.json index f15c1be8..c9b83d1c 100644 --- a/static/fixed_responses/getShip.json +++ b/static/fixed_responses/getShip.json @@ -1,5 +1,5 @@ { - "ShipOwnerId": "removed", + "ShipOwnerId": "647bce8a1caba352f90b6a09", "Ship": { "Rooms": [ { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, @@ -9,7 +9,15 @@ { "Name": "OutsideRoom", "MaxCapacity": 1600 }, { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } ], - "ContentUrlSignature": "removed" + "ContentUrlSignature": "removed", + "Features": [ + "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem" + ] }, "Apartment": { "Rooms": [ diff --git a/static/fixed_responses/new_inventory.json b/static/fixed_responses/new_inventory.json new file mode 100644 index 00000000..8c112a7a --- /dev/null +++ b/static/fixed_responses/new_inventory.json @@ -0,0 +1,121 @@ +{ + "SubscribedToEmails": 0, + "Created": { "$date": { "$numberLong": "1685829131" } }, + "SubscribedToEmailsPersonalized": 0, + "RewardSeed": -5604904486637265640, + "CrewMemberBin": { "Slots": 3 }, + "CrewShipSalvageBin": { "Slots": 8 }, + "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bb619e15fa43f0ee4b1b1" } }], + "FusionPoints": 0, + "MechBin": { "Slots": 4 }, + "OperatorAmpBin": { "Slots": 8 }, + "PveBonusLoadoutBin": { "Slots": 0 }, + "PvpBonusLoadoutBin": { "Slots": 0 }, + "RandomModBin": { "Slots": 15 }, + "RegularCredits": 0, + "SentinelBin": { "Slots": 10 }, + "SpaceSuitBin": { "Slots": 4 }, + "SpaceWeaponBin": { "Slots": 4 }, + "SuitBin": { "Slots": 2 }, + "WeaponBin": { "Slots": 8 }, + "LastInventorySync": { "$oid": "647bb5d79f963c9d24668257" }, + "NextRefill": { "$date": { "$numberLong": "1685829131" } }, + "ActiveLandscapeTraps": [], + "ChallengeProgress": [], + "CrewMembers": [], + "CrewShips": [], + "CrewShipHarnesses": [], + "CrewShipSalvagedWeapons": [], + "CrewShipSalvagedWeaponSkins": [], + "CrewShipWeapons": [], + "CrewShipWeaponSkins": [], + "DataKnives": [], + "DrifterGuns": [], + "Drones": [], + "Horses": [], + "Hoverboards": [], + "KubrowPets": [], + "KubrowPetEggs": [], + "KubrowPetPrints": [], + "LongGuns": [], + "MechSuits": [], + "Melee": [], + "MoaPets": [], + "OperatorAmps": [], + "OperatorLoadOuts": [], + "AdultOperatorLoadOuts": [], + "KahlLoadOuts": [], + "PendingRecipes": [], + "PersonalGoalProgress": [], + "PersonalTechProjects": [], + "Pistols": [], + "QualifyingInvasions": [], + "RepVotes": [], + "Scoops": [], + "Sentinels": [], + "SentinelWeapons": [], + "Ships": [], + "SpaceGuns": [], + "SpaceMelee": [], + "SpaceSuits": [], + "SpecialItems": [], + "StepSequencers": [], + "Suits": [], + "Upgrades": [], + "WeaponSkins": [], + "Boosters": [], + "Consumables": [], + "EmailItems": [], + "FlavourItems": [], + "FocusUpgrades": [], + "FusionTreasures": [], + "LeagueTickets": [], + "LevelKeys": [], + "LoreFragmentScans": [], + "MiscItems": [], + "PendingSpectreLoadouts": [], + "Quests": [], + "QuestKeys": [], + "RawUpgrades": [], + "Recipes": [], + "Robotics": [], + "ShipDecorations": [], + "SpectreLoadouts": [], + "XPInfo": [], + "CrewShipAmmo": [], + "CrewShipRawSalvage": [], + "EvolutionProgress": [], + "Missions": [], + "TauntHistory": [], + "CompletedSyndicates": [], + "UsedDailyDeals": [], + "DailyAffiliation": 16000, + "DailyAffiliationPvp": 16000, + "DailyAffiliationLibrary": 16000, + "DailyAffiliationCetus": 16000, + "DailyAffiliationQuills": 16000, + "DailyAffiliationSolaris": 16000, + "DailyAffiliationVentkids": 16000, + "DailyAffiliationVox": 16000, + "DailyAffiliationEntrati": 16000, + "DailyAffiliationNecraloid": 16000, + "DailyAffiliationZariman": 16000, + "DailyAffiliationKahl": 16000, + "DailyFocus": 250000, + "GiftsRemaining": 8, + "LibraryAvailableDailyTaskInfo": { + "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"], + "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman", + "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png", + "ScansRequired": 4, + "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle", + "RewardQuantity": 10, + "RewardStanding": 10000 + }, + "DuviriInfo": { "Seed": 5898912197983600352, "NumCompletions": 0 }, + "TradesRemaining": 0, + "HasContributedToDojo": false, + "HasResetAccount": false, + "PendingCoupon": { "Expiry": { "$date": { "$numberLong": "0" } }, "Discount": 0 }, + "PremiumCreditsFree": 0 +} diff --git a/static/fixed_responses/postTutorialInventory.json b/static/fixed_responses/postTutorialInventory.json new file mode 100644 index 00000000..1c2d8721 --- /dev/null +++ b/static/fixed_responses/postTutorialInventory.json @@ -0,0 +1,145 @@ +{ + "SubscribedToEmails": 0, + "Created": { "$date": { "$numberLong": "1685829131" } }, + "SubscribedToEmailsPersonalized": 0, + "RewardSeed": -5604904486637265640, + "CrewMemberBin": { "Slots": 3 }, + "CrewShipSalvageBin": { "Slots": 8 }, + "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bd268c547fe5b2909e715" } }], + "FusionPoints": 0, + "MechBin": { "Slots": 4 }, + "OperatorAmpBin": { "Slots": 8 }, + "PveBonusLoadoutBin": { "Slots": 0 }, + "PvpBonusLoadoutBin": { "Slots": 0 }, + "RandomModBin": { "Slots": 15 }, + "RegularCredits": 3000, + "SentinelBin": { "Slots": 10 }, + "SpaceSuitBin": { "Slots": 4 }, + "SpaceWeaponBin": { "Slots": 4 }, + "SuitBin": { "Slots": 1 }, + "WeaponBin": { "Slots": 5 }, + "DailyAffiliation": 16000, + "DailyAffiliationCetus": 16000, + "DailyAffiliationEntrati": 16000, + "DailyAffiliationKahl": 16000, + "DailyAffiliationLibrary": 16000, + "DailyAffiliationNecraloid": 16000, + "DailyAffiliationPvp": 16000, + "DailyAffiliationQuills": 16000, + "DailyAffiliationSolaris": 16000, + "DailyAffiliationVentkids": 16000, + "DailyAffiliationVox": 16000, + "DailyAffiliationZariman": 16000, + "DailyFocus": 250000, + "DuviriInfo": { "Seed": 5898912197983600352, "NumCompletions": 0 }, + "GiftsRemaining": 8, + "TradesRemaining": 0, + "Recipes": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Recipes/Weapons/BoltonfaBlueprint" }], + "SeasonChallengeHistory": [ + { "challenge": "SeasonDailySolveCiphers", "id": "001000220000000000000308" }, + { "challenge": "SeasonDailyVisitFeaturedDojo", "id": "001000230000000000000316" }, + { "challenge": "SeasonDailyKillEnemiesWithRadiation", "id": "001000230000000000000317" }, + { "challenge": "SeasonWeeklyCompleteSortie", "id": "001000230000000000000309" }, + { "challenge": "SeasonWeeklyVenusBounties", "id": "001000230000000000000310" }, + { "challenge": "SeasonWeeklyZarimanBountyHunter", "id": "001000230000000000000311" }, + { "challenge": "SeasonWeeklyCatchRarePlainsFish", "id": "001000230000000000000312" }, + { "challenge": "SeasonWeeklyKillArchgunEnemies", "id": "001000230000000000000313" }, + { "challenge": "SeasonWeeklyHardKillSilverGroveSpecters", "id": "001000230000000000000314" }, + { "challenge": "SeasonWeeklyHardKillRopalolyst", "id": "001000230000000000000315" } + ], + "StoryModeChoice": "WARFRAME", + "ChallengeProgress": [{ "Progress": 2, "Name": "EMGetKills" }], + "ChallengesFixVersion": 6, + "ActiveQuest": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain", + "Consumables": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Restoratives/LisetAutoHack" }], + "DataKnives": [{ "ItemType": "/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon", "XP": 450000, "ItemId": { "$oid": "647bd274f22fc794a2cd3d33" } }], + "FlavourItems": [ + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" } + ], + "LongGuns": [{ "ItemType": "/Lotus/Weapons/MK1Series/MK1Paris", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], + "Melee": [{ "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], + "Pistols": [{ "ItemType": "/Lotus/Weapons/MK1Series/MK1Kunai", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], + "PlayedParkourTutorial": true, + "PremiumCreditsFree": 50, + "QuestKeys": [{ "ItemType": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain" }], + "RawUpgrades": [{ "ItemCount": 1, "LastAdded": { "$oid": "6450f9bfe0714a4d6703f05f" }, "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod" }], + "ReceivedStartingGear": true, + "Scoops": [{ "ItemType": "/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], + "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], + "Suits": [{ "ItemType": "/Lotus/Powersuits/Volt/Volt", "XP": 0, "Configs": [{}, {}, {}], "UpgradeVer": 101, "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], + "TrainingRetriesLeft": 0, + "WeaponSkins": [{ "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], + "LastInventorySync": { "$oid": "647bd27cf856530b4f3bf343" }, + "NextRefill": { "$date": { "$numberLong": "1685829131" } }, + "ActiveLandscapeTraps": [], + "CrewMembers": [], + "CrewShips": [], + "CrewShipHarnesses": [], + "CrewShipSalvagedWeapons": [], + "CrewShipSalvagedWeaponSkins": [], + "CrewShipWeapons": [], + "CrewShipWeaponSkins": [], + "DrifterGuns": [], + "Drones": [], + "Horses": [], + "Hoverboards": [], + "KubrowPets": [], + "KubrowPetEggs": [], + "KubrowPetPrints": [], + "MechSuits": [], + "MoaPets": [], + "OperatorAmps": [], + "OperatorLoadOuts": [], + "AdultOperatorLoadOuts": [], + "KahlLoadOuts": [], + "PendingRecipes": [], + "PersonalGoalProgress": [], + "PersonalTechProjects": [], + "QualifyingInvasions": [], + "RepVotes": [], + "Sentinels": [], + "SentinelWeapons": [], + "SpaceGuns": [], + "SpaceMelee": [], + "SpaceSuits": [], + "SpecialItems": [], + "StepSequencers": [], + "Upgrades": [], + "Boosters": [], + "EmailItems": [], + "FocusUpgrades": [], + "FusionTreasures": [], + "LeagueTickets": [], + "LevelKeys": [], + "LoreFragmentScans": [], + "MiscItems": [], + "PendingSpectreLoadouts": [], + "Quests": [], + "Robotics": [], + "ShipDecorations": [], + "SpectreLoadouts": [], + "XPInfo": [], + "CrewShipAmmo": [], + "CrewShipRawSalvage": [], + "EvolutionProgress": [], + "Missions": [], + "TauntHistory": [], + "CompletedSyndicates": [], + "UsedDailyDeals": [], + "LibraryAvailableDailyTaskInfo": { + "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"], + "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman", + "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png", + "ScansRequired": 4, + "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle", + "RewardQuantity": 10, + "RewardStanding": 10000 + }, + "HasContributedToDojo": false, + "HasResetAccount": false, + "PendingCoupon": { "Expiry": { "$date": { "$numberLong": "0" } }, "Discount": 0 }, + "PremiumCredits": 50 +} -- 2.47.2 From 52a8ad6bd0b0d9add282f62f7ba20552655b4b80 Mon Sep 17 00:00:00 2001 From: AKCore Date: Sat, 3 Jun 2023 19:24:57 -0700 Subject: [PATCH 012/522] basic session management completed (#11) --- .../api/deleteSessionController.ts | 2 + src/controllers/api/findSessionsController.ts | 21 ++- .../api/getNewRewardSeedController.ts | 8 +- src/controllers/api/hostSessionController.ts | 5 +- src/controllers/api/joinSessionController.ts | 11 ++ src/controllers/api/logoutController.ts | 5 +- .../api/updateSessionController.ts | 6 +- src/managers/sessionManager.ts | 132 ++++++++++++++++++ src/routes/api.ts | 3 + src/types/session.ts | 27 ++++ static/fixed_responses/login_static.ts | 2 +- 11 files changed, 213 insertions(+), 9 deletions(-) create mode 100644 src/controllers/api/joinSessionController.ts create mode 100644 src/managers/sessionManager.ts create mode 100644 src/types/session.ts diff --git a/src/controllers/api/deleteSessionController.ts b/src/controllers/api/deleteSessionController.ts index a1dd4167..d4053779 100644 --- a/src/controllers/api/deleteSessionController.ts +++ b/src/controllers/api/deleteSessionController.ts @@ -1,6 +1,8 @@ import { RequestHandler } from "express"; +import { deleteSession } from "@/src/managers/sessionManager"; const deleteSessionController: RequestHandler = (_req, res) => { + deleteSession(_req.query.sessionId as string); res.sendStatus(200); }; diff --git a/src/controllers/api/findSessionsController.ts b/src/controllers/api/findSessionsController.ts index 32b1cf33..9e4da0f5 100644 --- a/src/controllers/api/findSessionsController.ts +++ b/src/controllers/api/findSessionsController.ts @@ -1,9 +1,28 @@ import { RequestHandler } from "express"; +import { getSession } from "@/src/managers/sessionManager"; const findSessionsController: RequestHandler = (_req, res) => { console.log("FindSession Request:", JSON.parse(_req.body)); + let req = JSON.parse(_req.body); + if (req.id != undefined) { + console.log("Found ID"); + let session = getSession(req.id); - res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); + if (session) res.json({ queryId: req.queryId, Sessions: session }); + else res.json({}); + } else if (req.originalSessionId != undefined) { + console.log("Found OriginalSessionID"); + + let session = getSession(req.originalSessionId); + if (session) res.json({ queryId: req.queryId, Sessions: session }); + else res.json({}); + } else { + console.log("Found SessionRequest"); + + let session = getSession(_req.body); + if (session) res.json({ queryId: req.queryId, Sessions: session }); + else res.json({}); + } }; export { findSessionsController }; diff --git a/src/controllers/api/getNewRewardSeedController.ts b/src/controllers/api/getNewRewardSeedController.ts index d700ac5d..163e3c6e 100644 --- a/src/controllers/api/getNewRewardSeedController.ts +++ b/src/controllers/api/getNewRewardSeedController.ts @@ -1,7 +1,13 @@ import { RequestHandler } from "express"; const getNewRewardSeedController: RequestHandler = (_req, res) => { - res.json({ rewardSeed: 5867309943877621023 }); + res.json({ rewardSeed: generateRewardSeed() }); }; +function generateRewardSeed(): number { + const min = -Number.MAX_SAFE_INTEGER; + const max = Number.MAX_SAFE_INTEGER; + return Math.floor(Math.random() * (max - min + 1)) + min; +} + export { getNewRewardSeedController }; diff --git a/src/controllers/api/hostSessionController.ts b/src/controllers/api/hostSessionController.ts index bbeb8eb7..c7ac7cb9 100644 --- a/src/controllers/api/hostSessionController.ts +++ b/src/controllers/api/hostSessionController.ts @@ -1,9 +1,12 @@ import { RequestHandler } from "express"; +import { createNewSession } from "@/src/managers/sessionManager"; const hostSessionController: RequestHandler = (_req, res) => { console.log("HostSession Request:", JSON.parse(_req.body)); + let session = createNewSession(JSON.parse(_req.body), _req.query.accountId as string); + console.log("New Session Created: ", session); - res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 }); + res.json({ sessionId: { $oid: session.sessionId }, rewardSeed: 99999999 }); }; export { hostSessionController }; diff --git a/src/controllers/api/joinSessionController.ts b/src/controllers/api/joinSessionController.ts new file mode 100644 index 00000000..3cd6a7e0 --- /dev/null +++ b/src/controllers/api/joinSessionController.ts @@ -0,0 +1,11 @@ +import { RequestHandler } from "express"; +import { getSessionByID } from "@/src/managers/sessionManager"; + +const joinSessionController: RequestHandler = (_req, res) => { + console.log("JoinSession Request:", JSON.parse(_req.body)); + let req = JSON.parse(_req.body); + let session = getSessionByID(req.sessionIds[0]); + res.json({ rewardSeed: session?.rewardSeed, sessionId: { $oid: session?.sessionId } }); +}; + +export { joinSessionController }; diff --git a/src/controllers/api/logoutController.ts b/src/controllers/api/logoutController.ts index 615008a5..6dab1cc8 100644 --- a/src/controllers/api/logoutController.ts +++ b/src/controllers/api/logoutController.ts @@ -1,12 +1,11 @@ import { RequestHandler } from "express"; const logoutController: RequestHandler = (_req, res) => { - const data = Buffer.from([0x31]); res.writeHead(200, { "Content-Type": "text/html", - "Content-Length": data.length + "Content-Length": 1 }); - res.end(data); + res.end("1"); }; export { logoutController }; diff --git a/src/controllers/api/updateSessionController.ts b/src/controllers/api/updateSessionController.ts index f9e1cf16..e949d83e 100644 --- a/src/controllers/api/updateSessionController.ts +++ b/src/controllers/api/updateSessionController.ts @@ -1,11 +1,13 @@ import { RequestHandler } from "express"; +import { updateSession } from "@/src/managers/sessionManager"; const updateSessionGetController: RequestHandler = (_req, res) => { res.json({}); }; const updateSessionPostController: RequestHandler = (_req, res) => { console.log("UpdateSessions POST Request:", JSON.parse(_req.body)); - - res.json({ hasStarted: true }); + console.log("ReqID:", _req.query.sessionId as string); + updateSession(_req.query.sessionId as string, _req.body); + res.json({}); }; export { updateSessionGetController, updateSessionPostController }; diff --git a/src/managers/sessionManager.ts b/src/managers/sessionManager.ts new file mode 100644 index 00000000..de990f9e --- /dev/null +++ b/src/managers/sessionManager.ts @@ -0,0 +1,132 @@ +import { Session, FindSessionRequest } from "@/src/types/session"; + +const sessions: Session[] = []; + +function createNewSession(sessionData: Session, Creator: string): Session { + const sessionId = getNewSessionID(); + const newSession: Session = { + sessionId, + creatorId: Creator, + maxPlayers: sessionData.maxPlayers || 4, + minPlayers: sessionData.minPlayers || 1, + privateSlots: sessionData.privateSlots || 0, + scoreLimit: sessionData.scoreLimit || 15, + timeLimit: sessionData.timeLimit || 900, + gameModeId: sessionData.gameModeId || 0, + eloRating: sessionData.eloRating || 3, + regionId: sessionData.regionId || 3, + difficulty: sessionData.difficulty || 0, + hasStarted: sessionData.hasStarted || false, + enableVoice: sessionData.enableVoice || true, + matchType: sessionData.matchType || "NORMAL", + maps: sessionData.maps || [], + originalSessionId: sessionData.originalSessionId || "", + customSettings: sessionData.customSettings || "", + rewardSeed: sessionData.rewardSeed || -1, + guildId: sessionData.guildId || "", + buildId: sessionData.buildId || 4920386201513015989, + platform: sessionData.platform || 0, + xplatform: sessionData.xplatform || true, + freePublic: sessionData.freePublic || 3, + freePrivate: sessionData.freePrivate || 0, + fullReset: 0 + }; + sessions.push(newSession); + return newSession; +} + +function getAllSessions(): Session[] { + return sessions; +} + +function getSessionByID(sessionId: string): Session | undefined { + return sessions.find(session => session.sessionId === sessionId); +} + +function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { + if (typeof sessionIdOrRequest === "string") { + const session = sessions.find(session => session.sessionId === sessionIdOrRequest); + if (session) { + console.log("Found Sessions:", session); + return [ + { + createdBy: session.creatorId, + id: session.sessionId + } + ]; + } + return []; + } + + const request = sessionIdOrRequest as FindSessionRequest; + const matchingSessions = sessions.filter(session => { + for (const key in request) { + if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof Session]) { + return false; + } + } + console.log("Found Matching Sessions:", matchingSessions); + return true; + }); + return matchingSessions.map(session => ({ + createdBy: session.creatorId, + id: session.sessionId + })); +} + +function getSessionByCreatorID(creatorId: string): Session | undefined { + return sessions.find(session => session.creatorId === creatorId); +} + +function getNewSessionID(): string { + const characters = "0123456789abcdef"; + const maxAttempts = 100; + let sessionId = ""; + + for (let attempt = 0; attempt < maxAttempts; attempt++) { + sessionId = "64"; + for (let i = 0; i < 22; i++) { + const randomIndex = Math.floor(Math.random() * characters.length); + sessionId += characters[randomIndex]; + } + + if (!sessions.some(session => session.sessionId === sessionId)) { + return sessionId; + } + } + + throw new Error("Failed to generate a unique session ID"); +} + +function updateSession(sessionId: string, sessionData: string): boolean { + const session = sessions.find(session => session.sessionId === sessionId); + if (!session) return false; + try { + const updatedData = JSON.parse(sessionData); + Object.assign(session, updatedData); + return true; + } catch (error) { + console.error("Invalid JSON string for session update."); + return false; + } +} + +function deleteSession(sessionId: string): boolean { + const index = sessions.findIndex(session => session.sessionId === sessionId); + if (index !== -1) { + sessions.splice(index, 1); + return true; + } + return false; +} + +export { + createNewSession, + getAllSessions, + getSessionByID, + getSessionByCreatorID, + getNewSessionID, + updateSession, + deleteSession, + getSession +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index d13e8edd..1a5d8a11 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -27,6 +27,8 @@ import { surveysController } from "@/src/controllers/api/surveysController"; import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController"; import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; import { viewController } from "@/src/controllers/api/viewController"; +import { joinSessionController } from "@/src/controllers/api/joinSessionController"; + import express from "express"; const apiRouter = express.Router(); @@ -65,4 +67,5 @@ apiRouter.post("/updateSession.php", updateSessionPostController); apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); apiRouter.post("/genericUpdate.php", genericUpdateController); apiRouter.post("/rerollRandomMod.php", rerollRandomModController); +apiRouter.post("/joinSession.php", joinSessionController); export { apiRouter }; diff --git a/src/types/session.ts b/src/types/session.ts new file mode 100644 index 00000000..af61fdc3 --- /dev/null +++ b/src/types/session.ts @@ -0,0 +1,27 @@ +export interface Session { + sessionId: string; + creatorId: string; + maxPlayers: number; + minPlayers: number; + privateSlots: number; + scoreLimit: number; + timeLimit: number; + gameModeId: number; + eloRating: number; + regionId: number; + difficulty: number; + hasStarted: boolean; + enableVoice: boolean; + matchType: string; + maps: string[]; + originalSessionId: string; + customSettings: string; + rewardSeed: number; + guildId: string; + buildId: number; + platform: number; + xplatform: boolean; + freePublic: number; + freePrivate: number; + fullReset: number; +} diff --git a/static/fixed_responses/login_static.ts b/static/fixed_responses/login_static.ts index 8319186a..d5b3ede9 100644 --- a/static/fixed_responses/login_static.ts +++ b/static/fixed_responses/login_static.ts @@ -24,7 +24,7 @@ export const platformCDNs = [ export const Nonce = 1231231233; -export const NRS = ["104.237.145.11", "139.144.69.73", "170.187.231.80", "45.33.58.33", "85.159.214.213"]; +export const NRS = ["localhost"]; export const DTLS = 99; -- 2.47.2 From c6687e3b4da9f9df489410ebe7f217a8ae398f54 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 4 Jun 2023 04:48:36 +0200 Subject: [PATCH 013/522] fix main. (#12) --- src/types/session.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/types/session.ts b/src/types/session.ts index af61fdc3..10ed78ea 100644 --- a/src/types/session.ts +++ b/src/types/session.ts @@ -25,3 +25,7 @@ export interface Session { freePrivate: number; fullReset: number; } + +export interface FindSessionRequest { + [key: string]: any; +} -- 2.47.2 From 6520284cba18fba03276e62fe95f66c841f0eca8 Mon Sep 17 00:00:00 2001 From: Master Date: Mon, 5 Jun 2023 04:16:49 +0800 Subject: [PATCH 014/522] Add Ship (#13) --- .gitignore | 1 + config.json | 4 +- src/controllers/api/getShipController.ts | 20 +- src/controllers/api/inventoryController.ts | 6 + src/controllers/api/loginController.ts | 1 + src/models/inventoryModel.ts | 9 +- src/models/shipModel.ts | 46 + src/services/loginService.ts | 2 + src/services/shipService.ts | 17 + src/types/commonTypes.ts | 3 + src/types/inventoryTypes.ts | 11 +- src/types/shipTypes.ts | 29 + static/fixed_responses/postShip.json | 33 + static/fixed_responses/testMissions.json | 1471 ++++++++++++++++++++ static/fixed_responses/testQuestKeys.json | 11 + 15 files changed, 1649 insertions(+), 15 deletions(-) create mode 100644 src/models/shipModel.ts create mode 100644 src/services/shipService.ts create mode 100644 src/types/commonTypes.ts create mode 100644 src/types/shipTypes.ts create mode 100644 static/fixed_responses/postShip.json create mode 100644 static/fixed_responses/testMissions.json create mode 100644 static/fixed_responses/testQuestKeys.json diff --git a/.gitignore b/.gitignore index 7d679bbc..05465bae 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /.env /static/data/* +yarn.lock diff --git a/config.json b/config.json index 5d15dcf4..7ce17384 100644 --- a/config.json +++ b/config.json @@ -5,5 +5,7 @@ "version": "33.0.14", "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", "skipStoryModeChoice": true, - "skipTutorial": true + "skipTutorial": true, + "testMission": true, + "testQuestKey": true } diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index 82f598fe..2da6f8b2 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -1,8 +1,22 @@ +import { Account } from "@/src/models/loginModel"; +import { Ship } from "@/src/models/shipModel"; +import { createShip } from "@/src/services/shipService"; import { RequestHandler } from "express"; -import getShip from "@/static/fixed_responses/getShip.json"; -const getShipController: RequestHandler = (_req, res) => { - res.json(getShip); +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const getShipController: RequestHandler = async (_req, res) => { + const accountId = _req.query.accountId; + const ship = await Ship.findOne({ ShipOwnerId: accountId }); + if (!ship) { + const account = await Account.findOne({ _id: accountId }); + if (account) { + await createShip(account._id); + const new_ship = await Ship.findOne({ ShipOwnerId: accountId }); + res.json(new_ship); + return; + } + } + res.json(ship); }; export { getShipController }; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index c7ad069c..badf79ad 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -2,6 +2,9 @@ import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; import { Inventory } from "@/src/models/inventoryModel"; import { Request, RequestHandler, Response } from "express"; +import config from "@/config.json"; +import testMissions from "@/static/fixed_responses/testMissions.json"; +import testQuestKeys from "@/static/fixed_responses/testQuestKeys.json"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { const accountId = request.query.accountId; @@ -23,6 +26,9 @@ const inventoryController: RequestHandler = async (request: Request, response: R const inventoreResponse = toInventoryResponse(inventoryJSON); + if (config.testMission) inventoreResponse.Missions = testMissions; + if (config.testQuestKey) inventoreResponse.QuestKeys = testQuestKeys; + response.json(inventoreResponse); }; diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 7819df06..e48e6df0 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -9,6 +9,7 @@ import { createAccount, isCorrectPassword } from "@/src/services/loginService"; import { ILoginResponse } from "@/src/types/loginTypes"; import { DTLS, groups, HUB, IRC, Nonce, NRS, platformCDNs } from "@/static/fixed_responses/login_static"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const loginController: RequestHandler = async (request, response) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument const body = JSON.parse(request.body); // parse octet stream of json data to json object diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index bdc2065d..bed6c50c 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,5 +1,6 @@ -import { Document, Schema, model } from "mongoose"; -import { IInventoryDatabase, IInventoryResponse, ISuitDatabase, ISuitDocument, Oid } from "../types/inventoryTypes"; +import { Schema, model } from "mongoose"; +import { IInventoryDatabase, ISuitDatabase } from "../types/inventoryTypes"; +import { Oid } from "../types/commonTypes"; const polaritySchema = new Schema({ Slot: Number, @@ -65,7 +66,7 @@ const suitSchema = new Schema({ }); suitSchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; @@ -246,7 +247,7 @@ const inventorySchema = new Schema({ }); inventorySchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { delete returnedObject._id; delete returnedObject.__v; } diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts new file mode 100644 index 00000000..d782d917 --- /dev/null +++ b/src/models/shipModel.ts @@ -0,0 +1,46 @@ +import { Schema, model } from "mongoose"; +import { IShipDatabase } from "../types/shipTypes"; +import { Oid } from "../types/commonTypes"; + +const roomSchema = new Schema({ + Name: String, + MaxCapacity: Number +}); + +roomSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject._id; + } +}); + +const shipSchema = new Schema({ + Rooms: [roomSchema], + Features: [Schema.Types.Mixed], + ContentUrlSignature: String +}); + +const apartmentSchema = new Schema({ + Rooms: [roomSchema], + FavouriteLoadouts: [Schema.Types.Mixed] +}); + +const shipDatabaseSchema = new Schema({ + ShipOwnerId: String, + Ship: shipSchema, + Apartment: apartmentSchema +}); + +shipDatabaseSchema.set("toJSON", { + transform(_document, returnedObject) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.Ship.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; + delete returnedObject._id; + delete returnedObject.Ship._id; + delete returnedObject.Apartment._id; + delete returnedObject.__v; + } +}); + +const Ship = model("Ship", shipDatabaseSchema); + +export { Ship }; diff --git a/src/services/loginService.ts b/src/services/loginService.ts index c110d491..9e7959f0 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -1,6 +1,7 @@ import { Account } from "@/src/models/loginModel"; import { createInventory } from "@/src/services/inventoryService"; import { IDatabaseAccount } from "@/src/types/loginTypes"; +import { createShip } from "./shipService"; const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => { return requestPassword === databasePassword; @@ -11,6 +12,7 @@ const createAccount = async (accountData: IDatabaseAccount) => { try { await account.save(); await createInventory(account._id); + await createShip(account._id); return account.toJSON(); } catch (error) { if (error instanceof Error) { diff --git a/src/services/shipService.ts b/src/services/shipService.ts new file mode 100644 index 00000000..8d131f1a --- /dev/null +++ b/src/services/shipService.ts @@ -0,0 +1,17 @@ +import { Ship } from "@/src/models/shipModel"; +import new_ship from "@/static/fixed_responses/postShip.json"; +import { Types } from "mongoose"; + +const createShip = async (accountOwnerId: Types.ObjectId) => { + try { + const ship = new Ship({ ...new_ship, ShipOwnerId: accountOwnerId }); + await ship.save(); + } catch (error) { + if (error instanceof Error) { + throw new Error(`error creating inventory" ${error.message}`); + } + throw new Error("error creating inventory that is not of instance Error"); + } +}; + +export { createShip }; diff --git a/src/types/commonTypes.ts b/src/types/commonTypes.ts new file mode 100644 index 00000000..4c1a7bf7 --- /dev/null +++ b/src/types/commonTypes.ts @@ -0,0 +1,3 @@ +export interface Oid { + $oid: string; +} diff --git a/src/types/inventoryTypes.ts b/src/types/inventoryTypes.ts index 70bac7ce..6a428931 100644 --- a/src/types/inventoryTypes.ts +++ b/src/types/inventoryTypes.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; +import { Oid } from "./commonTypes"; export interface IInventoryDatabase extends IInventoryResponse { accountOwnerId: Types.ObjectId; @@ -187,10 +188,6 @@ export interface AdultOperatorLoadOut { ItemId: Oid; } -export interface Oid { - $oid: string; -} - export interface Color { t0?: number; t1?: number; @@ -995,9 +992,9 @@ export interface PlayerSkills { } export interface QuestKey { - Progress: Progress[]; - unlock: boolean; - Completed: boolean; + Progress?: Progress[]; + unlock?: boolean; + Completed?: boolean; ItemType: string; CompletionDate?: Date; } diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts new file mode 100644 index 00000000..7a180521 --- /dev/null +++ b/src/types/shipTypes.ts @@ -0,0 +1,29 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import { Types } from "mongoose"; +import { Oid } from "./inventoryTypes"; + +export type IShipDatabase = IShipResponse; + +export interface IShipResponse { + ShipOwnerId: Types.ObjectId; + Ship: IShipClass; + Apartment: IApartmentClass; +} + +export interface IShipClass { + Rooms: IRoomsClass[]; + ShipId: Oid; + Features: string[]; + ContentUrlSignature: string; +} + +export interface IRoomsClass { + Name: string; + MaxCapacity: number; +} + +export interface IApartmentClass { + Rooms: IRoomsClass[]; + FavouriteLoadouts: string[]; +} diff --git a/static/fixed_responses/postShip.json b/static/fixed_responses/postShip.json new file mode 100644 index 00000000..aeb53b93 --- /dev/null +++ b/static/fixed_responses/postShip.json @@ -0,0 +1,33 @@ +{ + "ShipOwnerId": "removed", + "Ship": { + "Features": [ + "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem" + ], + "ShipId": { "$oid": "removed" }, + "Rooms": [ + { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, + { "Name": "BridgeRoom", "MaxCapacity": 1600 }, + { "Name": "LisetRoom", "MaxCapacity": 1000 }, + { "Name": "OperatorChamberRoom", "MaxCapacity": 1600 }, + { "Name": "OutsideRoom", "MaxCapacity": 1600 }, + { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } + ], + "ContentUrlSignature": "removed" + }, + "Apartment": { + "Rooms": [ + { "Name": "ElevatorLanding", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomA", "MaxCapacity": 1000 }, + { "Name": "ApartmentRoomB", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, + { "Name": "DuviriHallway", "MaxCapacity": 1600 } + ], + "FavouriteLoadouts": [] + } +} diff --git a/static/fixed_responses/testMissions.json b/static/fixed_responses/testMissions.json new file mode 100644 index 00000000..eb0340ae --- /dev/null +++ b/static/fixed_responses/testMissions.json @@ -0,0 +1,1471 @@ +[ + { + "Completes": 58, + "Tier": 1, + "Tag": "SolNode27" + }, + { + "Completes": 137, + "Tier": 1, + "Tag": "SolNode89" + }, + { + "Completes": 86, + "Tier": 1, + "Tag": "SolNode63" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode85" + }, + { + "Completes": 25, + "Tier": 1, + "Tag": "SolNode15" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode79" + }, + { + "Completes": 30, + "Tier": 1, + "Tag": "SolNode26" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "EarthToVenusJunction" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode128" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode123" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode66" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode22" + }, + { + "Completes": 31, + "Tier": 1, + "Tag": "SolNode109" + }, + { + "Completes": 25, + "Tier": 1, + "Tag": "SolNode61" + }, + { + "Completes": 180, + "Tag": "CetusHub4" + }, + { + "Completes": 563, + "Tier": 1, + "Tag": "SolNode228" + }, + { + "Completes": 34, + "Tier": 1, + "Tag": "SolNode39" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SolNode75" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode59" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "ClanNode2" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode101" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode2" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode104" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "VenusToMercuryJunction" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode226" + }, + { + "Completes": 9, + "Tier": 1, + "Tag": "SolNode119" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode12" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode225" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode103" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode28" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode130" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "EarthToMarsJunction" + }, + { + "Completes": 78, + "Tier": 1, + "Tag": "SolNode58" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode11" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode65" + }, + { + "Completes": 29, + "Tier": 1, + "Tag": "SolNode16" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode46" + }, + { + "Completes": 25, + "Tier": 1, + "Tag": "SolNode113" + }, + { + "Completes": 69, + "Tier": 1, + "Tag": "SolNode45" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode106" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "MarsToPhobosJunction" + }, + { + "Completes": 79, + "Tier": 1, + "Tag": "SettlementNode1" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SettlementNode14" + }, + { + "Completes": 77, + "Tier": 1, + "Tag": "SettlementNode2" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SettlementNode15" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SettlementNode12" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SettlementNode20" + }, + { + "Completes": 35, + "Tier": 1, + "Tag": "SettlementNode3" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode1" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode23" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode0" + }, + { + "Completes": 70, + "Tier": 1, + "Tag": "SolNode107" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode223" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode108" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode224" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode94" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode41" + }, + { + "Completes": 37, + "Tier": 1, + "Tag": "SolNode30" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode36" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode68" + }, + { + "Completes": 24, + "Tier": 1, + "Tag": "SolNode99" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "ClanNode8" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode706" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode708" + }, + { + "Completes": 151, + "Tier": 1, + "Tag": "SolNode229" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "MarsToCeresJunction" + }, + { + "Completes": 38, + "Tier": 1, + "Tag": "SolNode14" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode9" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SettlementNode11" + }, + { + "Completes": 107, + "Tier": 1, + "Tag": "SolNode131" + }, + { + "Completes": 22, + "Tier": 1, + "Tag": "SolNode132" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode149" + }, + { + "Completes": 54, + "Tier": 1, + "Tag": "SolNode139" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode138" + }, + { + "Completes": 19, + "Tier": 1, + "Tag": "SolNode141" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode144" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode146" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode710" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode709" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode707" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode712" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode711" + }, + { + "Completes": 24, + "Tier": 1, + "Tag": "SolNode137" + }, + { + "Completes": 9, + "Tier": 1, + "Tag": "SolNode140" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode902" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "CeresToJupiterJunction" + }, + { + "Completes": 53, + "Tier": 1, + "Tag": "SolNode126" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode100" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode74" + }, + { + "Completes": 71, + "Tier": 1, + "Tag": "SolNode121" + }, + { + "Completes": 48, + "Tier": 1, + "Tag": "SolNode400" + }, + { + "Completes": 27, + "Tier": 1, + "Tag": "SolNode73" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode903" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode904" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SettlementNode10" + }, + { + "Completes": 43, + "Tier": 1, + "Tag": "SolNode135" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "ClanNode22" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "ClanNode23" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode147" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "ClanNode10" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "ClanNode11" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode88" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode97" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode4" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode125" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode10" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode905" + }, + { + "Completes": 84, + "Tier": 1, + "Tag": "SolNode401" + }, + { + "Completes": 10, + "Tag": "SolNode402" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "JupiterToEuropaJunction" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode209" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode24" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode3" + }, + { + "Completes": 34, + "Tier": 1, + "Tag": "SolNode217" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode215" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode220" + }, + { + "Completes": 26, + "Tier": 1, + "Tag": "SolNode203" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode6" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode216" + }, + { + "Completes": 79, + "Tag": "DeimosHub" + }, + { + "Completes": 14, + "Tag": "SolNode211" + }, + { + "Completes": 17, + "Tag": "SolNode214" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode212" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode210" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode204" + }, + { + "Completes": 136, + "Tier": 1, + "Tag": "SolNode205" + }, + { + "Completes": 1, + "Tag": "ClanNode7" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode403" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode404" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode405" + }, + { + "Completes": 44, + "Tier": 1, + "Tag": "SolNode53" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "JupiterToSaturnJunction" + }, + { + "Completes": 142, + "Tier": 1, + "Tag": "SolNode70" + }, + { + "Completes": 19, + "Tier": 1, + "Tag": "SolNode50" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode906" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode12" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode19" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode96" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode42" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode32" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SaturnToUranusJunction" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode82" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode93" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode67" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode20" + }, + { + "Completes": 26, + "Tier": 1, + "Tag": "SolNode31" + }, + { + "Completes": 8, + "Tag": "SolNode18" + }, + { + "Completes": 2, + "Tag": "ClanNode13" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode34" + }, + { + "Completes": 236, + "Tag": "SolNode801" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode25" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "ClanNode5" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode33" + }, + { + "Completes": 2, + "Tag": "SolNode98" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode9" + }, + { + "Completes": 17, + "Tag": "SolNode105" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode114" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode17" + }, + { + "Completes": 1, + "Tag": "SolNode60" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode83" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode69" + }, + { + "Completes": 6, + "Tag": "ClanNode16" + }, + { + "Completes": 1, + "Tag": "UranusToNeptuneJunction" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode1" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode64" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode62" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode300" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode301" + }, + { + "Completes": 36, + "Tier": 1, + "Tag": "SolNode122" + }, + { + "Completes": 5, + "Tag": "SolNode907" + }, + { + "Completes": 49, + "Tier": 1, + "Tag": "SolNode78" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode49" + }, + { + "Completes": 52, + "Tier": 1, + "Tag": "SolNode406" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode407" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode408" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode87" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode307" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode302" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode306" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode304" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode305" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode908" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode84" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode127" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "NeptuneToPlutoJunction" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode6" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SolNode57" + }, + { + "Completes": 4, + "Tag": "SolNode17" + }, + { + "Completes": 1, + "Tag": "ClanNode21" + }, + { + "Completes": 109, + "Tier": 1, + "Tag": "SolNode76" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode38" + }, + { + "Completes": 24, + "Tier": 1, + "Tag": "SolNode102" + }, + { + "Completes": 55, + "Tier": 1, + "Tag": "SolNode4" + }, + { + "Completes": 26, + "Tier": 1, + "Tag": "SolNode48" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "PlutoToSednaJunction" + }, + { + "Completes": 31, + "Tier": 1, + "Tag": "SolNode189" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "PlutoToErisJunction" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode175" + }, + { + "Completes": 49, + "Tier": 1, + "Tag": "SolNode746" + }, + { + "Completes": 19, + "Tier": 1, + "Tag": "SolNode162" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode173" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode166" + }, + { + "Completes": 102, + "Tier": 1, + "Tag": "SolNode181" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode153" + }, + { + "Completes": 7, + "Tag": "SolNode164" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode172" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode19" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode72" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode21" + }, + { + "Completes": 17, + "Tag": "SolNode187" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode196" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode184" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode118" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode188" + }, + { + "Completes": 5, + "Tag": "SolNode410" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode411" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode195" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode14" + }, + { + "Completes": 467, + "Tier": 1, + "Tag": "SolNode129" + }, + { + "Completes": 299, + "Tag": "SolarisUnitedHub1" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode171" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode412" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode409" + }, + { + "Completes": 39, + "Tier": 1, + "Tag": "SolNode177" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode713" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode18" + }, + { + "Completes": 9, + "Tier": 1, + "Tag": "SolNode167" + }, + { + "Completes": 4, + "Tag": "SolNode185" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode15" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SolNode308" + }, + { + "Completes": 5, + "Tag": "ClanNode20" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode24" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode25" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode56" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode43" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode81" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode51" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode191" + }, + { + "Completes": 2, + "Tag": "SolNode190" + }, + { + "Completes": 7, + "Tag": "SolNode199" + }, + { + "Completes": 1, + "Tag": "SolNode183" + }, + { + "Completes": 12, + "Tag": "SolNode193" + }, + { + "Completes": 22, + "Tag": "SolNode763" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode741" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode742" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode747" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode744" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode743" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode748" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode745" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode740" + }, + { + "Completes": 167, + "Tag": "SolNode802" + }, + { + "Completes": 22, + "Tag": "SolNode233" + }, + { + "Completes": 113, + "Tier": 1, + "Tag": "SolNode231" + }, + { + "Completes": 45, + "Tag": "SolNode230" + }, + { + "Completes": 21, + "Tag": "SolNode232" + }, + { + "Completes": 11, + "Tag": "SolNode235" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode309" + }, + { + "Completes": 27, + "Tier": 1, + "Tag": "SolNode310" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode527" + }, + { + "Completes": 7, + "Tag": "CrewBattleNode553" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode556" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode502" + }, + { + "Completes": 4, + "Tag": "CrewBattleNode509" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode518" + }, + { + "Completes": 47, + "Tag": "CrewBattleNode558" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode519" + }, + { + "Completes": 41, + "Tag": "CrewBattleNode522" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode503" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode511" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode512" + }, + { + "Completes": 23, + "Tag": "EventNode5" + }, + { + "Completes": 35, + "Tag": "CrewBattleNode557" + }, + { + "Completes": 5, + "Tag": "SolNode705" + }, + { + "Completes": 8, + "Tag": "EventNode2" + }, + { + "Completes": 4, + "Tag": "CrewBattleNode528" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode531" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode529" + }, + { + "Completes": 15, + "Tag": "CrewBattleNode536" + }, + { + "Completes": 13, + "Tag": "CrewBattleNode550" + }, + { + "Completes": 7, + "Tag": "CrewBattleNode516" + }, + { + "Completes": 8, + "Tag": "CrewBattleNode533" + }, + { + "Completes": 14, + "Tag": "CrewBattleNode554" + }, + { + "Completes": 24, + "Tag": "CrewBattleNode555" + }, + { + "Completes": 18, + "Tag": "CrewBattleNode538" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode534" + }, + { + "Completes": 2, + "Tag": "CrewBattleNode501" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode535" + }, + { + "Completes": 4, + "Tag": "CrewBattleNode530" + }, + { + "Completes": 5, + "Tag": "SolNode764" + }, + { + "Completes": 3, + "Tag": "SolNode701" + }, + { + "Completes": 8, + "Tag": "CrewBattleNode521" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode514" + }, + { + "Completes": 2, + "Tag": "CrewBattleNode515" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode539" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode504" + }, + { + "Completes": 57, + "Tier": 1, + "Tag": "SolNode450" + }, + { + "Completes": 3, + "Tag": "SolNode761" + }, + { + "Completes": 2, + "Tag": "EventNode34" + }, + { + "Completes": 1, + "Tag": "EventNode30" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode540" + }, + { + "Completes": 2, + "Tag": "EventNode25" + }, + { + "Completes": 3, + "Tag": "EventNode24" + }, + { + "Completes": 2, + "Tag": "EventNode26" + }, + { + "Completes": 1, + "Tag": "EventNode37" + }, + { + "Completes": 1, + "Tag": "/Lotus/Language/Locations/Jupiter" + }, + { + "Completes": 92, + "Tier": 1, + "Tag": "SolNode238" + }, + { + "Completes": 30, + "Tier": 1, + "Tag": "SolNode237" + }, + { + "Completes": 13, + "Tag": "SolNode236" + }, + { + "Completes": 1, + "Tag": "EventNode27" + } +] \ No newline at end of file diff --git a/static/fixed_responses/testQuestKeys.json b/static/fixed_responses/testQuestKeys.json new file mode 100644 index 00000000..5dcc460e --- /dev/null +++ b/static/fixed_responses/testQuestKeys.json @@ -0,0 +1,11 @@ +[ + { + "ItemType": "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" + } +] \ No newline at end of file -- 2.47.2 From a91f9692821aa45c6cd693c029974d382a777640 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Mon, 5 Jun 2023 00:17:01 +0200 Subject: [PATCH 015/522] fix some ship things. (#16) --- src/controllers/api/getShipController.ts | 15 +++------ src/models/shipModel.ts | 43 ++++++++++++++---------- src/services/shipService.ts | 6 ++-- src/types/shipTypes.ts | 14 ++++---- static/fixed_responses/postShip.json | 33 ------------------ static/fixed_responses/ship.json | 32 ++++++++++++++++++ 6 files changed, 71 insertions(+), 72 deletions(-) delete mode 100644 static/fixed_responses/postShip.json create mode 100644 static/fixed_responses/ship.json diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index 2da6f8b2..7439acf1 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -1,20 +1,13 @@ -import { Account } from "@/src/models/loginModel"; import { Ship } from "@/src/models/shipModel"; -import { createShip } from "@/src/services/shipService"; import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises -const getShipController: RequestHandler = async (_req, res) => { - const accountId = _req.query.accountId; +const getShipController: RequestHandler = async (req, res) => { + const accountId = req.query.accountId; const ship = await Ship.findOne({ ShipOwnerId: accountId }); if (!ship) { - const account = await Account.findOne({ _id: accountId }); - if (account) { - await createShip(account._id); - const new_ship = await Ship.findOne({ ShipOwnerId: accountId }); - res.json(new_ship); - return; - } + res.status(500).json({ error: "error finding a corresponding ship" }); + return; } res.json(ship); }; diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index d782d917..463a95c2 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,46 +1,53 @@ import { Schema, model } from "mongoose"; -import { IShipDatabase } from "../types/shipTypes"; +import { IShip } from "../types/shipTypes"; import { Oid } from "../types/commonTypes"; -const roomSchema = new Schema({ - Name: String, - MaxCapacity: Number -}); - -roomSchema.set("toJSON", { - transform(_document, returnedObject) { - delete returnedObject._id; - } -}); +const roomSchema = new Schema( + { + Name: String, + MaxCapacity: Number + }, + { _id: false } +); const shipSchema = new Schema({ Rooms: [roomSchema], - Features: [Schema.Types.Mixed], + Features: [String], ContentUrlSignature: String }); +shipSchema.set("toJSON", { + transform(_document, returnedObject) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; + delete returnedObject._id; + } +}); + const apartmentSchema = new Schema({ Rooms: [roomSchema], FavouriteLoadouts: [Schema.Types.Mixed] }); +apartmentSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject._id; + } +}); + const shipDatabaseSchema = new Schema({ - ShipOwnerId: String, + ShipOwnerId: Schema.Types.ObjectId, Ship: shipSchema, Apartment: apartmentSchema }); shipDatabaseSchema.set("toJSON", { transform(_document, returnedObject) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.Ship.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; - delete returnedObject.Ship._id; - delete returnedObject.Apartment._id; delete returnedObject.__v; } }); -const Ship = model("Ship", shipDatabaseSchema); +const Ship = model("Ship", shipDatabaseSchema); export { Ship }; diff --git a/src/services/shipService.ts b/src/services/shipService.ts index 8d131f1a..bce95805 100644 --- a/src/services/shipService.ts +++ b/src/services/shipService.ts @@ -1,5 +1,5 @@ import { Ship } from "@/src/models/shipModel"; -import new_ship from "@/static/fixed_responses/postShip.json"; +import new_ship from "@/static/fixed_responses/ship.json"; import { Types } from "mongoose"; const createShip = async (accountOwnerId: Types.ObjectId) => { @@ -8,9 +8,9 @@ const createShip = async (accountOwnerId: Types.ObjectId) => { await ship.save(); } catch (error) { if (error instanceof Error) { - throw new Error(`error creating inventory" ${error.message}`); + throw new Error(`error creating ship" ${error.message}`); } - throw new Error("error creating inventory that is not of instance Error"); + throw new Error("error creating ship that is not of instance Error"); } }; diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index 7a180521..1c7a1d58 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -1,19 +1,19 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Types } from "mongoose"; -import { Oid } from "./inventoryTypes"; +import { Oid } from "@/src/types/commonTypes"; -export type IShipDatabase = IShipResponse; - -export interface IShipResponse { +export interface IShip { ShipOwnerId: Types.ObjectId; - Ship: IShipClass; + Ship: IShipClassResponse; Apartment: IApartmentClass; } -export interface IShipClass { - Rooms: IRoomsClass[]; +export interface IShipClassResponse extends IShipClassDatabase { ShipId: Oid; +} +export interface IShipClassDatabase { + Rooms: IRoomsClass[]; Features: string[]; ContentUrlSignature: string; } diff --git a/static/fixed_responses/postShip.json b/static/fixed_responses/postShip.json deleted file mode 100644 index aeb53b93..00000000 --- a/static/fixed_responses/postShip.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "ShipOwnerId": "removed", - "Ship": { - "Features": [ - "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem" - ], - "ShipId": { "$oid": "removed" }, - "Rooms": [ - { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, - { "Name": "BridgeRoom", "MaxCapacity": 1600 }, - { "Name": "LisetRoom", "MaxCapacity": 1000 }, - { "Name": "OperatorChamberRoom", "MaxCapacity": 1600 }, - { "Name": "OutsideRoom", "MaxCapacity": 1600 }, - { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } - ], - "ContentUrlSignature": "removed" - }, - "Apartment": { - "Rooms": [ - { "Name": "ElevatorLanding", "MaxCapacity": 1600 }, - { "Name": "ApartmentRoomA", "MaxCapacity": 1000 }, - { "Name": "ApartmentRoomB", "MaxCapacity": 1600 }, - { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, - { "Name": "DuviriHallway", "MaxCapacity": 1600 } - ], - "FavouriteLoadouts": [] - } -} diff --git a/static/fixed_responses/ship.json b/static/fixed_responses/ship.json new file mode 100644 index 00000000..8ed911c1 --- /dev/null +++ b/static/fixed_responses/ship.json @@ -0,0 +1,32 @@ +{ + "Ship": { + "Features": [ + "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem" + ], + "ShipId": { "$oid": "removed" }, + "Rooms": [ + { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, + { "Name": "BridgeRoom", "MaxCapacity": 1600 }, + { "Name": "LisetRoom", "MaxCapacity": 1000 }, + { "Name": "OperatorChamberRoom", "MaxCapacity": 1600 }, + { "Name": "OutsideRoom", "MaxCapacity": 1600 }, + { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } + ], + "ContentUrlSignature": "removed" + }, + "Apartment": { + "Rooms": [ + { "Name": "ElevatorLanding", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomA", "MaxCapacity": 1000 }, + { "Name": "ApartmentRoomB", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, + { "Name": "DuviriHallway", "MaxCapacity": 1600 } + ], + "FavouriteLoadouts": [] + } +} -- 2.47.2 From 216b478556935601426204ec87d96c25094d4a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Sun, 4 Jun 2023 22:24:07 -0300 Subject: [PATCH 016/522] Run prettier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 70975b82bad0a06ce8cdb726e92f87d34742989b Author: Ângelo Tadeucci Date: Sun Jun 4 22:23:28 2023 -0300 prettier --- package-lock.json | 6452 ++++++++++----------- package.json | 70 +- static/fixed_responses/testMissions.json | 2940 +++++----- static/fixed_responses/testQuestKeys.json | 20 +- tsconfig.json | 204 +- 5 files changed, 4843 insertions(+), 4843 deletions(-) diff --git a/package-lock.json b/package-lock.json index 44a892f2..31093fee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,3230 +1,3230 @@ { - "name": "wf-emulator", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "wf-emulator", - "version": "0.1.0", - "license": "GNU", - "dependencies": { - "dotenv": "^16.1.3", - "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" - }, - "devDependencies": { - "@tsconfig/node20": "^1.0.0", - "@types/express": "^4.17.17", - "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.8", - "@typescript-eslint/parser": "^5.59.8", - "eslint": "^8.41.0", - "eslint-plugin-prettier": "^4.2.1", - "morgan": "^1.10.0", - "prettier": "^2.8.8", - "ts-node-dev": "^2.0.0", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" - }, - "engines": { - "node": ">=18.15.0", - "npm": ">=9.5.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", - "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "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/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.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@tsconfig/node20": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", - "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/morgan": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", - "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", - "dev": true - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.8.tgz", - "integrity": "sha512-JDMOmhXteJ4WVKOiHXGCoB96ADWg9q7efPWHRViT/f09bA8XOMLAVHHju3l0MkZnG1izaWXYmgvQcUjTRcpShQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/type-utils": "5.59.8", - "@typescript-eslint/utils": "5.59.8", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.8.tgz", - "integrity": "sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/typescript-estree": "5.59.8", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz", - "integrity": "sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/visitor-keys": "5.59.8" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.8.tgz", - "integrity": "sha512-+5M518uEIHFBy3FnyqZUF3BMP+AXnYn4oyH8RF012+e7/msMY98FhGL5SrN29NQ9xDgvqCgYnsOiKp1VjZ/fpA==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.8", - "@typescript-eslint/utils": "5.59.8", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/type-utils/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/@typescript-eslint/types": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.8.tgz", - "integrity": "sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz", - "integrity": "sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/visitor-keys": "5.59.8", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.8.tgz", - "integrity": "sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/typescript-estree": "5.59.8", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", - "integrity": "sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.8", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "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": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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": "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/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/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/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==", - "dev": true, - "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==", - "dev": true - }, - "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/body-parser": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", - "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/body-parser/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/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/bson": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", - "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", - "engines": { - "node": ">=14.20.1" - } - }, - "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/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/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/chokidar/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/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/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/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/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/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "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/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "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/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "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==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", - "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", - "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", - "dev": true, - "dependencies": { - "xtend": "^4.0.0" - } - }, - "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/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/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": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", - "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.41.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/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/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/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/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/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/express": { - "version": "5.0.0-beta.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", - "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "3.0.0", - "body-parser": "2.0.0-beta.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "3.1.0", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "mime-types": "~2.1.34", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-is-absolute": "1.0.1", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "router": "2.0.0-beta.1", - "safe-buffer": "5.2.1", - "send": "1.0.0-beta.1", - "serve-static": "2.0.0-beta.1", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/express/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/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/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/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/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "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/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/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/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/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/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "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/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "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-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-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "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-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-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": 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/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "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/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "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/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "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/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "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==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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/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": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", - "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", - "dependencies": { - "bson": "^5.2.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongoose": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", - "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", - "dependencies": { - "bson": "^5.2.0", - "kareem": "2.5.1", - "mongodb": "5.3.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/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/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mquery/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/mquery/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/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "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/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/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/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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.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/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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/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.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.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-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/router": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", - "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", - "dependencies": { - "array-flatten": "3.0.0", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "3.2.0", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "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/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", - "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", - "dependencies": { - "debug": "3.1.0", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime-types": "~2.1.34", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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/serve-static": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", - "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "1.0.0-beta.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "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/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "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/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/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "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/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node-dev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", - "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^10.4.0", - "tsconfig": "^7.0.0" - }, - "bin": { - "ts-node-dev": "lib/bin.js", - "tsnd": "lib/bin.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "node-notifier": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/ts-node-dev/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig/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/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": 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/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "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/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "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/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "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/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "name": "wf-emulator", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "wf-emulator", + "version": "0.1.0", + "license": "GNU", + "dependencies": { + "dotenv": "^16.1.3", + "express": "^5.0.0-beta.1", + "mongoose": "^7.1.1" + }, + "devDependencies": { + "@tsconfig/node20": "^1.0.0", + "@types/express": "^4.17.17", + "@types/morgan": "^1.9.4", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "eslint": "^8.41.0", + "eslint-plugin-prettier": "^4.2.1", + "morgan": "^1.10.0", + "prettier": "^2.8.8", + "ts-node-dev": "^2.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.1.3" + }, + "engines": { + "node": ">=18.15.0", + "npm": ">=9.5.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "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/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.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@tsconfig/node20": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", + "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/morgan": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", + "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "18.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.8.tgz", + "integrity": "sha512-JDMOmhXteJ4WVKOiHXGCoB96ADWg9q7efPWHRViT/f09bA8XOMLAVHHju3l0MkZnG1izaWXYmgvQcUjTRcpShQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/type-utils": "5.59.8", + "@typescript-eslint/utils": "5.59.8", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.8.tgz", + "integrity": "sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/typescript-estree": "5.59.8", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz", + "integrity": "sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.8.tgz", + "integrity": "sha512-+5M518uEIHFBy3FnyqZUF3BMP+AXnYn4oyH8RF012+e7/msMY98FhGL5SrN29NQ9xDgvqCgYnsOiKp1VjZ/fpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.8", + "@typescript-eslint/utils": "5.59.8", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/type-utils/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/@typescript-eslint/types": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.8.tgz", + "integrity": "sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz", + "integrity": "sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.8.tgz", + "integrity": "sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/typescript-estree": "5.59.8", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", + "integrity": "sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "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": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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": "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/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/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/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==", + "dev": true, + "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==", + "dev": true + }, + "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/body-parser": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", + "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/body-parser/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/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/bson": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", + "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", + "engines": { + "node": ">=14.20.1" + } + }, + "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/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/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/chokidar/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/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/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/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/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/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "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/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", + "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dynamic-dedupe": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", + "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", + "dev": true, + "dependencies": { + "xtend": "^4.0.0" + } + }, + "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/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/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": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/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/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/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/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/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/express": { + "version": "5.0.0-beta.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", + "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "3.0.0", + "body-parser": "2.0.0-beta.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "3.1.0", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "mime-types": "~2.1.34", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-is-absolute": "1.0.1", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "router": "2.0.0-beta.1", + "safe-buffer": "5.2.1", + "send": "1.0.0-beta.1", + "serve-static": "2.0.0-beta.1", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/express/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/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/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/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/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "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/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "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/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/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/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/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/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "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-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-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "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-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-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": 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/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "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/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "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/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "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/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/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": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", + "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", + "dependencies": { + "bson": "^5.2.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", + "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", + "dependencies": { + "bson": "^5.2.0", + "kareem": "2.5.1", + "mongodb": "5.3.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/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/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/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/mquery/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/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "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/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/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/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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.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/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/router": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", + "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", + "dependencies": { + "array-flatten": "3.0.0", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "3.2.0", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", + "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", + "dependencies": { + "debug": "3.1.0", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime-types": "~2.1.34", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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/serve-static": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", + "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "1.0.0-beta.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "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/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "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/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/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", + "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.1", + "dynamic-dedupe": "^0.3.0", + "minimist": "^1.2.6", + "mkdirp": "^1.0.4", + "resolve": "^1.0.0", + "rimraf": "^2.6.1", + "source-map-support": "^0.5.12", + "tree-kill": "^1.2.2", + "ts-node": "^10.4.0", + "tsconfig": "^7.0.0" + }, + "bin": { + "ts-node-dev": "lib/bin.js", + "tsnd": "lib/bin.js" + }, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "node-notifier": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/ts-node-dev/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig/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/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": 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/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "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/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } + } } diff --git a/package.json b/package.json index 8f7a8281..afbd531a 100644 --- a/package.json +++ b/package.json @@ -1,37 +1,37 @@ { - "name": "wf-emulator", - "version": "0.1.0", - "description": "WF Emulator", - "main": "index.ts", - "scripts": { - "start": "node build/index.js", - "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts", - "build": "tsc", - "lint": "eslint --ext .ts .", - "prettier": "prettier --write ." - }, - "license": "GNU", - "dependencies": { - "dotenv": "^16.1.3", - "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" - }, - "devDependencies": { - "@tsconfig/node20": "^1.0.0", - "@types/express": "^4.17.17", - "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.8", - "@typescript-eslint/parser": "^5.59.8", - "eslint": "^8.41.0", - "eslint-plugin-prettier": "^4.2.1", - "morgan": "^1.10.0", - "prettier": "^2.8.8", - "ts-node-dev": "^2.0.0", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" - }, - "engines": { - "node": ">=18.15.0", - "npm": ">=9.5.0" - } + "name": "wf-emulator", + "version": "0.1.0", + "description": "WF Emulator", + "main": "index.ts", + "scripts": { + "start": "node build/index.js", + "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts", + "build": "tsc", + "lint": "eslint --ext .ts .", + "prettier": "prettier --write ." + }, + "license": "GNU", + "dependencies": { + "dotenv": "^16.1.3", + "express": "^5.0.0-beta.1", + "mongoose": "^7.1.1" + }, + "devDependencies": { + "@tsconfig/node20": "^1.0.0", + "@types/express": "^4.17.17", + "@types/morgan": "^1.9.4", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "eslint": "^8.41.0", + "eslint-plugin-prettier": "^4.2.1", + "morgan": "^1.10.0", + "prettier": "^2.8.8", + "ts-node-dev": "^2.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.1.3" + }, + "engines": { + "node": ">=18.15.0", + "npm": ">=9.5.0" + } } diff --git a/static/fixed_responses/testMissions.json b/static/fixed_responses/testMissions.json index eb0340ae..dd2cf9fc 100644 --- a/static/fixed_responses/testMissions.json +++ b/static/fixed_responses/testMissions.json @@ -1,1471 +1,1471 @@ [ - { - "Completes": 58, - "Tier": 1, - "Tag": "SolNode27" - }, - { - "Completes": 137, - "Tier": 1, - "Tag": "SolNode89" - }, - { - "Completes": 86, - "Tier": 1, - "Tag": "SolNode63" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode85" - }, - { - "Completes": 25, - "Tier": 1, - "Tag": "SolNode15" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode79" - }, - { - "Completes": 30, - "Tier": 1, - "Tag": "SolNode26" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "EarthToVenusJunction" - }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode128" - }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode123" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode66" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode22" - }, - { - "Completes": 31, - "Tier": 1, - "Tag": "SolNode109" - }, - { - "Completes": 25, - "Tier": 1, - "Tag": "SolNode61" - }, - { - "Completes": 180, - "Tag": "CetusHub4" - }, - { - "Completes": 563, - "Tier": 1, - "Tag": "SolNode228" - }, - { - "Completes": 34, - "Tier": 1, - "Tag": "SolNode39" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SolNode75" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode59" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "ClanNode2" - }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode101" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode2" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode104" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "VenusToMercuryJunction" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode226" - }, - { - "Completes": 9, - "Tier": 1, - "Tag": "SolNode119" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode12" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode225" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode103" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode28" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode130" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "EarthToMarsJunction" - }, - { - "Completes": 78, - "Tier": 1, - "Tag": "SolNode58" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode11" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode65" - }, - { - "Completes": 29, - "Tier": 1, - "Tag": "SolNode16" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode46" - }, - { - "Completes": 25, - "Tier": 1, - "Tag": "SolNode113" - }, - { - "Completes": 69, - "Tier": 1, - "Tag": "SolNode45" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode106" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "MarsToPhobosJunction" - }, - { - "Completes": 79, - "Tier": 1, - "Tag": "SettlementNode1" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SettlementNode14" - }, - { - "Completes": 77, - "Tier": 1, - "Tag": "SettlementNode2" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SettlementNode15" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SettlementNode12" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SettlementNode20" - }, - { - "Completes": 35, - "Tier": 1, - "Tag": "SettlementNode3" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode1" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode23" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode0" - }, - { - "Completes": 70, - "Tier": 1, - "Tag": "SolNode107" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode223" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode108" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode224" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode94" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode41" - }, - { - "Completes": 37, - "Tier": 1, - "Tag": "SolNode30" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode36" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode68" - }, - { - "Completes": 24, - "Tier": 1, - "Tag": "SolNode99" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "ClanNode8" - }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode706" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode708" - }, - { - "Completes": 151, - "Tier": 1, - "Tag": "SolNode229" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "MarsToCeresJunction" - }, - { - "Completes": 38, - "Tier": 1, - "Tag": "SolNode14" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode9" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SettlementNode11" - }, - { - "Completes": 107, - "Tier": 1, - "Tag": "SolNode131" - }, - { - "Completes": 22, - "Tier": 1, - "Tag": "SolNode132" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode149" - }, - { - "Completes": 54, - "Tier": 1, - "Tag": "SolNode139" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode138" - }, - { - "Completes": 19, - "Tier": 1, - "Tag": "SolNode141" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode144" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode146" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode710" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode709" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode707" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode712" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode711" - }, - { - "Completes": 24, - "Tier": 1, - "Tag": "SolNode137" - }, - { - "Completes": 9, - "Tier": 1, - "Tag": "SolNode140" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode902" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "CeresToJupiterJunction" - }, - { - "Completes": 53, - "Tier": 1, - "Tag": "SolNode126" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode100" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode74" - }, - { - "Completes": 71, - "Tier": 1, - "Tag": "SolNode121" - }, - { - "Completes": 48, - "Tier": 1, - "Tag": "SolNode400" - }, - { - "Completes": 27, - "Tier": 1, - "Tag": "SolNode73" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode903" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode904" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SettlementNode10" - }, - { - "Completes": 43, - "Tier": 1, - "Tag": "SolNode135" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "ClanNode22" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "ClanNode23" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode147" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "ClanNode10" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "ClanNode11" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode88" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode97" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode4" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode125" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode10" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode905" - }, - { - "Completes": 84, - "Tier": 1, - "Tag": "SolNode401" - }, - { - "Completes": 10, - "Tag": "SolNode402" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "JupiterToEuropaJunction" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode209" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode24" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode3" - }, - { - "Completes": 34, - "Tier": 1, - "Tag": "SolNode217" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode215" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode220" - }, - { - "Completes": 26, - "Tier": 1, - "Tag": "SolNode203" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode6" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode216" - }, - { - "Completes": 79, - "Tag": "DeimosHub" - }, - { - "Completes": 14, - "Tag": "SolNode211" - }, - { - "Completes": 17, - "Tag": "SolNode214" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode212" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode210" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode204" - }, - { - "Completes": 136, - "Tier": 1, - "Tag": "SolNode205" - }, - { - "Completes": 1, - "Tag": "ClanNode7" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode403" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode404" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode405" - }, - { - "Completes": 44, - "Tier": 1, - "Tag": "SolNode53" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "JupiterToSaturnJunction" - }, - { - "Completes": 142, - "Tier": 1, - "Tag": "SolNode70" - }, - { - "Completes": 19, - "Tier": 1, - "Tag": "SolNode50" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode906" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode12" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode19" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode96" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode42" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode32" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SaturnToUranusJunction" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode82" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode93" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode67" - }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode20" - }, - { - "Completes": 26, - "Tier": 1, - "Tag": "SolNode31" - }, - { - "Completes": 8, - "Tag": "SolNode18" - }, - { - "Completes": 2, - "Tag": "ClanNode13" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode34" - }, - { - "Completes": 236, - "Tag": "SolNode801" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode25" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "ClanNode5" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode33" - }, - { - "Completes": 2, - "Tag": "SolNode98" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode9" - }, - { - "Completes": 17, - "Tag": "SolNode105" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode114" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode17" - }, - { - "Completes": 1, - "Tag": "SolNode60" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode83" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode69" - }, - { - "Completes": 6, - "Tag": "ClanNode16" - }, - { - "Completes": 1, - "Tag": "UranusToNeptuneJunction" - }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode1" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode64" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode62" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode300" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode301" - }, - { - "Completes": 36, - "Tier": 1, - "Tag": "SolNode122" - }, - { - "Completes": 5, - "Tag": "SolNode907" - }, - { - "Completes": 49, - "Tier": 1, - "Tag": "SolNode78" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode49" - }, - { - "Completes": 52, - "Tier": 1, - "Tag": "SolNode406" - }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode407" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode408" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode87" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode307" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode302" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode306" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode304" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode305" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode908" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode84" - }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode127" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "NeptuneToPlutoJunction" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode6" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SolNode57" - }, - { - "Completes": 4, - "Tag": "SolNode17" - }, - { - "Completes": 1, - "Tag": "ClanNode21" - }, - { - "Completes": 109, - "Tier": 1, - "Tag": "SolNode76" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode38" - }, - { - "Completes": 24, - "Tier": 1, - "Tag": "SolNode102" - }, - { - "Completes": 55, - "Tier": 1, - "Tag": "SolNode4" - }, - { - "Completes": 26, - "Tier": 1, - "Tag": "SolNode48" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "PlutoToSednaJunction" - }, - { - "Completes": 31, - "Tier": 1, - "Tag": "SolNode189" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "PlutoToErisJunction" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode175" - }, - { - "Completes": 49, - "Tier": 1, - "Tag": "SolNode746" - }, - { - "Completes": 19, - "Tier": 1, - "Tag": "SolNode162" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode173" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode166" - }, - { - "Completes": 102, - "Tier": 1, - "Tag": "SolNode181" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode153" - }, - { - "Completes": 7, - "Tag": "SolNode164" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode172" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode19" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode72" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode21" - }, - { - "Completes": 17, - "Tag": "SolNode187" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode196" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode184" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode118" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode188" - }, - { - "Completes": 5, - "Tag": "SolNode410" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode411" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode195" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode14" - }, - { - "Completes": 467, - "Tier": 1, - "Tag": "SolNode129" - }, - { - "Completes": 299, - "Tag": "SolarisUnitedHub1" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode171" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode412" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode409" - }, - { - "Completes": 39, - "Tier": 1, - "Tag": "SolNode177" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode713" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode18" - }, - { - "Completes": 9, - "Tier": 1, - "Tag": "SolNode167" - }, - { - "Completes": 4, - "Tag": "SolNode185" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode15" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SolNode308" - }, - { - "Completes": 5, - "Tag": "ClanNode20" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode24" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode25" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode56" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode43" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode81" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode51" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode191" - }, - { - "Completes": 2, - "Tag": "SolNode190" - }, - { - "Completes": 7, - "Tag": "SolNode199" - }, - { - "Completes": 1, - "Tag": "SolNode183" - }, - { - "Completes": 12, - "Tag": "SolNode193" - }, - { - "Completes": 22, - "Tag": "SolNode763" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode741" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode742" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode747" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode744" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode743" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode748" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode745" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode740" - }, - { - "Completes": 167, - "Tag": "SolNode802" - }, - { - "Completes": 22, - "Tag": "SolNode233" - }, - { - "Completes": 113, - "Tier": 1, - "Tag": "SolNode231" - }, - { - "Completes": 45, - "Tag": "SolNode230" - }, - { - "Completes": 21, - "Tag": "SolNode232" - }, - { - "Completes": 11, - "Tag": "SolNode235" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode309" - }, - { - "Completes": 27, - "Tier": 1, - "Tag": "SolNode310" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode527" - }, - { - "Completes": 7, - "Tag": "CrewBattleNode553" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode556" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode502" - }, - { - "Completes": 4, - "Tag": "CrewBattleNode509" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode518" - }, - { - "Completes": 47, - "Tag": "CrewBattleNode558" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode519" - }, - { - "Completes": 41, - "Tag": "CrewBattleNode522" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode503" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode511" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode512" - }, - { - "Completes": 23, - "Tag": "EventNode5" - }, - { - "Completes": 35, - "Tag": "CrewBattleNode557" - }, - { - "Completes": 5, - "Tag": "SolNode705" - }, - { - "Completes": 8, - "Tag": "EventNode2" - }, - { - "Completes": 4, - "Tag": "CrewBattleNode528" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode531" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode529" - }, - { - "Completes": 15, - "Tag": "CrewBattleNode536" - }, - { - "Completes": 13, - "Tag": "CrewBattleNode550" - }, - { - "Completes": 7, - "Tag": "CrewBattleNode516" - }, - { - "Completes": 8, - "Tag": "CrewBattleNode533" - }, - { - "Completes": 14, - "Tag": "CrewBattleNode554" - }, - { - "Completes": 24, - "Tag": "CrewBattleNode555" - }, - { - "Completes": 18, - "Tag": "CrewBattleNode538" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode534" - }, - { - "Completes": 2, - "Tag": "CrewBattleNode501" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode535" - }, - { - "Completes": 4, - "Tag": "CrewBattleNode530" - }, - { - "Completes": 5, - "Tag": "SolNode764" - }, - { - "Completes": 3, - "Tag": "SolNode701" - }, - { - "Completes": 8, - "Tag": "CrewBattleNode521" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode514" - }, - { - "Completes": 2, - "Tag": "CrewBattleNode515" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode539" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode504" - }, - { - "Completes": 57, - "Tier": 1, - "Tag": "SolNode450" - }, - { - "Completes": 3, - "Tag": "SolNode761" - }, - { - "Completes": 2, - "Tag": "EventNode34" - }, - { - "Completes": 1, - "Tag": "EventNode30" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode540" - }, - { - "Completes": 2, - "Tag": "EventNode25" - }, - { - "Completes": 3, - "Tag": "EventNode24" - }, - { - "Completes": 2, - "Tag": "EventNode26" - }, - { - "Completes": 1, - "Tag": "EventNode37" - }, - { - "Completes": 1, - "Tag": "/Lotus/Language/Locations/Jupiter" - }, - { - "Completes": 92, - "Tier": 1, - "Tag": "SolNode238" - }, - { - "Completes": 30, - "Tier": 1, - "Tag": "SolNode237" - }, - { - "Completes": 13, - "Tag": "SolNode236" - }, - { - "Completes": 1, - "Tag": "EventNode27" - } -] \ No newline at end of file + { + "Completes": 58, + "Tier": 1, + "Tag": "SolNode27" + }, + { + "Completes": 137, + "Tier": 1, + "Tag": "SolNode89" + }, + { + "Completes": 86, + "Tier": 1, + "Tag": "SolNode63" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode85" + }, + { + "Completes": 25, + "Tier": 1, + "Tag": "SolNode15" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode79" + }, + { + "Completes": 30, + "Tier": 1, + "Tag": "SolNode26" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "EarthToVenusJunction" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode128" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode123" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode66" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode22" + }, + { + "Completes": 31, + "Tier": 1, + "Tag": "SolNode109" + }, + { + "Completes": 25, + "Tier": 1, + "Tag": "SolNode61" + }, + { + "Completes": 180, + "Tag": "CetusHub4" + }, + { + "Completes": 563, + "Tier": 1, + "Tag": "SolNode228" + }, + { + "Completes": 34, + "Tier": 1, + "Tag": "SolNode39" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SolNode75" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode59" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "ClanNode2" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode101" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode2" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode104" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "VenusToMercuryJunction" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode226" + }, + { + "Completes": 9, + "Tier": 1, + "Tag": "SolNode119" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode12" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode225" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode103" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode28" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode130" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "EarthToMarsJunction" + }, + { + "Completes": 78, + "Tier": 1, + "Tag": "SolNode58" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode11" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode65" + }, + { + "Completes": 29, + "Tier": 1, + "Tag": "SolNode16" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode46" + }, + { + "Completes": 25, + "Tier": 1, + "Tag": "SolNode113" + }, + { + "Completes": 69, + "Tier": 1, + "Tag": "SolNode45" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode106" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "MarsToPhobosJunction" + }, + { + "Completes": 79, + "Tier": 1, + "Tag": "SettlementNode1" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SettlementNode14" + }, + { + "Completes": 77, + "Tier": 1, + "Tag": "SettlementNode2" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SettlementNode15" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SettlementNode12" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SettlementNode20" + }, + { + "Completes": 35, + "Tier": 1, + "Tag": "SettlementNode3" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode1" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode23" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode0" + }, + { + "Completes": 70, + "Tier": 1, + "Tag": "SolNode107" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode223" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode108" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode224" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode94" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode41" + }, + { + "Completes": 37, + "Tier": 1, + "Tag": "SolNode30" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode36" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode68" + }, + { + "Completes": 24, + "Tier": 1, + "Tag": "SolNode99" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "ClanNode8" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode706" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode708" + }, + { + "Completes": 151, + "Tier": 1, + "Tag": "SolNode229" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "MarsToCeresJunction" + }, + { + "Completes": 38, + "Tier": 1, + "Tag": "SolNode14" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode9" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SettlementNode11" + }, + { + "Completes": 107, + "Tier": 1, + "Tag": "SolNode131" + }, + { + "Completes": 22, + "Tier": 1, + "Tag": "SolNode132" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode149" + }, + { + "Completes": 54, + "Tier": 1, + "Tag": "SolNode139" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode138" + }, + { + "Completes": 19, + "Tier": 1, + "Tag": "SolNode141" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode144" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode146" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode710" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode709" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode707" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode712" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode711" + }, + { + "Completes": 24, + "Tier": 1, + "Tag": "SolNode137" + }, + { + "Completes": 9, + "Tier": 1, + "Tag": "SolNode140" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode902" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "CeresToJupiterJunction" + }, + { + "Completes": 53, + "Tier": 1, + "Tag": "SolNode126" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode100" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode74" + }, + { + "Completes": 71, + "Tier": 1, + "Tag": "SolNode121" + }, + { + "Completes": 48, + "Tier": 1, + "Tag": "SolNode400" + }, + { + "Completes": 27, + "Tier": 1, + "Tag": "SolNode73" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode903" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode904" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SettlementNode10" + }, + { + "Completes": 43, + "Tier": 1, + "Tag": "SolNode135" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "ClanNode22" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "ClanNode23" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode147" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "ClanNode10" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "ClanNode11" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode88" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode97" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode4" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode125" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode10" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode905" + }, + { + "Completes": 84, + "Tier": 1, + "Tag": "SolNode401" + }, + { + "Completes": 10, + "Tag": "SolNode402" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "JupiterToEuropaJunction" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode209" + }, + { + "Completes": 20, + "Tier": 1, + "Tag": "SolNode24" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode3" + }, + { + "Completes": 34, + "Tier": 1, + "Tag": "SolNode217" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode215" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode220" + }, + { + "Completes": 26, + "Tier": 1, + "Tag": "SolNode203" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode6" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode216" + }, + { + "Completes": 79, + "Tag": "DeimosHub" + }, + { + "Completes": 14, + "Tag": "SolNode211" + }, + { + "Completes": 17, + "Tag": "SolNode214" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode212" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode210" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode204" + }, + { + "Completes": 136, + "Tier": 1, + "Tag": "SolNode205" + }, + { + "Completes": 1, + "Tag": "ClanNode7" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode403" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode404" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode405" + }, + { + "Completes": 44, + "Tier": 1, + "Tag": "SolNode53" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "JupiterToSaturnJunction" + }, + { + "Completes": 142, + "Tier": 1, + "Tag": "SolNode70" + }, + { + "Completes": 19, + "Tier": 1, + "Tag": "SolNode50" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode906" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode12" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode19" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode96" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode42" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode32" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SaturnToUranusJunction" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode82" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode93" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode67" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode20" + }, + { + "Completes": 26, + "Tier": 1, + "Tag": "SolNode31" + }, + { + "Completes": 8, + "Tag": "SolNode18" + }, + { + "Completes": 2, + "Tag": "ClanNode13" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode34" + }, + { + "Completes": 236, + "Tag": "SolNode801" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode25" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "ClanNode5" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode33" + }, + { + "Completes": 2, + "Tag": "SolNode98" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode9" + }, + { + "Completes": 17, + "Tag": "SolNode105" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode114" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode17" + }, + { + "Completes": 1, + "Tag": "SolNode60" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "SolNode83" + }, + { + "Completes": 17, + "Tier": 1, + "Tag": "SolNode69" + }, + { + "Completes": 6, + "Tag": "ClanNode16" + }, + { + "Completes": 1, + "Tag": "UranusToNeptuneJunction" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode1" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode64" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode62" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode300" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode301" + }, + { + "Completes": 36, + "Tier": 1, + "Tag": "SolNode122" + }, + { + "Completes": 5, + "Tag": "SolNode907" + }, + { + "Completes": 49, + "Tier": 1, + "Tag": "SolNode78" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode49" + }, + { + "Completes": 52, + "Tier": 1, + "Tag": "SolNode406" + }, + { + "Completes": 65, + "Tier": 1, + "Tag": "SolNode407" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode408" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode87" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode307" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode302" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode306" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode304" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode305" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode908" + }, + { + "Completes": 6, + "Tier": 1, + "Tag": "SolNode84" + }, + { + "Completes": 32, + "Tier": 1, + "Tag": "SolNode127" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "NeptuneToPlutoJunction" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode6" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SolNode57" + }, + { + "Completes": 4, + "Tag": "SolNode17" + }, + { + "Completes": 1, + "Tag": "ClanNode21" + }, + { + "Completes": 109, + "Tier": 1, + "Tag": "SolNode76" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode38" + }, + { + "Completes": 24, + "Tier": 1, + "Tag": "SolNode102" + }, + { + "Completes": 55, + "Tier": 1, + "Tag": "SolNode4" + }, + { + "Completes": 26, + "Tier": 1, + "Tag": "SolNode48" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "PlutoToSednaJunction" + }, + { + "Completes": 31, + "Tier": 1, + "Tag": "SolNode189" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "PlutoToErisJunction" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode175" + }, + { + "Completes": 49, + "Tier": 1, + "Tag": "SolNode746" + }, + { + "Completes": 19, + "Tier": 1, + "Tag": "SolNode162" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode173" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode166" + }, + { + "Completes": 102, + "Tier": 1, + "Tag": "SolNode181" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode153" + }, + { + "Completes": 7, + "Tag": "SolNode164" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode172" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode19" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode72" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode21" + }, + { + "Completes": 17, + "Tag": "SolNode187" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode196" + }, + { + "Completes": 18, + "Tier": 1, + "Tag": "SolNode184" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode118" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode188" + }, + { + "Completes": 5, + "Tag": "SolNode410" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode411" + }, + { + "Completes": 5, + "Tier": 1, + "Tag": "SolNode195" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode14" + }, + { + "Completes": 467, + "Tier": 1, + "Tag": "SolNode129" + }, + { + "Completes": 299, + "Tag": "SolarisUnitedHub1" + }, + { + "Completes": 21, + "Tier": 1, + "Tag": "SolNode171" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode412" + }, + { + "Completes": 14, + "Tier": 1, + "Tag": "SolNode409" + }, + { + "Completes": 39, + "Tier": 1, + "Tag": "SolNode177" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode713" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode18" + }, + { + "Completes": 9, + "Tier": 1, + "Tag": "SolNode167" + }, + { + "Completes": 4, + "Tag": "SolNode185" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "ClanNode15" + }, + { + "Completes": 33, + "Tier": 1, + "Tag": "SolNode308" + }, + { + "Completes": 5, + "Tag": "ClanNode20" + }, + { + "Completes": 4, + "Tier": 1, + "Tag": "ClanNode24" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "ClanNode25" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode56" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode43" + }, + { + "Completes": 16, + "Tier": 1, + "Tag": "SolNode81" + }, + { + "Completes": 23, + "Tier": 1, + "Tag": "SolNode51" + }, + { + "Completes": 8, + "Tier": 1, + "Tag": "SolNode191" + }, + { + "Completes": 2, + "Tag": "SolNode190" + }, + { + "Completes": 7, + "Tag": "SolNode199" + }, + { + "Completes": 1, + "Tag": "SolNode183" + }, + { + "Completes": 12, + "Tag": "SolNode193" + }, + { + "Completes": 22, + "Tag": "SolNode763" + }, + { + "Completes": 12, + "Tier": 1, + "Tag": "SolNode741" + }, + { + "Completes": 7, + "Tier": 1, + "Tag": "SolNode742" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode747" + }, + { + "Completes": 13, + "Tier": 1, + "Tag": "SolNode744" + }, + { + "Completes": 3, + "Tier": 1, + "Tag": "SolNode743" + }, + { + "Completes": 15, + "Tier": 1, + "Tag": "SolNode748" + }, + { + "Completes": 11, + "Tier": 1, + "Tag": "SolNode745" + }, + { + "Completes": 10, + "Tier": 1, + "Tag": "SolNode740" + }, + { + "Completes": 167, + "Tag": "SolNode802" + }, + { + "Completes": 22, + "Tag": "SolNode233" + }, + { + "Completes": 113, + "Tier": 1, + "Tag": "SolNode231" + }, + { + "Completes": 45, + "Tag": "SolNode230" + }, + { + "Completes": 21, + "Tag": "SolNode232" + }, + { + "Completes": 11, + "Tag": "SolNode235" + }, + { + "Completes": 2, + "Tier": 1, + "Tag": "SolNode309" + }, + { + "Completes": 27, + "Tier": 1, + "Tag": "SolNode310" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode527" + }, + { + "Completes": 7, + "Tag": "CrewBattleNode553" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode556" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode502" + }, + { + "Completes": 4, + "Tag": "CrewBattleNode509" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode518" + }, + { + "Completes": 47, + "Tag": "CrewBattleNode558" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode519" + }, + { + "Completes": 41, + "Tag": "CrewBattleNode522" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode503" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode511" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode512" + }, + { + "Completes": 23, + "Tag": "EventNode5" + }, + { + "Completes": 35, + "Tag": "CrewBattleNode557" + }, + { + "Completes": 5, + "Tag": "SolNode705" + }, + { + "Completes": 8, + "Tag": "EventNode2" + }, + { + "Completes": 4, + "Tag": "CrewBattleNode528" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode531" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode529" + }, + { + "Completes": 15, + "Tag": "CrewBattleNode536" + }, + { + "Completes": 13, + "Tag": "CrewBattleNode550" + }, + { + "Completes": 7, + "Tag": "CrewBattleNode516" + }, + { + "Completes": 8, + "Tag": "CrewBattleNode533" + }, + { + "Completes": 14, + "Tag": "CrewBattleNode554" + }, + { + "Completes": 24, + "Tag": "CrewBattleNode555" + }, + { + "Completes": 18, + "Tag": "CrewBattleNode538" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode534" + }, + { + "Completes": 2, + "Tag": "CrewBattleNode501" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode535" + }, + { + "Completes": 4, + "Tag": "CrewBattleNode530" + }, + { + "Completes": 5, + "Tag": "SolNode764" + }, + { + "Completes": 3, + "Tag": "SolNode701" + }, + { + "Completes": 8, + "Tag": "CrewBattleNode521" + }, + { + "Completes": 3, + "Tag": "CrewBattleNode514" + }, + { + "Completes": 2, + "Tag": "CrewBattleNode515" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode539" + }, + { + "Completes": 6, + "Tag": "CrewBattleNode504" + }, + { + "Completes": 57, + "Tier": 1, + "Tag": "SolNode450" + }, + { + "Completes": 3, + "Tag": "SolNode761" + }, + { + "Completes": 2, + "Tag": "EventNode34" + }, + { + "Completes": 1, + "Tag": "EventNode30" + }, + { + "Completes": 1, + "Tag": "CrewBattleNode540" + }, + { + "Completes": 2, + "Tag": "EventNode25" + }, + { + "Completes": 3, + "Tag": "EventNode24" + }, + { + "Completes": 2, + "Tag": "EventNode26" + }, + { + "Completes": 1, + "Tag": "EventNode37" + }, + { + "Completes": 1, + "Tag": "/Lotus/Language/Locations/Jupiter" + }, + { + "Completes": 92, + "Tier": 1, + "Tag": "SolNode238" + }, + { + "Completes": 30, + "Tier": 1, + "Tag": "SolNode237" + }, + { + "Completes": 13, + "Tag": "SolNode236" + }, + { + "Completes": 1, + "Tag": "EventNode27" + } +] diff --git a/static/fixed_responses/testQuestKeys.json b/static/fixed_responses/testQuestKeys.json index 5dcc460e..df32ed3d 100644 --- a/static/fixed_responses/testQuestKeys.json +++ b/static/fixed_responses/testQuestKeys.json @@ -1,11 +1,11 @@ [ - { - "ItemType": "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" - } -] \ No newline at end of file + { + "ItemType": "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" + } +] diff --git a/tsconfig.json b/tsconfig.json index 58fa269b..a75f01a3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,113 +1,113 @@ { - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ + "extends": "@tsconfig/node20/tsconfig.json", + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - //"target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": ["es2023"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + /* Language and Environment */ + //"target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": ["es2023"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ - //"module": "commonjs" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - "resolveJsonModule": true /* Enable importing .json files. */, - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + /* Modules */ + //"module": "commonjs" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + "resolveJsonModule": true /* Enable importing .json files. */, + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./build/" /* Specify an output folder for all emitted files. */, - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./build/" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - "noImplicitAny": true /* Enable error reporting for expressions and declarations with an implied 'any' type. */, - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - //"noUnusedLocals": true /* Enable error reporting when local variables aren't read. */, - "noUnusedParameters": true /* Raise an error when a function parameter isn't read. */, - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - "noImplicitReturns": true /* Enable error reporting for codepaths that do not explicitly return in a function. */, - "noFallthroughCasesInSwitch": true /* Enable error reporting for fallthrough cases in switch statements. */, - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Enable error reporting for expressions and declarations with an implied 'any' type. */, + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + //"noUnusedLocals": true /* Enable error reporting when local variables aren't read. */, + "noUnusedParameters": true /* Raise an error when a function parameter isn't read. */, + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + "noImplicitReturns": true /* Enable error reporting for codepaths that do not explicitly return in a function. */, + "noFallthroughCasesInSwitch": true /* Enable error reporting for fallthrough cases in switch statements. */, + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */, - "paths": { - "@/*": ["./*"] - } + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "paths": { + "@/*": ["./*"] } + } } -- 2.47.2 From 737915557bf1c5b5019c9b19a563ea054f307daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Tue, 6 Jun 2023 19:38:58 -0300 Subject: [PATCH 017/522] Create gh action - format (#17) Co-authored-by: AngeloTadeucci --- .github/workflows/prettier.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/prettier.yml diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml new file mode 100644 index 00000000..0e501c9b --- /dev/null +++ b/.github/workflows/prettier.yml @@ -0,0 +1,21 @@ +name: Prettier +on: + pull_request: + branches: [main] +jobs: + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + - uses: actions/setup-node@v1 + with: + node-version: "18.x" + - run: npm ci + - run: npm run prettier + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@v4.1.2 + with: + commit_message: Apply prettier changes + branch: ${{ github.head_ref }} -- 2.47.2 From b25fb52d34237024e85468d3471a74c4ea654215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Tue, 6 Jun 2023 20:11:09 -0300 Subject: [PATCH 018/522] Create dependabot.yml (#18) Co-authored-by: AngeloTadeucci --- .github/dependabot.yml | 6 ++++++ .github/workflows/prettier.yml | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..55e09ee1 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 0e501c9b..26270f08 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -6,16 +6,18 @@ jobs: format: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout + uses: actions/checkout@v3.5.2 with: ref: ${{ github.head_ref }} - - uses: actions/setup-node@v1 + - name: Setup Node.js environment + uses: actions/setup-node@v2.5.2 with: node-version: "18.x" - run: npm ci - run: npm run prettier - name: Commit changes - uses: stefanzweifel/git-auto-commit-action@v4.1.2 + uses: stefanzweifel/git-auto-commit-action@v4.16.0 with: commit_message: Apply prettier changes branch: ${{ github.head_ref }} -- 2.47.2 From d091af47789f4c6e4e31cc0b3c5b6be30d60ce2d Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Wed, 14 Jun 2023 02:26:19 +0200 Subject: [PATCH 019/522] Basic purchasing + custom purchasing API (#20) Endpoint for custom API: https://localhost:443/custom/addItem example request: { "type": "Weapon", "internalName": "/Lotus/Weapons/Grineer/Pistols/GrineerMicrowavegun/GrnMicrowavePistol", "accountId": "6488fd2e7bec200069ca4242" } --- package-lock.json | 8 +- package.json | 3 +- src/app.ts | 2 +- src/controllers/api/inventoryController.ts | 1 - src/controllers/api/purchaseController.ts | 11 +- src/controllers/api/saveLoadout.ts | 13 ++ src/controllers/custom/addItemController.ts | 26 +++ .../custom/createAccountController.ts | 3 +- src/helpers/customHelpers/addItemHelpers.ts | 55 +++++++ .../{ => customHelpers}/customHelpers.ts | 3 +- src/helpers/inventoryHelpers.ts | 2 +- src/helpers/purchaseHelpers.ts | 59 +++++++ src/helpers/stringHelpers.ts | 18 +++ src/models/inventoryModel.ts | 126 ++++++++++++--- src/models/t.ts | 17 -- src/routes/api.ts | 3 + src/routes/cache.ts | 4 - src/routes/custom.ts | 2 + src/services/inventoryService.ts | 85 +++++++++- src/services/purchaseService.ts | 110 +++++++++++++ src/types/inventoryTypes/SuitTypes.ts | 44 +++++ .../inventoryTypes/commonInventoryTypes.ts | 42 +++++ .../{ => inventoryTypes}/inventoryTypes.ts | 153 ++---------------- src/types/inventoryTypes/weaponTypes.ts | 39 +++++ src/types/purchaseTypes.ts | 43 +++++ 25 files changed, 676 insertions(+), 196 deletions(-) create mode 100644 src/controllers/api/saveLoadout.ts create mode 100644 src/controllers/custom/addItemController.ts create mode 100644 src/helpers/customHelpers/addItemHelpers.ts rename src/helpers/{ => customHelpers}/customHelpers.ts (94%) create mode 100644 src/helpers/purchaseHelpers.ts create mode 100644 src/helpers/stringHelpers.ts delete mode 100644 src/models/t.ts create mode 100644 src/services/purchaseService.ts create mode 100644 src/types/inventoryTypes/SuitTypes.ts create mode 100644 src/types/inventoryTypes/commonInventoryTypes.ts rename src/types/{ => inventoryTypes}/inventoryTypes.ts (89%) create mode 100644 src/types/inventoryTypes/weaponTypes.ts create mode 100644 src/types/purchaseTypes.ts diff --git a/package-lock.json b/package-lock.json index 31093fee..8ee83e57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,8 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" + "mongoose": "^7.1.1", + "warframe-items": "1.1260.50" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -3140,6 +3141,11 @@ "node": ">= 0.8" } }, + "node_modules/warframe-items": { + "version": "1.1260.50", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.50.tgz", + "integrity": "sha512-03oNB6Yg61yUd7glewUUg0avnaGaAqc9oVPJk+1THFB0o/d4ppQSgL38yTUxMwmw0avCrqd+8z5TMrfXtvPDXQ==" + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index afbd531a..c4d88a17 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" + "mongoose": "^7.1.1", + "warframe-items": "1.1260.50" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", diff --git a/src/app.ts b/src/app.ts index d523d8fb..3ca8bfc8 100644 --- a/src/app.ts +++ b/src/app.ts @@ -23,7 +23,7 @@ app.use(bodyParser.raw()); app.use(express.json()); app.use(bodyParser.text()); app.use(morgan("dev")); -app.use(requestLogger); +//app.use(requestLogger); app.use("/api", apiRouter); //app.use("/test", testRouter); diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index badf79ad..c3ad296a 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -13,7 +13,6 @@ const inventoryController: RequestHandler = async (request: Request, response: R response.status(400).json({ error: "accountId was not provided" }); return; } - console.log(accountId); const inventory = await Inventory.findOne({ accountOwnerId: accountId }); diff --git a/src/controllers/api/purchaseController.ts b/src/controllers/api/purchaseController.ts index 7f0902e2..c73581ca 100644 --- a/src/controllers/api/purchaseController.ts +++ b/src/controllers/api/purchaseController.ts @@ -1,8 +1,13 @@ -import purchase from "@/static/fixed_responses/purchase.json"; +import { parseString } from "@/src/helpers/general"; +import { toPurchaseRequest } from "@/src/helpers/purchaseHelpers"; +import { handlePurchase } from "@/src/services/purchaseService"; import { Request, Response } from "express"; -const purchaseController = (_req: Request, res: Response): void => { - res.json(purchase); +const purchaseController = async (req: Request, res: Response) => { + const purchaseRequest = toPurchaseRequest(JSON.parse(String(req.body))); + const accountId = parseString(req.query.accountId); + const response = await handlePurchase(purchaseRequest, accountId); + res.json(response); }; export { purchaseController }; diff --git a/src/controllers/api/saveLoadout.ts b/src/controllers/api/saveLoadout.ts new file mode 100644 index 00000000..b83ad6b1 --- /dev/null +++ b/src/controllers/api/saveLoadout.ts @@ -0,0 +1,13 @@ +import { Inventory } from "@/src/models/inventoryModel"; +import { RequestHandler } from "express"; +import util from "util"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const saveLoadoutController: RequestHandler = async (req, res) => { + const body = JSON.parse(req.body); + console.log(util.inspect(body, { showHidden: false, depth: null, colors: true })); + + res.sendStatus(200); +}; + +export { saveLoadoutController }; diff --git a/src/controllers/custom/addItemController.ts b/src/controllers/custom/addItemController.ts new file mode 100644 index 00000000..504d539e --- /dev/null +++ b/src/controllers/custom/addItemController.ts @@ -0,0 +1,26 @@ +import { ItemType, toAddItemRequest } from "@/src/helpers/customHelpers/addItemHelpers"; +import { getWeaponType } from "@/src/helpers/purchaseHelpers"; +import { addPowerSuit, addWeapon } from "@/src/services/inventoryService"; +import { RequestHandler } from "express"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const addItemController: RequestHandler = async (req, res) => { + const request = toAddItemRequest(req.body); + + switch (request.type) { + case ItemType.Powersuit: + const powersuit = await addPowerSuit(request.InternalName, request.accountId); + res.json(powersuit); + return; + case ItemType.Weapon: + const weaponType = getWeaponType(request.InternalName); + const weapon = await addWeapon(weaponType, request.InternalName, request.accountId); + res.json(weapon); + break; + default: + res.status(400).json({ error: "something went wrong" }); + break; + } +}; + +export { addItemController }; diff --git a/src/controllers/custom/createAccountController.ts b/src/controllers/custom/createAccountController.ts index 0d0d567d..bece119c 100644 --- a/src/controllers/custom/createAccountController.ts +++ b/src/controllers/custom/createAccountController.ts @@ -1,7 +1,8 @@ -import { toCreateAccount, toDatabaseAccount } from "@/src/helpers/customHelpers"; +import { toCreateAccount, toDatabaseAccount } from "@/src/helpers/customHelpers/customHelpers"; import { createAccount } from "@/src/services/loginService"; import { RequestHandler } from "express"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const createAccountController: RequestHandler = async (req, res) => { const createAccountData = toCreateAccount(req.body); const databaseAccount = toDatabaseAccount(createAccountData); diff --git a/src/helpers/customHelpers/addItemHelpers.ts b/src/helpers/customHelpers/addItemHelpers.ts new file mode 100644 index 00000000..efc517c3 --- /dev/null +++ b/src/helpers/customHelpers/addItemHelpers.ts @@ -0,0 +1,55 @@ +import { isString, parseString } from "@/src/helpers/general"; +import { items } from "@/static/data/items"; + +export enum ItemType { + Powersuit = "Powersuit", + Weapon = "Weapon" +} + +export const isItemType = (itemType: string): itemType is ItemType => { + return Object.keys(ItemType).includes(itemType); +}; + +const parseItemType = (itemType: unknown): ItemType => { + if (!itemType || !isString(itemType) || !isItemType(itemType)) { + throw new Error("incorrect item type"); + } + + return itemType; +}; + +interface IAddItemRequest { + type: ItemType; + InternalName: string; + accountId: string; +} +export const isInternalName = (internalName: string): boolean => { + const item = items.find(i => i.uniqueName === internalName); + return Boolean(item); +}; + +const parseInternalName = (internalName: unknown): string => { + if (!isString(internalName) || !isInternalName(internalName)) { + throw new Error("incorrect internal name"); + } + + return internalName; +}; + +const toAddItemRequest = (body: unknown): IAddItemRequest => { + if (!body || typeof body !== "object") { + throw new Error("incorrect or missing add item request data"); + } + + if ("type" in body && "internalName" in body && "accountId" in body) { + return { + type: parseItemType(body.type), + InternalName: parseInternalName(body.internalName), + accountId: parseString(body.accountId) + }; + } + + throw new Error("malformed add item request"); +}; + +export { toAddItemRequest }; diff --git a/src/helpers/customHelpers.ts b/src/helpers/customHelpers/customHelpers.ts similarity index 94% rename from src/helpers/customHelpers.ts rename to src/helpers/customHelpers/customHelpers.ts index ebdde463..d96c7680 100644 --- a/src/helpers/customHelpers.ts +++ b/src/helpers/customHelpers/customHelpers.ts @@ -1,7 +1,7 @@ import { IAccountCreation } from "@/src/types/customTypes"; import { IDatabaseAccount } from "@/src/types/loginTypes"; import crypto from "crypto"; -import { isString, parseEmail, parseString } from "./general"; +import { isString, parseEmail, parseString } from "../general"; const getWhirlpoolHash = (rawPassword: string): string => { const whirlpool = crypto.createHash("whirlpool"); @@ -30,7 +30,6 @@ const toAccountCreation = (accountCreation: unknown): IAccountCreation => { "CountryCode" in accountCreation ) { const rawPassword = parsePassword(accountCreation.password); - console.log("email", accountCreation.email); return { email: parseEmail(accountCreation.email), password: getWhirlpoolHash(rawPassword), diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts index 7879c007..7ecb6f92 100644 --- a/src/helpers/inventoryHelpers.ts +++ b/src/helpers/inventoryHelpers.ts @@ -1,4 +1,4 @@ -import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes"; +import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes"; const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => { // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/src/helpers/purchaseHelpers.ts b/src/helpers/purchaseHelpers.ts new file mode 100644 index 00000000..2dee9668 --- /dev/null +++ b/src/helpers/purchaseHelpers.ts @@ -0,0 +1,59 @@ +import { parseBoolean, parseNumber, parseString } from "@/src/helpers/general"; +import { WeaponTypeInternal } from "@/src/services/inventoryService"; +import { IPurchaseRequest } from "@/src/types/purchaseTypes"; +import { weapons } from "@/static/data/items"; + +const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => { + if (!purchaseRequest || typeof purchaseRequest !== "object") { + throw new Error("incorrect or missing purchase request data"); + } + + if ( + "PurchaseParams" in purchaseRequest && + "buildLabel" in purchaseRequest && + purchaseRequest.PurchaseParams && + typeof purchaseRequest.PurchaseParams === "object" && + "Source" in purchaseRequest.PurchaseParams && + "StoreItem" in purchaseRequest.PurchaseParams && + "StorePage" in purchaseRequest.PurchaseParams && + "SearchTerm" in purchaseRequest.PurchaseParams && + "CurrentLocation" in purchaseRequest.PurchaseParams && + "Quantity" in purchaseRequest.PurchaseParams && + "UsePremium" in purchaseRequest.PurchaseParams && + "ExpectedPrice" in purchaseRequest.PurchaseParams + ) { + return { + PurchaseParams: { + Source: parseNumber(purchaseRequest.PurchaseParams.Source), + StoreItem: parseString(purchaseRequest.PurchaseParams.StoreItem), + StorePage: parseString(purchaseRequest.PurchaseParams.StorePage), + SearchTerm: parseString(purchaseRequest.PurchaseParams.SearchTerm), + CurrentLocation: parseString(purchaseRequest.PurchaseParams.CurrentLocation), + Quantity: parseNumber(purchaseRequest.PurchaseParams.Quantity), + UsePremium: parseBoolean(purchaseRequest.PurchaseParams.UsePremium), + ExpectedPrice: parseNumber(purchaseRequest.PurchaseParams.ExpectedPrice) + }, + buildLabel: parseString(purchaseRequest.buildLabel) + }; + } + + throw new Error("invalid purchaseRequest"); +}; + +const getWeaponType = (weaponName: string) => { + const weaponInfo = weapons.find(i => i.uniqueName === weaponName); + + if (!weaponInfo) { + throw new Error(`unknown weapon ${weaponName}`); + } + + const weaponType = weaponInfo.productCategory as WeaponTypeInternal; + + if (!weaponType) { + throw new Error(`unknown weapon category for item ${weaponName}`); + } + + return weaponType; +}; + +export { toPurchaseRequest, getWeaponType }; diff --git a/src/helpers/stringHelpers.ts b/src/helpers/stringHelpers.ts new file mode 100644 index 00000000..67995382 --- /dev/null +++ b/src/helpers/stringHelpers.ts @@ -0,0 +1,18 @@ +const getJSONfromString = (str: string): any => { + const jsonSubstring = str.substring(0, str.lastIndexOf("}") + 1); + return JSON.parse(jsonSubstring); +}; + +export const getSubstringFromKeyword = (str: string, keyword: string): string => { + const index = str.indexOf(keyword); + if (index == -1) { + throw new Error(`keyword ${keyword} not found in string ${str}`); + } + return str.substring(index); +}; + +export const getSubstringFromKeywordToKeyword = (str: string, keywordBegin: string, keywordEnd: string): string => { + const beginIndex = str.lastIndexOf(keywordBegin) + 1; + const endIndex = str.indexOf(keywordEnd); + return str.substring(beginIndex, endIndex + 1); +}; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index bed6c50c..37290960 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,17 +1,13 @@ -import { Schema, model } from "mongoose"; -import { IInventoryDatabase, ISuitDatabase } from "../types/inventoryTypes"; +import { Model, Schema, Types, model } from "mongoose"; +import { FlavourItem, IInventoryDatabase } from "../types/inventoryTypes/inventoryTypes"; import { Oid } from "../types/commonTypes"; - -const polaritySchema = new Schema({ - Slot: Number, - Value: String -}); +import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; +import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; const abilityOverrideSchema = new Schema({ Ability: String, Index: Number }); - const colorSchema = new Schema({ t0: Number, t1: Number, @@ -23,6 +19,67 @@ const colorSchema = new Schema({ m1: Number }); +const longGunConfigSchema = new Schema({ + Skins: [String], + pricol: colorSchema, + attcol: colorSchema, + eyecol: colorSchema, + sigcol: colorSchema, + Upgrades: [String], + Songs: [ + { + m: String, + b: String, + p: String, + s: String + } + ], + Name: String, + AbilityOverride: abilityOverrideSchema, + PvpUpgrades: [String], + ugly: Boolean +}); + +// longGunConfigSchema.set("toJSON", { +// transform(_document, returnedObject: ISuitDocument) { +// // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call +// returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; +// delete returnedObject._id; +// delete returnedObject.__v; +// } +// }); + +const WeaponSchema = new Schema({ + ItemType: String, + Configs: [longGunConfigSchema], + UpgradeVer: Number, + XP: Number, + Features: Number, + Polarized: Number, + Polarity: Schema.Types.Mixed, //todo + FocusLens: String, + ModSlotPurchases: Number, + UpgradeType: Schema.Types.Mixed, //todo + UpgradeFingerprint: String, + ItemName: String, + ModularParts: [String], + UnlockLevel: Number +}); + +WeaponSchema.set("toJSON", { + transform(_document, returnedObject: ISuitDocument) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const polaritySchema = new Schema({ + Slot: Number, + Value: String +}); + const suitConfigSchema = new Schema({ Skins: [String], pricol: colorSchema, @@ -51,7 +108,7 @@ suitConfigSchema.set("toJSON", { } }); -const suitSchema = new Schema({ +const suitSchema = new Schema({ ItemType: String, Configs: [suitConfigSchema], UpgradeVer: Number, @@ -66,7 +123,7 @@ const suitSchema = new Schema({ }); suitSchema.set("toJSON", { - transform(_document, returnedObject) { + transform(_document, returnedObject: ISuitDocument) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; @@ -74,7 +131,25 @@ suitSchema.set("toJSON", { } }); -const inventorySchema = new Schema({ +const slotsBinSchema = new Schema( + { + Slots: Number + }, + { _id: false } +); + +const FlavourItemSchema = new Schema({ + ItemType: String +}); + +FlavourItemSchema.set("toJSON", { + transform(_document, returnedObject: ISuitDocument) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const inventorySchema = new Schema({ accountOwnerId: Schema.Types.ObjectId, SubscribedToEmails: Number, Created: Schema.Types.Mixed, @@ -83,9 +158,9 @@ const inventorySchema = new Schema({ PremiumCredits: Number, PremiumCreditsFree: Number, FusionPoints: Number, - SuitBin: Schema.Types.Mixed, - WeaponBin: Schema.Types.Mixed, - SentinelBin: Schema.Types.Mixed, + SuitBin: slotsBinSchema, + WeaponBin: slotsBinSchema, + SentinelBin: slotsBinSchema, SpaceSuitBin: Schema.Types.Mixed, SpaceWeaponBin: Schema.Types.Mixed, PvpBonusLoadoutBin: Schema.Types.Mixed, @@ -104,12 +179,12 @@ const inventorySchema = new Schema({ RawUpgrades: [Schema.Types.Mixed], ReceivedStartingGear: Boolean, Suits: [suitSchema], - LongGuns: [Schema.Types.Mixed], - Pistols: [Schema.Types.Mixed], - Melee: [Schema.Types.Mixed], + LongGuns: [WeaponSchema], + Pistols: [WeaponSchema], + Melee: [WeaponSchema], Ships: [Schema.Types.Mixed], QuestKeys: [Schema.Types.Mixed], - FlavourItems: [Schema.Types.Mixed], + FlavourItems: [FlavourItemSchema], Scoops: [Schema.Types.Mixed], TrainingRetriesLeft: Number, LoadOutPresets: Schema.Types.Mixed, @@ -253,7 +328,16 @@ inventorySchema.set("toJSON", { } }); -const Suit = model("Suit", suitSchema); -const Inventory = model("Inventory", inventorySchema); +type InventoryDocumentProps = { + Suits: Types.DocumentArray; + LongGuns: Types.DocumentArray; + Pistols: Types.DocumentArray; + Melee: Types.DocumentArray; + FlavourItems: Types.DocumentArray; +}; -export { Inventory, Suit }; +type InventoryModelType = Model; + +const Inventory = model("Inventory", inventorySchema); + +export { Inventory }; diff --git a/src/models/t.ts b/src/models/t.ts deleted file mode 100644 index c59908c1..00000000 --- a/src/models/t.ts +++ /dev/null @@ -1,17 +0,0 @@ -import mongoose from "mongoose"; - -const accountSchema = new mongoose.Schema({ - data: JSON -}); - -// personSchema.set("toJSON", { -// transform: (document, returnedObject:) => { -// returnedObject.id = returnedObject._id.toString(); -// delete returnedObject._id; -// delete returnedObject.__v; -// }, -// }); - -const Account = mongoose.model("account", accountSchema); - -export { Account }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 1a5d8a11..c52a8056 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -28,6 +28,7 @@ import { updateChallengeProgressController } from "@/src/controllers/api/updateC import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; import { viewController } from "@/src/controllers/api/viewController"; import { joinSessionController } from "@/src/controllers/api/joinSessionController"; +import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; import express from "express"; @@ -58,6 +59,7 @@ apiRouter.get("/logout.php", logoutController); // post apiRouter.post("/findSessions.php", findSessionsController); +// eslint-disable-next-line @typescript-eslint/no-misused-promises apiRouter.post("/purchase.php", purchaseController); apiRouter.post("/login.php", loginController); apiRouter.post("/getAlliance.php", getAllianceController); @@ -68,4 +70,5 @@ apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); apiRouter.post("/genericUpdate.php", genericUpdateController); apiRouter.post("/rerollRandomMod.php", rerollRandomModController); apiRouter.post("/joinSession.php", joinSessionController); +apiRouter.post("/saveLoadout.php", saveLoadoutController); export { apiRouter }; diff --git a/src/routes/cache.ts b/src/routes/cache.ts index bb69a6db..803331c3 100644 --- a/src/routes/cache.ts +++ b/src/routes/cache.ts @@ -4,18 +4,14 @@ import config from "@/config.json"; const cacheRouter = express.Router(); cacheRouter.get("/B.Cache.Dx11.bin.*", (_req, res) => { - //console.log("asd", path.join(__dirname, "../data")); res.sendFile("static/data/B.Cache.Dx11_33.0.6.bin", { root: "./" }); }); cacheRouter.get("/B.Cache.Windows_en.bin*", (_req, res) => { - //console.log("asd", path.join(__dirname, "../data")); res.sendFile("static/data/B.Cache.Windows_en_33.0.10.bin", { root: "./" }); }); cacheRouter.get(/^\/origin\/([a-zA-Z0-9]+)\/H\.Cache\.bin.*$/, (_req, res) => { - // console.log("asd", path.join(__dirname, "../data")); - // console.log("asd", __dirname); res.sendFile(`static/data/H.Cache_${config.version}.bin`, { root: "./" }); }); diff --git a/src/routes/custom.ts b/src/routes/custom.ts index 3495e17f..1ab4ff2c 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -1,8 +1,10 @@ +import { addItemController } from "@/src/controllers/custom/addItemController"; import { createAccountController } from "@/src/controllers/custom/createAccountController"; import express from "express"; const customRouter = express.Router(); customRouter.post("/createAccount", createAccountController); +customRouter.post("/addItem", addItemController); export { customRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 36f49d06..6a947c9a 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2,6 +2,9 @@ import { Inventory } from "@/src/models/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import config from "@/config.json"; import { Types } from "mongoose"; +import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; +import { SlotType } from "@/src/types/purchaseTypes"; +import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -22,4 +25,84 @@ const createInventory = async (accountOwnerId: Types.ObjectId) => { } }; -export { createInventory }; +//const updateInventory = async (accountOwnerId: Types.ObjectId, inventoryChanges: any) => {}; + +const getInventory = async (accountOwnerId: string) => { + const inventory = await Inventory.findOne({ accountOwnerId: accountOwnerId }); + + if (!inventory) { + throw new Error(`Didn't find an inventory for ${accountOwnerId}`); + } + + return inventory; +}; + +const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { + const inventory = await getInventory(accountId); + const suitIndex = inventory.Suits.push({ ItemType: powersuitName, Configs: [], UpgradeVer: 101, XP: 0 }); + const changedInventory = await inventory.save(); + return changedInventory.Suits[suitIndex - 1].toJSON(); +}; + +export const updateSlots = async (slotType: SlotType, accountId: string, slots: number) => { + const inventory = await getInventory(accountId); + + switch (slotType) { + case SlotType.SUIT: + inventory.SuitBin.Slots += slots; + break; + case SlotType.WEAPON: + inventory.WeaponBin.Slots += slots; + break; + default: + throw new Error("invalid slot type"); + } + await inventory.save(); +}; + +export const updateCurrency = async (price: number, usePremium: boolean, accountId: string) => { + const currencyName = usePremium ? "PremiumCredits" : "RegularCredits"; + + const inventory = await getInventory(accountId); + inventory[currencyName] = inventory[currencyName] - price; + await inventory.save(); + return { [currencyName]: -price }; +}; + +export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; + +export const addWeapon = async ( + weaponType: WeaponTypeInternal, + weaponName: string, + accountId: string +): Promise => { + const inventory = await getInventory(accountId); + + let weaponIndex; + switch (weaponType) { + case "LongGuns": + weaponIndex = inventory.LongGuns.push({ ItemType: weaponName, Configs: [], XP: 0 }); + break; + case "Pistols": + weaponIndex = inventory.Pistols.push({ ItemType: weaponName, Configs: [], XP: 0 }); + break; + case "Melee": + weaponIndex = inventory.Melee.push({ ItemType: weaponName, Configs: [], XP: 0 }); + break; + default: + throw new Error("unknown weapon type"); + } + + const changedInventory = await inventory.save(); + return changedInventory[weaponType][weaponIndex - 1].toJSON(); +}; + +export const addCustomization = async (customizatonName: string, accountId: string) => { + const inventory = await getInventory(accountId); + + const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; + const changedInventory = await inventory.save(); + return changedInventory.FlavourItems[flavourItemIndex].toJSON(); +}; + +export { createInventory, addPowerSuit }; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts new file mode 100644 index 00000000..76d35017 --- /dev/null +++ b/src/services/purchaseService.ts @@ -0,0 +1,110 @@ +import { getWeaponType } from "@/src/helpers/purchaseHelpers"; +import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; +import { addCustomization, addPowerSuit, addWeapon, updateSlots } from "@/src/services/inventoryService"; +import { IPurchaseRequest, SlotType } from "@/src/types/purchaseTypes"; + +export const getStoreItemCategory = (storeItem: string) => { + const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); + const storeItemElements = storeItemString.split("/"); + return storeItemElements[1]; +}; + +export const getStoreItemTypesCategory = (typesItem: string) => { + const typesString = getSubstringFromKeyword(typesItem, "Types"); + const typeElements = typesString.split("/"); + if (typesItem.includes("StoreItems")) { + return typeElements[2]; + } + return typeElements[1]; +}; + +export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountId: string) => { + console.log(purchaseRequest); + const storeCategory = getStoreItemCategory(purchaseRequest.PurchaseParams.StoreItem); + const internalName = purchaseRequest.PurchaseParams.StoreItem.replace("/StoreItems", ""); + console.log("Store category", storeCategory); + + let purchaseResponse; + switch (storeCategory) { + case "Powersuits": + purchaseResponse = await handlePowersuitPurchase(internalName, accountId); + break; + case "Weapons": + purchaseResponse = await handleWeaponsPurchase(internalName, accountId); + break; + case "Types": + purchaseResponse = await handleTypesPurchase(internalName, accountId); + break; + + default: + throw new Error(`unknown store category: ${storeCategory} not implemented or new`); + } + + // const currencyResponse = await updateCurrency( + // purchaseRequest.PurchaseParams.ExpectedPrice, + // purchaseRequest.PurchaseParams.UsePremium, + // accountId + // ); + + // (purchaseResponse as IPurchaseResponse).InventoryChanges = { + // ...purchaseResponse.InventoryChanges, + // ...currencyResponse + // }; + + return purchaseResponse; +}; + +const handleWeaponsPurchase = async (weaponName: string, accountId: string) => { + const weaponType = getWeaponType(weaponName); + const addedWeapon = await addWeapon(weaponType, weaponName, accountId); + + await updateSlots(SlotType.WEAPON, accountId, -1); + + return { + InventoryChanges: { + WeaponBin: { count: 1, platinum: 0, Slots: -1 }, + [weaponType]: [addedWeapon] + } + }; +}; + +const handlePowersuitPurchase = async (powersuitName: string, accountId: string) => { + const suit = await addPowerSuit(powersuitName, accountId); + await updateSlots(SlotType.WEAPON, accountId, -1); + + return { + InventoryChanges: { + SuitBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + Suits: [suit] + } + }; +}; + +const handleTypesPurchase = async (typesName: string, accountId: string) => { + const typeCategory = getStoreItemTypesCategory(typesName); + console.log("type category", typeCategory); + switch (typeCategory) { + case "SuitCustomizations": + return await handleSuitCustomizationsPurchase(typesName, accountId); + // case "Recipes": + // break; + // case "Sentinels": + // break; + default: + throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); + } +}; + +const handleSuitCustomizationsPurchase = async (customizationName: string, accountId: string) => { + const customization = await addCustomization(customizationName, accountId); + + return { + InventoryChanges: { + FlavourItems: [customization] + } + }; +}; diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts new file mode 100644 index 00000000..187d5ab1 --- /dev/null +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -0,0 +1,44 @@ +import { Oid } from "@/src/types/commonTypes"; +import { AbilityOverride, Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { Document } from "mongoose"; + +export interface ISuitDocument extends ISuitResponse, Document {} + +export interface ISuitResponse extends ISuitDatabase { + ItemId: Oid; +} + +export interface ISuitDatabase { + ItemType: string; + Configs: SuitConfig[]; + UpgradeVer?: number; + XP?: number; + InfestationDate?: Date; + Features?: number; + Polarity?: Polarity[]; + Polarized?: number; + ModSlotPurchases?: number; + FocusLens?: string; + UnlockLevel?: number; +} + +export interface SuitConfig { + Skins?: string[]; + pricol?: Color; + attcol?: Color; + eyecol?: Color; + sigcol?: Color; + Upgrades?: string[]; + Songs?: Song[]; + Name?: string; + AbilityOverride?: AbilityOverride; + PvpUpgrades?: string[]; + ugly?: boolean; +} + +export interface Song { + m?: string; + b?: string; + p?: string; + s: string; +} diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts new file mode 100644 index 00000000..fd59073c --- /dev/null +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -0,0 +1,42 @@ +export interface Polarity { + Slot: number; + Value: FocusSchool; +} + +export enum FocusSchool { + ApAny = "AP_ANY", + ApAttack = "AP_ATTACK", + ApDefense = "AP_DEFENSE", + ApPower = "AP_POWER", + ApPrecept = "AP_PRECEPT", + ApTactic = "AP_TACTIC", + ApUmbra = "AP_UMBRA", + ApUniversal = "AP_UNIVERSAL", + ApWard = "AP_WARD" +} + +export interface Color { + t0?: number; + t1?: number; + t2?: number; + t3?: number; + en?: number; + e1?: number; + m0?: number; + m1?: number; +} + +export interface AbilityOverride { + Ability: string; + Index: number; +} + +export interface SlotsBin { + Slots: number; +} + +export interface sigcol { + t0: number; + t1: number; + en: number; +} diff --git a/src/types/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts similarity index 89% rename from src/types/inventoryTypes.ts rename to src/types/inventoryTypes/inventoryTypes.ts index 6a428931..938ac651 100644 --- a/src/types/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,12 +1,17 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; -import { Oid } from "./commonTypes"; +import { Oid } from "../commonTypes"; +import { AbilityOverride, Color, FocusSchool, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { OperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; export interface IInventoryDatabase extends IInventoryResponse { accountOwnerId: Types.ObjectId; } +export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} + export interface IInventoryResponse { SubscribedToEmails: number; Created: Date; @@ -36,9 +41,9 @@ export interface IInventoryResponse { RawUpgrades: RawUpgrade[]; ReceivedStartingGear: boolean; Suits: ISuitDatabase[]; - LongGuns: LongGun[]; - Pistols: LongGun[]; - Melee: Melee[]; + LongGuns: IWeaponDatabase[]; + Pistols: IWeaponDatabase[]; + Melee: IWeaponDatabase[]; Ships: Ship[]; QuestKeys: QuestKey[]; FlavourItems: FlavourItem[]; @@ -188,17 +193,6 @@ export interface AdultOperatorLoadOut { ItemId: Oid; } -export interface Color { - t0?: number; - t1?: number; - t2?: number; - t3?: number; - en?: number; - e1?: number; - m0?: number; - m1?: number; -} - export interface Affiliation { Initiated?: boolean; Standing: number; @@ -319,23 +313,6 @@ export interface CrewShipHarnessConfig { Upgrades?: string[]; } -export interface Polarity { - Slot: number; - Value: FocusSchool; -} - -export enum FocusSchool { - ApAny = "AP_ANY", - ApAttack = "AP_ATTACK", - ApDefense = "AP_DEFENSE", - ApPower = "AP_POWER", - ApPrecept = "AP_PRECEPT", - ApTactic = "AP_TACTIC", - ApUmbra = "AP_UMBRA", - ApUniversal = "AP_UNIVERSAL", - ApWard = "AP_WARD" -} - export interface CrewShipSalvageBinClass { Extra: number; Slots: number; @@ -359,7 +336,7 @@ export interface CrewShipWeapon { export interface CrewShip { ItemType: string; Configs: CrewShipConfig[]; - Weapon: Weapon; + Weapon: CrewshipWeapon; Customization: Customization; ItemName: string; RailjackImage: FlavourItem; @@ -400,7 +377,7 @@ export interface FlavourItem { ItemType: string; } -export interface Weapon { +export interface CrewshipWeapon { PILOT: Pilot; PORT_GUNS: PortGuns; } @@ -713,33 +690,6 @@ export interface Normal { ItemId: Oid; } -export interface LongGun { - ItemType: string; - Configs: LongGunConfig[]; - UpgradeVer?: number; - XP?: number; - Features?: number; - ItemId: Oid; - Polarized?: number; - Polarity?: Polarity[]; - FocusLens?: string; - ModSlotPurchases?: number; - UpgradeType?: UpgradeType; - UpgradeFingerprint?: string; - ItemName?: string; - ModularParts?: string[]; - UnlockLevel?: number; -} - -export interface LongGunConfig { - Upgrades?: string[]; - Skins?: string[]; - pricol?: Color; - attcol?: Color; - PvpUpgrades?: string[]; - Name?: string; -} - export enum UpgradeType { LotusWeaponsGrineerKuvaLichUpgradesInnateDamageRandomMod = "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" } @@ -774,40 +724,6 @@ export interface MechSuit { ItemId: Oid; } -export interface Melee { - ItemType: string; - Configs: MeleeConfig[]; - UpgradeVer?: number; - XP?: number; - Features?: number; - Polarity?: Polarity[]; - Polarized?: number; - ModSlotPurchases?: number; - ItemId: Oid; - FocusLens?: string; - ModularParts?: string[]; - ItemName?: string; - UpgradeType?: UpgradeType; - UpgradeFingerprint?: string; - UnlockLevel?: number; -} - -export interface MeleeConfig { - Skins?: string[]; - pricol?: Color; - Upgrades?: string[]; - attcol?: Color; - eyecol?: OperatorLoadOutSigcol; - Name?: string; - PvpUpgrades?: string[]; -} - -export interface OperatorLoadOutSigcol { - t0?: number; - t1?: number; - en?: number; -} - export interface Mission { Completes: number; Tier?: number; @@ -885,11 +801,6 @@ export interface OperatorLoadOut { ItemId: Oid; } -export interface AbilityOverride { - Ability: string; - Index: number; -} - export interface PendingCoupon { Expiry: Date; Discount: number; @@ -1159,48 +1070,6 @@ export interface NotePacks { PERCUSSION: string; } -export interface ISuitDocument extends ISuitDatabase, Document {} - -export interface ISuitResponse extends ISuitDatabase { - ItemId: Oid; -} - -export interface ISuitDatabase { - ItemType: string; - Configs: SuitConfig[]; - UpgradeVer?: number; - XP?: number; - InfestationDate?: Date; - Features?: number; - Polarity?: Polarity[]; - Polarized?: number; - ModSlotPurchases?: number; - ItemId: Oid; - FocusLens?: string; - UnlockLevel?: number; -} - -export interface SuitConfig { - Skins?: string[]; - pricol?: Color; - attcol?: Color; - eyecol?: Color; - sigcol?: Color; - Upgrades?: string[]; - Songs?: Song[]; - Name?: string; - AbilityOverride?: AbilityOverride; - PvpUpgrades?: string[]; - ugly?: boolean; -} - -export interface Song { - m?: string; - b?: string; - p?: string; - s: string; -} - export interface TauntHistory { node: string; state: string; diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts new file mode 100644 index 00000000..3c561e2d --- /dev/null +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -0,0 +1,39 @@ +import { Oid } from "@/src/types/commonTypes"; +import { Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; + +export interface IWeaponResponse extends IWeaponDatabase { + ItemId: Oid; +} + +export interface IWeaponDatabase { + ItemType: string; + Configs: WeaponConfig[]; + UpgradeVer?: number; + XP?: number; + Features?: number; + Polarized?: number; + Polarity?: Polarity[]; + FocusLens?: string; + ModSlotPurchases?: number; + UpgradeType?: string; + UpgradeFingerprint?: string; + ItemName?: string; + ModularParts?: string[]; + UnlockLevel?: number; +} + +export interface WeaponConfig { + Skins?: string[]; + pricol?: Color; + Upgrades?: string[]; + attcol?: Color; + eyecol?: OperatorLoadOutSigcol; + Name?: string; + PvpUpgrades?: string[]; +} + +export interface OperatorLoadOutSigcol { + t0?: number; + t1?: number; + en?: number; +} diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts new file mode 100644 index 00000000..1add87cc --- /dev/null +++ b/src/types/purchaseTypes.ts @@ -0,0 +1,43 @@ +/* eslint-disable prettier/prettier */ +import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; + +export interface IPurchaseRequest { + PurchaseParams: IPurchaseParams; + buildLabel: string; +} + +export interface IPurchaseParams { + Source: number; + StoreItem: string; + StorePage: string; + SearchTerm: string; + CurrentLocation: string; + Quantity: number; + UsePremium: boolean; + ExpectedPrice: number; +} + +export interface IPurchaseResponse { + InventoryChanges: { + SuitBin?: IBinChanges; + WeaponBin?: IBinChanges; + Suits?: ISuitDatabase[]; + LongGuns?: IWeaponResponse[]; + Pistols?: IWeaponResponse[]; + Melee?: IWeaponResponse[]; + PremiumCredits?: number; + RegularCredits?: number; + }; +} + +export type IBinChanges = { + count: number; + platinum: number; + Slots: number; +}; + +export enum SlotType { + SUIT = "SuitBin", + WEAPON = "WeaponBin" +} -- 2.47.2 From 5838cddbdbe2723e5dc83032869d90b41f4b4736 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Wed, 14 Jun 2023 16:25:35 +0200 Subject: [PATCH 020/522] fix ignoring static/data files, except .bin (#21) --- .gitignore | 2 +- src/services/inventoryService.ts | 5 +++-- src/services/purchaseService.ts | 10 ++++++++-- src/types/purchaseTypes.ts | 2 ++ static/data/items.ts | 18 ++++++++++++++++++ 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 static/data/items.ts diff --git a/.gitignore b/.gitignore index 05465bae..ee9cbba6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,5 @@ /build /.env -/static/data/* +/static/data/*.bin yarn.lock diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 6a947c9a..41b22959 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -5,6 +5,7 @@ import { Types } from "mongoose"; import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; +import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -97,12 +98,12 @@ export const addWeapon = async ( return changedInventory[weaponType][weaponIndex - 1].toJSON(); }; -export const addCustomization = async (customizatonName: string, accountId: string) => { +export const addCustomization = async (customizatonName: string, accountId: string): Promise => { const inventory = await getInventory(accountId); const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; const changedInventory = await inventory.save(); - return changedInventory.FlavourItems[flavourItemIndex].toJSON(); + return changedInventory.FlavourItems[flavourItemIndex].toJSON(); //mongoose bug forces as FlavourItem }; export { createInventory, addPowerSuit }; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 76d35017..16716573 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,7 +1,13 @@ import { getWeaponType } from "@/src/helpers/purchaseHelpers"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; -import { addCustomization, addPowerSuit, addWeapon, updateSlots } from "@/src/services/inventoryService"; -import { IPurchaseRequest, SlotType } from "@/src/types/purchaseTypes"; +import { + addCustomization, + addPowerSuit, + addWeapon, + updateCurrency, + updateSlots +} from "@/src/services/inventoryService"; +import { IPurchaseRequest, IPurchaseResponse, SlotType } from "@/src/types/purchaseTypes"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index 1add87cc..f6860189 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -1,5 +1,6 @@ /* eslint-disable prettier/prettier */ import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; export interface IPurchaseRequest { @@ -28,6 +29,7 @@ export interface IPurchaseResponse { Melee?: IWeaponResponse[]; PremiumCredits?: number; RegularCredits?: number; + FlavourItems?: FlavourItem[]; }; } diff --git a/static/data/items.ts b/static/data/items.ts new file mode 100644 index 00000000..dd4c6622 --- /dev/null +++ b/static/data/items.ts @@ -0,0 +1,18 @@ +import Items, { Item, Weapon } from "warframe-items"; + +type MinWeapon = Omit; +type MinItem = Omit; + +export const weapons: MinWeapon[] = (new Items({ category: ["Primary", "Secondary", "Melee"] }) as Weapon[]).map( + item => { + const next = { ...item }; + delete next.patchlogs; + return next; + } +); + +export const items: MinItem[] = new Items({ category: ["All"] }).map(item => { + const next = { ...item }; + delete next.patchlogs; + return next; +}); -- 2.47.2 From feec90033655a1bbc3108ff53846dcf68d1a88cc Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Tue, 11 Jul 2023 18:08:43 +0200 Subject: [PATCH 021/522] update 33.5.6 (#22) --- config.json | 8 +- static/fixed_responses/worldState.json | 3262 ++++++++++++------------ 2 files changed, 1622 insertions(+), 1648 deletions(-) diff --git a/config.json b/config.json index 7ce17384..0c03092a 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", - "matchmakingBuildId": "4920386201513015989", - "version": "33.0.14", - "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", + "buildLabel": "2023.07.06.16.50/isrcmLv6J3FZS839QAenoQ", + "matchmakingBuildId": "7784392807453928214", + "version": "33.5.6", + "worldSeed": "HOI4Qm0LmuvK+UonXmubrYk/CGif1pdPWzrv0u4ZHmg62Vaulo04cEzutzZ06vGXvuje01HP7/2YoRgjwUj3MwLpomK+TbN3O8dRxHqvFzh9w+jxKKdZEpE4K1mrIH/7hHteU6/GOM0uJ2yoptjRucSvq2wc4Ntwnxqb8l8CfxFP5Dc1XaeHz39gYd1f92Sde3wqfSpO7mwNXrJxn/qDZ5Y0iTOpiLjlACiU6Brmth9EExyuaxjSNXAyunhDQLoU/9YXrKUhDZ/AbE/jAVQ8+fW8ROIMdrGhSMXgpmhtUjGj5q9IIcTd8GRE9JTzzhhp/htmP35Sd0SVV824GN0jVw==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 30cbd618..96fc656b 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", + "WorldSeed": "HOI4Qm0LmuvK+UonXmubrYk/CGif1pdPWzrv0u4ZHmg62Vaulo04cEzutzZ06vGXvuje01HP7/2YoRgjwUj3MwLpomK+TbN3O8dRxHqvFzh9w+jxKKdZEpE4K1mrIH/7hHteU6/GOM0uJ2yoptjRucSvq2wc4Ntwnxqb8l8CfxFP5Dc1XaeHz39gYd1f92Sde3wqfSpO7mwNXrJxn/qDZ5Y0iTOpiLjlACiU6Brmth9EExyuaxjSNXAyunhDQLoU/9YXrKUhDZ/AbE/jAVQ8+fW8ROIMdrGhSMXgpmhtUjGj5q9IIcTd8GRE9JTzzhhp/htmP35Sd0SVV824GN0jVw==", "Version": 10, - "MobileVersion": "4.15.13.1", - "BuildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", - "Time": 1685550327, + "MobileVersion": "4.15.16.0", + "BuildLabel": "2023.07.06.16.50/isrcmLv6J3FZS839QAenoQ", + "Time": 1689090336, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -105,14 +105,7 @@ "Priority": true, "MobileOnly": false }, - { - "_id": { "$oid": "63a23acc1336bb81640a63dd" }, - "Messages": [], - "Prop": "", - "Date": { "$date": { "$numberLong": "1671576240000" } }, - "Priority": false, - "MobileOnly": false - }, + { "_id": { "$oid": "63a23acc1336bb81640a63dd" }, "Messages": [], "Prop": "", "Date": { "$date": { "$numberLong": "1671576240000" } }, "Priority": false, "MobileOnly": false }, { "_id": { "$oid": "63c84f910ee5a50a18071a24" }, "Messages": [{ "LanguageCode": "tr", "Message": "Sentient Rehberi" }], @@ -122,30 +115,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64120cec5ca90487bf075d73" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Hildryn Prime Access is now available!" }, - { "LanguageCode": "fr", "Message": "Le Prime Access Hildryn Prime est maintenant disponible !" }, - { "LanguageCode": "it", "Message": "L'Accesso Hildryn Prime è ora disponibile!" }, - { "LanguageCode": "de", "Message": "Hildryn Prime Access ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡Prime Access de Hildryn ya está disponible!" }, - { "LanguageCode": "pt", "Message": "O Prime Access da Hildryn Prime já está disponível!" }, - { "LanguageCode": "ru", "Message": "Доступ Хильдрин Прайм уже открыт!" }, - { "LanguageCode": "pl", "Message": "Hildryn Prime Access już dostępny!" }, - { "LanguageCode": "uk", "Message": "Гільдрина-прайм уже доступна!" }, - { "LanguageCode": "tr", "Message": "Hildryn Prime Access şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "Hildryn Prime Accessが登場!" }, - { "LanguageCode": "zh", "Message": "Hildryn Prime Access 现已登场!" }, - { "LanguageCode": "ko", "Message": "힐드린 프라임 액세스를 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "Hildryn Prime Access 現已登場!" } - ], - "Prop": "https://www.warframe.com/news/hildryn-prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-03-HildrynPrimeAccessIGNLaunch", - "Date": { "$date": { "$numberLong": "1678904400000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8260dab07e051d35bcef1a2a82c22965_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64134e23bf2682c23b0214ad" }, "Messages": [{ "LanguageCode": "es", "Message": "Programas de terceros y tú" }], @@ -175,16 +144,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64493dd93b9ce09dd509b136" }, - "Messages": [{ "LanguageCode": "ja", "Message": "「デュヴィリ・パラドックス」パッチノート" }], - "Prop": "https://bit.ly/3AxYiNW", - "Date": { "$date": { "$numberLong": "1682521440000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0c1fb4674583e7e29bf36784b28f3476.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "64493fde2b02c323ce07ec73" }, "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 33: Paradoks Duviri" }], @@ -198,12 +157,7 @@ "_id": { "$oid": "64494dc72c44d78bab079685" }, "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33: 두비리의 역설" }], "Prop": "", - "Links": [ - { - "LanguageCode": "ko", - "Link": "https://forums.warframe.com/topic/1346037-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-33-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%97%AD%EC%84%A4/" - } - ], + "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1346037-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-33-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%97%AD%EC%84%A4/" }], "Date": { "$date": { "$numberLong": "1682525580000" } }, "Priority": false, "MobileOnly": false @@ -217,74 +171,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64517606c429f4f85d0f069d" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Nora's Mix Vol. 3 終了日 + Nightwaveの今後について" }], - "Prop": "https://bit.ly/3AJu8HT", - "Date": { "$date": { "$numberLong": "1683060000000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6453f7bf20df842a150d8316" }, - "Messages": [{ "LanguageCode": "en", "Message": "Have your Dojo featured on the Star Chart!" }], - "Prop": "https://forums.warframe.com/topic/1349495-star-chart-dojo-showcase-spring-2023/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Spring-dojo-contest", - "Date": { "$date": { "$numberLong": "1683224460000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6453fc4380fb13ff9a072376" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Now Available: Nova Prime and Trinity Prime" }, - { "LanguageCode": "fr", "Message": "Maintenant disponible : Nova Prime et Trinity Prime" }, - { "LanguageCode": "it", "Message": "Ora Disponibili: Nova Prime e Trinity Prime" }, - { "LanguageCode": "de", "Message": "Jetzt erhältlich: Nova Prime und Trinity Prime" }, - { "LanguageCode": "es", "Message": "Disponible ya: Nova Prime y Trinity Prime" }, - { "LanguageCode": "pt", "Message": "Já Disponível: Nova Prime e Trinity Prime" }, - { "LanguageCode": "ru", "Message": "Уже доступны: Нова Прайм и Тринити Прайм" }, - { "LanguageCode": "pl", "Message": "Już dostępne: Nova Prime i Trinity Prime" }, - { "LanguageCode": "uk", "Message": "Уже доступні: Нова-прайм і Трініті-прайм\t" }, - { "LanguageCode": "tr", "Message": "Şimdi Sizlerle: Nova Prime ve Trinity Prime" }, - { "LanguageCode": "ja", "Message": "Nova PrimeとTrinity Primeをゲットしよう" }, - { "LanguageCode": "zh", "Message": "现已登场:Nova Prime 和 Trinity Prime" }, - { "LanguageCode": "ko", "Message": "지금 바로 구매 가능: 노바 프라임 및 트리니티 프라임" }, - { "LanguageCode": "tc", "Message": "現已登場:Nova Prime 以及 Trinity Prime" } - ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-PrimeResurgenceNovaTrinity-Launch", - "Date": { "$date": { "$numberLong": "1683222960000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685937600000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/3dde851b071ff5295e58f24d68b43760_800x450.png", - "Priority": false, - "MobileOnly": false, - "HideEndDateModifier": true - }, - { - "_id": { "$oid": "646646aad048b740ec04753c" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Refer a Friend Program Changes" }, - { "LanguageCode": "fr", "Message": "Modification du programme de parrainage" }, - { "LanguageCode": "it", "Message": "Cambiamenti al Programma Riferisci un Amico" }, - { "LanguageCode": "de", "Message": "Programmaktualisierung für 'Freunde rekrutieren'" }, - { "LanguageCode": "es", "Message": "Cambios en el programa \"Refiere a un amigo\"" }, - { "LanguageCode": "pt", "Message": "Mudanças no Programa de Indicação de Amigos" }, - { "LanguageCode": "pl", "Message": "Zmiany programu \"Zaproś Znajomego\"" }, - { "LanguageCode": "uk", "Message": "Зміни в програмі «Запросіть друга»" }, - { "LanguageCode": "tr", "Message": "Arkadaş Daveti Referans Programı Değişiklikleri" }, - { "LanguageCode": "ja", "Message": "お友達紹介プログラム更新" }, - { "LanguageCode": "zh", "Message": "「邀请好友计划」更新" }, - { "LanguageCode": "ko", "Message": "친구 초대 프로그램의 변화" } - ], - "Prop": "https://www.warframe.com/referral", - "Date": { "$date": { "$numberLong": "1684421760000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684393200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fe49a80950256bf393fa2aa0b9303a_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "6466726e06ca85f0e202e343" }, "Messages": [ @@ -326,52 +212,11 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "64668cd31137f75bf70d0e09" }, - "Messages": [ - { "LanguageCode": "en", "Message": "May in Warframe Roundup" }, - { "LanguageCode": "fr", "Message": "Tour d'horizon du mois de mai dans Warframe" }, - { "LanguageCode": "it", "Message": "Maggio in Warframe: Riepilogo" }, - { "LanguageCode": "de", "Message": "Mai-Zusammenfassung für Warframe" }, - { "LanguageCode": "es", "Message": "Mayo en Warframe: Resumen" }, - { "LanguageCode": "pt", "Message": "Resumo do mês de maio no Warframe" }, - { "LanguageCode": "pl", "Message": "Maj w Warframe" }, - { "LanguageCode": "uk", "Message": "Травнева добірка у Warframe" }, - { "LanguageCode": "tr", "Message": "Mayıs Ayı Warframe Özeti" }, - { "LanguageCode": "ja", "Message": "5月の『Warframe』振り返り" }, - { "LanguageCode": "zh", "Message": "《Warframe》的五月摘要" }, - { "LanguageCode": "ko", "Message": "5월의 워프레임 요약" }, - { "LanguageCode": "tc", "Message": "Warframe 5 月份總結" } - ], - "Prop": "https://www.warframe.com/news/may-in-warframe-roundup?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-MayWarframeRoundup", - "Date": { "$date": { "$numberLong": "1684440240000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684440000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/8f08145f560b43a4cafadc7bb9c5748_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64677ce96fba686c8a06bd24" }, - "Messages": [ - { - "LanguageCode": "en", - "Message": "May 25 Charity Stream: Warframe x Covenant House! Click To Learn More. 6 p.m. EST " - } - ], - "Prop": "https://wrfr.me/chmm23", - "Date": { "$date": { "$numberLong": "1684503360000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "6467baa3db8bd174db0b163b" }, "Messages": [ { "LanguageCode": "en", "Message": "Pre-order 10 Year Anniversary Merch!" }, - { - "LanguageCode": "fr", - "Message": "Précommandez la Collection de produits dérivés du 10e Anniversaire !" - }, + { "LanguageCode": "fr", "Message": "Précommandez la Collection de produits dérivés du 10e Anniversaire !" }, { "LanguageCode": "it", "Message": "Preordina il Merch per il 10° Anniversario!" }, { "LanguageCode": "de", "Message": "Bestellt die Merch-Kollektion zum 10. Jubiläum vor!" }, { "LanguageCode": "es", "Message": "¡Reserva los productos del 10° aniversario!" }, @@ -390,41 +235,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "646e55122b97d301df08b65a" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第171回のお知らせ" }], - "Prop": "https://bit.ly/426QXR5", - "Date": { "$date": { "$numberLong": "1684952280000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/4e0d4b80256c0b05a5a9643664799beb.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "646e5cc6af17a161c20d79a4" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Nora’s Mix Vol. 4 has begun" }, - { "LanguageCode": "fr", "Message": "Le Mix de Nora Vol. 4 est disponible" }, - { "LanguageCode": "it", "Message": "Mix di Nora Vol. 4 è iniziato" }, - { "LanguageCode": "de", "Message": "Noras Mix - Vol. 4 hat begonnen" }, - { "LanguageCode": "es", "Message": "Comenzó el Mix de Nora Vol. 4" }, - { "LanguageCode": "pt", "Message": "O Mix da Nora Vol. 4 começou" }, - { "LanguageCode": "ru", "Message": "Микс Норы: Диск 4 уже в начался" }, - { "LanguageCode": "pl", "Message": "Składanka Nory cz. 4 już dostępna" }, - { "LanguageCode": "uk", "Message": "Вибірка Нори 4 уже в грі" }, - { "LanguageCode": "tr", "Message": "Nora'nın Derlemesi - 4. Seri şimdi sizlerle" }, - { "LanguageCode": "ja", "Message": "Nora's Mix Vol.4 開催!" }, - { "LanguageCode": "zh", "Message": "《Nora 的混选 Vol. 4》现已开始!" }, - { "LanguageCode": "ko", "Message": "노라의 믹스 Vol. 4가 시작되었습니다" }, - { "LanguageCode": "tc", "Message": "Nora 合輯 VI 已登場" } - ], - "Prop": "https://www.warframe.com/news/noras-mix-vol-4?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-NightwaveVol4Launch", - "Date": { "$date": { "$numberLong": "1684953960000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684951200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/42721390b8812fe65296ce5eee7d862_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "646e6a4cf16914573401c77b" }, "Messages": [{ "LanguageCode": "tr", "Message": "Nora’nın Derlemesi - 3. Seri Tamamlandı + 4. Seri Sizlerle!" }], @@ -435,273 +245,667 @@ "Community": true }, { - "_id": { "$oid": "646fbefdeaa2199bc406b117" }, - "Messages": [{ "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.11 + Revisión 33.0.12" }], - "Prop": "https://forums.warframe.com/topic/1354406-la-paradoja-de-duviri-revisi%C3%B3n-33011-revisi%C3%B3n-33012/", - "Date": { "$date": { "$numberLong": "1685044920000" } }, + "_id": { "$oid": "648b4a319960e4f3f507aafb" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Submit your cover of 'We All Lift Together'!" }, + { "LanguageCode": "fr", "Message": "Soumettez votre reprise de \"We All Lift Together\" !" }, + { "LanguageCode": "it", "Message": "Invia la tua cover di 'We All Lift Together'!" }, + { "LanguageCode": "de", "Message": "Reicht eure Cover-Version von 'We All Lift Together' ein!" }, + { "LanguageCode": "es", "Message": "¡Envía tu cover de \"We All Lift Together\"!" }, + { "LanguageCode": "pt", "Message": "Envie a sua versão cover de ''We All Lift Together''!" }, + { "LanguageCode": "ru", "Message": "Отправьте свой кавер на песню «We All Lift Together»!" }, + { "LanguageCode": "pl", "Message": "Prześlij swój cover utworu \"We All Lift Together\"!" }, + { "LanguageCode": "tr", "Message": "We All Lift Together' şarkısı aranjmanını gönder!" }, + { "LanguageCode": "ja", "Message": "「We All Lift Together」のカバー曲を投稿しよう!" }, + { "LanguageCode": "zh", "Message": "提交你对《我们共度时艰》的二次创作!" }, + { "LanguageCode": "ko", "Message": "여러분만의 버전으로 부른 'We All Lift Together' 커버곡을 응모해주세요!" }, + { "LanguageCode": "tc", "Message": "提交你的「我們共舉時艱」二次創作!" } + ], + "Prop": "https://forms.gle/cCdQFq1dkutnQmXu5", + "Date": { "$date": { "$numberLong": "1686849540000" } }, + "EventStartDate": { "$date": { "$numberLong": "1686801600000" } }, + "EventEndDate": { "$date": { "$numberLong": "1689393600000" } }, "Priority": false, "MobileOnly": false, - "Community": true + "GameOnly": true }, { - "_id": { "$oid": "6471f7ad49b3f286420543a4" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #171 : version FR" }], - "Prop": "https://forums.warframe.com/topic/1354587-r%C3%A9sum%C3%A9-devstream-171-version-fr/", - "Date": { "$date": { "$numberLong": "1685190540000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.3fa3bb18a3cd29a7ee623ec88bf72429.png", + "_id": { "$oid": "648c4202bc8c61a6f2063075" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Надішліть свій переспів «We All Life Together»" }], + "Prop": "https://forms.gle/cCdQFq1dkutnQmXu5", + "Date": { "$date": { "$numberLong": "1686913380000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.527ab75a6e11c92d58cd8e26c0fbea5c.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "6475055203028af6f5076925" }, - "Messages": [{ "LanguageCode": "en", "Message": "The Duviri Paradox: Hotfix 33.0.14" }], - "Prop": "https://www.warframe.com/updates/pc/33-0-14", - "Date": { "$date": { "$numberLong": "1685387100000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "64751514ef6fa74efd0b624e" }, - "Messages": [{ "LanguageCode": "en", "Message": " PSA: Hotfix pause until The 7 Crimes of Kullervo Update" }], - "Prop": "https://forums.warframe.com/topic/1355007-psa-hotfixing-paused-until-the-7-crimes-of-kullervo/", - "Date": { "$date": { "$numberLong": "1685394600000" } }, - "Priority": true, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "647516f0fefde43d790ad0ed" }, - "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #352!" }], - "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", - "Date": { "$date": { "$numberLong": "1685395080000" } }, - "EventStartDate": { "$date": { "$numberLong": "1685656800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685664000000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframe/", + "_id": { "$oid": "64931f8ca8ed97840d05728a" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes : Les 7 Crimes de Kullervo" }], + "Prop": "https://forums.warframe.com/topic/1357229-mise-%C3%A0-jour-335%C2%A0-les-sept-crimes-de-kullervo/", + "Date": { "$date": { "$numberLong": "1687363260000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/77b1a0663839e804bedd36ba71e0147a.png", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "6475175603028af6f50769e3" }, - "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: Community Stream Schedule May 29 to June 2!" }], - "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", - "Date": { "$date": { "$numberLong": "1685395200000" } }, + "_id": { "$oid": "64932af048a7518e5801b9a3" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Known Issues - The Seven Crimes of Kullervo" }], + "Prop": "https://forums.warframe.com/topic/1357249-psa-the-seven-crimes-of-kullervo-known-issues-thread/?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1687366320000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "6475ddac402fe7be5c0f0efb" }, - "Messages": [{ "LanguageCode": "ja", "Message": "5月29日~6月2日の配信スケジュール" }], - "Prop": "https://bit.ly/43eU1f4", - "Date": { "$date": { "$numberLong": "1685446020000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "647624dc351728a45207bd67" }, - "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: Programa de streams de la comunidad" }], - "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", - "Date": { "$date": { "$numberLong": "1685464200000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6476250bedcc8797810215de" }, - "Messages": [{ "LanguageCode": "es", "Message": "¡Emisión Tenno con sorteo de Hildryn Prime Access + Twitch Drop!" }], - "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", - "Date": { "$date": { "$numberLong": "1685464260000" } }, - "EventStartDate": { "$date": { "$numberLong": "1685559600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685563200000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframeinternational", - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/1c2a55a07ef0fcf121b6b4633b92c060.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "647632c88f764656130e1824" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Streams : 29 mai - 2 juin" }], - "Prop": "https://forums.warframe.com/topic/1355110-streams-communautaires-29-mai-2-juin/", - "Date": { "$date": { "$numberLong": "1685467800000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64764bd4931e7ae47f0d1a60" }, - "Messages": [{ "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.13 + Revisión 33.0.14" }], - "Prop": "https://forums.warframe.com/topic/1355129-la-paradoja-de-duviri-revisi%C3%B3n-33013-revisi%C3%B3n-33014/", - "Date": { "$date": { "$numberLong": "1685474220000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - } - ], - "Goals": [ - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1684512000000" } }, - "Expiry": { "$date": { "$numberLong": "1685721600000" } }, - "Node": "SolNode129", - "ScoreVar": "FissuresClosed", - "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", - "Count": 24, - "HealthPct": 0.24, - "Regions": [1], - "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", - "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", - "OptionalInMission": true, - "Tag": "HeatFissure", - "UpgradeIds": [{ "$oid": "64667809d9c6963e382d9546" }, { "$oid": "64667809d9c6963e382d9547" }], - "Personal": true, - "Community": true, - "Goal": 100, - "Reward": { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], - "countedItems": [] - }, - "InterimGoals": [5, 25, 50, 75], - "InterimRewards": [ + "_id": { "$oid": "649332b411f8afb670001c2d" }, + "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33.5: 쿨레르보의 일곱 가지 죄" }], + "Prop": "", + "Links": [ { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], - "countedItems": [] + "LanguageCode": "ko", + "Link": "https://forums.warframe.com/topic/1357281-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-335-%EC%BF%A8%EB%A0%88%EB%A5%B4%EB%B3%B4%EC%9D%98-%EC%9D%BC%EA%B3%B1-%EA%B0%80%EC%A7%80-%EC%A3%84/" } - ] + ], + "Date": { "$date": { "$numberLong": "1687368300000" } }, + "Priority": false, + "MobileOnly": false }, { - "_id": { "$oid": "64663a0c0483e3f5b70ff0b2" }, - "Activation": { "$date": { "$numberLong": "1684508400000" } }, - "Expiry": { "$date": { "$numberLong": "1685717940000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode27", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2018D", - "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", - "Tag": "Anniversary2018TacAlert", - "Reward": { - "items": ["/Lotus/StoreItems/Upgrades/Skins/Scarves/DexScarf", "/Lotus/StoreItems/Types/Game/CatbrowPet/CatbrowGeneticSignature"] - } + "_id": { "$oid": "6493614fa93624418f0e5380" }, + "Messages": [{ "LanguageCode": "es", "Message": "Actualización 33.5: Los Siete Crímenes de Kullervo" }], + "Prop": "https://forums.warframe.com/topic/1357383-actualizaci%C3%B3n-335-los-siete-cr%C3%ADmenes-de-kullervo/", + "Date": { "$date": { "$numberLong": "1687380240000" } }, + "Priority": false, + "MobileOnly": false }, { - "_id": { "$oid": "64663a3c866d9fe65c012364" }, - "Activation": { "$date": { "$numberLong": "1684508400000" } }, - "Expiry": { "$date": { "$numberLong": "1685717940000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode24", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2023k", - "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", - "Tag": "Anniversary2018TacAlert", - "Reward": { - "items": ["/Lotus/StoreItems/Upgrades/Skins/Wisp/DexWispSkin", "/Lotus/StoreItems/Types/StoreItems/SlotItems/TwoSentinelSlotItem"] - } + "_id": { "$oid": "64936b6d66571ada400474c0" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Оновлення 33.5: Сім злочинів Куллерво" }], + "Prop": "https://forums.warframe.com/topic/1357411-%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-335-%D1%81%D1%96%D0%BC-%D0%B7%D0%BB%D0%BE%D1%87%D0%B8%D0%BD%D1%96%D0%B2-%D0%BA%D1%83%D0%BB%D0%BB%D0%B5%D1%80%D0%B2%D0%BE/", + "Date": { "$date": { "$numberLong": "1687382820000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/77b1a0663839e804bedd36ba71e0147a.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649c87e59da048ca2202161a" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Drops Twitch : campagne des 10 ans" }], + "Prop": "https://forums.warframe.com/topic/1358811-drops-twitch-campagne-du-10e-anniversaire-%C3%A0-partir-du-1er-juillet-%C3%A0-9h-he/", + "Date": { "$date": { "$numberLong": "1687979940000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649c8f594706538b1002f50b" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Twitch Dropları: 10. Yıl Dönümü Kampanyası, 1 Temmuz TSİ 16:00'da başlıyor!" }], + "Prop": "https://forums.warframe.com/topic/1358816-twitch-droplar%C4%B1-10-y%C4%B1l-d%C3%B6n%C3%BCm%C3%BC-kampanyas%C4%B1-1-temmuz-tsi%CC%87-1600da-ba%C5%9Fl%C4%B1yor/", + "Date": { "$date": { "$numberLong": "1687981740000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649c95a6afb787b1360ce40e" }, + "Messages": [{ "LanguageCode": "ja", "Message": "10周年記念Twitchキャンペーン! " }], + "Prop": "https://bit.ly/3CREpmc", + "Date": { "$date": { "$numberLong": "1687983420000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.b3a0a9eb925dba65d3fa345689293aff.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649db9a52021d217f20e64dc" }, + "Messages": [ + { "LanguageCode": "en", "Message": "The Summer Mega Sale is now live!" }, + { "LanguageCode": "fr", "Message": "Les méga soldes d'été sont maintenant disponibles !" }, + { "LanguageCode": "it", "Message": "Le Mega-Offerte Estive sono ora disponibili!" }, + { "LanguageCode": "de", "Message": "Die Warframe Sommer Mega-Rabatte sind jetzt live!" }, + { "LanguageCode": "es", "Message": "¡La megaoferta de verano ya está disponible!" }, + { "LanguageCode": "pt", "Message": "A Mega Promoção de Verão já está disponível!" }, + { "LanguageCode": "ru", "Message": "Летняя мега-распродажа началась!" }, + { "LanguageCode": "pl", "Message": "Letnia Wyprzedaż już dostępna!" }, + { "LanguageCode": "uk", "Message": "Літній розпродаж у Warframe уже розпочався!" }, + { "LanguageCode": "tr", "Message": "Mega Yaz İndirimi şimdi sizlerle!" }, + { "LanguageCode": "ja", "Message": "夏のメガセールが開催中!" }, + { "LanguageCode": "zh", "Message": "夏季大促销已上线!" }, + { "LanguageCode": "ko", "Message": "여름 폭탄 세일을 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "夏季超級特賣現已登場!" } + ], + "Prop": "https://www.warframe.com/news/warframe-summer-mega-sale?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688058000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e350d7dd6952975b050b24c21fd397eb_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649dbd9d3448be0aa107c931" }, + "Messages": [{ "LanguageCode": "es", "Message": "Los Siete Crímenes de Kullervo: Revisión 33.5.3 + Revisión 33.5.4" }], + "Prop": "https://forums.warframe.com/topic/1358928-los-siete-cr%C3%ADmenes-de-kullervo-revisi%C3%B3n-3353-revisi%C3%B3n-3354/", + "Date": { "$date": { "$numberLong": "1688059260000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649dd1e36230bdfdfd04fc12" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Recall: Ten-Zero begins July 19" }, + { "LanguageCode": "fr", "Message": "Le Rappel : Ten-Zero commence le 19 juillet" }, + { "LanguageCode": "it", "Message": "La Rievocazione: Ten-Zero inizia il 19 Luglio" }, + { "LanguageCode": "de", "Message": "\"Rückruf: Ten-Zero\" beginnt am 19. Juli" }, + { "LanguageCode": "es", "Message": "El Recuerdo: Diez-Cero comienza el 19 de julio" }, + { "LanguageCode": "pt", "Message": "A Reiteração: 10-0 começa no dia 19 de julho" }, + { "LanguageCode": "ru", "Message": "«Воспоминания: Десять-ноль» начинаются 19 июля" }, + { "LanguageCode": "pl", "Message": "Powrót: Ten-Zero wraca 19 lipca" }, + { "LanguageCode": "uk", "Message": "«Спогад: 10-0» — із 19 липня" }, + { "LanguageCode": "tr", "Message": "Geri Dönüş: Ten-Zero, 19 Temmuz'da başlıyor" }, + { "LanguageCode": "ja", "Message": "リコール:Ten-Zeroが7月20日から開幕" }, + { "LanguageCode": "zh", "Message": "「召回:10-0」将于美东夏令时间 7 月 19 日推出" }, + { "LanguageCode": "ko", "Message": "회상: 10-0가 북미 시각 7월 19일에 시작됩니다" }, + { "LanguageCode": "tc", "Message": "「召回:10-0」從 7 月 19 日開始" } + ], + "Prop": "", + "Links": [ + { "LanguageCode": "en", "Link": "https://www.warframe.com/news/recall-ten-zero" }, + { "LanguageCode": "fr", "Link": "https://www.warframe.com/fr/news/recall-ten-zero" }, + { "LanguageCode": "it", "Link": "https://www.warframe.com/it/news/recall-ten-zero" }, + { "LanguageCode": "de", "Link": "https://www.warframe.com/de/news/recall-ten-zero" }, + { "LanguageCode": "es", "Link": "https://www.warframe.com/es/news/recall-ten-zero" }, + { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/news/recall-ten-zero" }, + { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/news/recall-ten-zero" }, + { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/news/recall-ten-zero" }, + { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/news/recall-ten-zero" }, + { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/news/recall-ten-zero" }, + { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/news/recall-ten-zero" }, + { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/news/recall-ten-zero" }, + { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/news/recall-ten-zero" }, + { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/news/recall-ten-zero" } + ], + "Date": { "$date": { "$numberLong": "1688061120000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688011200000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/promo/anniversary/tenyears/masthead-keyart.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649ddf316230bdfdfd04fe07" }, + "Messages": [{ "LanguageCode": "en", "Message": "TennoCon Livestream Schedule" }], + "Prop": "https://www.warframe.com/news/tennocon-2023-schedule-revealed", + "Date": { "$date": { "$numberLong": "1688067780000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688011200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/bfb40fef22a8110c690e49459bb3ba41_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649ef1dc87ca60af0e0071a9" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #172" }], + "Prop": "https://forums.warframe.com/topic/1358985-r%C3%A9sum%C3%A9-devstream-172-version-fr/", + "Date": { "$date": { "$numberLong": "1688138100000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e32ae5312b58b8d47c91aa20528f62df_1600x900.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649f0b25bcf880cade0fdb85" }, + "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: 10 Year Anniversary Campaign!" }], + "Prop": "https://forums.warframe.com/topic/1358802-twitch-drops-10-year-anniversary-campaign-starting-july-1st-9am-et/?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688144520000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EventEndDate": { "$date": { "$numberLong": "1690030800000" } }, + "EventLiveUrl": "https://forums.warframe.com/topic/1358802-twitch-drops-10-year-anniversary-campaign-starting-july-1st-9am-et/?utm_medium=in-game&utm_source=in-game", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a3243ea597a863880a0362" }, + "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: ¡Campaña del 10º aniversario de Warframe!" }], + "Prop": "https://forums.warframe.com/topic/1359351-twitch-drops-%C2%A1campa%C3%B1a-de-aniversario-de-10-a%C3%B1os-a-partir-del-1-de-julio-a-las-9-a-m-et/", + "Date": { "$date": { "$numberLong": "1688413140000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EventEndDate": { "$date": { "$numberLong": "1690030800000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a3338a35b3be7f8c093585" }, + "Messages": [{ "LanguageCode": "en", "Message": "July Community Stream Schedule " }], + "Prop": "https://forums.warframe.com/topic/1359355-community-stream-schedule-july-3-20th/?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688417100000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a33c11f6aa71b88501f6dc" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Предмети з Twitch Drop: кампанія до 10-річчя." }], + "Prop": "https://forums.warframe.com/topic/1359358-%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%B8-%D0%B7-twitch-drop-%D0%BA%D0%B0%D0%BC%D0%BF%D0%B0%D0%BD%D1%96%D1%8F-%D0%B4%D0%BE-10-%D1%80%D1%96%D1%87%D1%87%D1%8F-%D0%B7-1-%D0%BB%D0%B8%D0%BF%D0%BD%D1%8F-1600-%D0%B7%D0%B0-%D0%BA%D0%B8%D1%97%D0%B2%D1%81%D1%8C%D0%BA%D0%B8%D0%BC-%D1%87%D0%B0%D1%81%D0%BE%D0%BC/", + "Date": { "$date": { "$numberLong": "1688419260000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.b3a0a9eb925dba65d3fa345689293aff.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a3866532a2ec5e600aeb0a" }, + "Messages": [{ "LanguageCode": "ja", "Message": "7月3日~7月20日の配信スケジュール" }], + "Prop": "https://bit.ly/46MfONF", + "Date": { "$date": { "$numberLong": "1688438220000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a4016f670fa8a76f08f43b" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Трансляції від спільноти: 3 — 20 липня!" }], + "Prop": "https://forums.warframe.com/topic/1359408-%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D1%96%D1%97-%D0%B2%D1%96%D0%B4-%D1%81%D0%BF%D1%96%D0%BB%D1%8C%D0%BD%D0%BE%D1%82%D0%B8-3-%E2%80%94-20-%D0%BB%D0%B8%D0%BF%D0%BD%D1%8F/", + "Date": { "$date": { "$numberLong": "1688469840000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.79e9944db3a2d2c9ce9fcc88f2129ae3.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a709a2dd0a98de5402437c" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Now Available: Banshee Prime & Mirage Prime" }, + { "LanguageCode": "fr", "Message": "Maintenant disponibles : Banshee Prime et Mirage Prime" }, + { "LanguageCode": "it", "Message": "Ora Disponibili: Banshee Prime e Mirage Prime" }, + { "LanguageCode": "de", "Message": "Jetzt erhältlich: Banshee Prime und Mirage Prime" }, + { "LanguageCode": "es", "Message": "Ya disponible: Banshee Prime y Mirage Prime" }, + { "LanguageCode": "pt", "Message": "Já Disponível: Banshee Prime e Mirage Prime" }, + { "LanguageCode": "ru", "Message": "Уже доступны: Банши Прайм и Мираж Прайм" }, + { "LanguageCode": "pl", "Message": "Już dostępne: Banshee Prime i Mirage Prime" }, + { "LanguageCode": "uk", "Message": "Уже доступні: Банші-прайм і Міраж-прайм" }, + { "LanguageCode": "tr", "Message": "Şimdi Sizlerle: Banshee Prime ve Mirage Prime" }, + { "LanguageCode": "ja", "Message": "Banshee PrimeとMirage Primeをゲットしよう" }, + { "LanguageCode": "zh", "Message": "现已登场:Banshee Prime 和 Mirage Prime" }, + { "LanguageCode": "ko", "Message": "지금 만나보세요: 밴쉬 프라임 및 미라지 프라임" }, + { "LanguageCode": "tc", "Message": "現已登場:Banshee Prime 以及 Mirage Prime" } + ], + "Prop": "", + "Links": [ + { "LanguageCode": "en", "Link": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "fr", "Link": "https://www.warframe.com//fre/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "it", "Link": "https://www.warframe.com/it/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "de", "Link": "https://www.warframe.com/de/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "es", "Link": "https://www.warframe.com/es/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/prime-resurgence?utm_medium=in-game&utm_source=in-game" } + ], + "Date": { "$date": { "$numberLong": "1688667360000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/cf6e94b58b0e6f4166e9f5d9a50842a8_800x450.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a70e1b7d879cc23f092b4a" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Get the Kronen Iridos Weapon Bundle" }, + { "LanguageCode": "fr", "Message": "Obtenez le Bundle d'arme Kronen Iridos" }, + { "LanguageCode": "it", "Message": "Ottieni il Pacchetto Arma Kronen Iridos" }, + { "LanguageCode": "de", "Message": "Holt euch das Waffen-Paket: Kronen Iridos" }, + { "LanguageCode": "es", "Message": "Obtén el Paquete de arma Kronen Iridos" }, + { "LanguageCode": "pt", "Message": "Obtenha o Conjunto da Arma Kronen Iridos" }, + { "LanguageCode": "pl", "Message": "Zdobądź zestaw broni: Kronen Iridos" }, + { "LanguageCode": "uk", "Message": "Отримайте комплект «Іридій» для Кронена" }, + { "LanguageCode": "tr", "Message": "Kronen Iridos Silah Paketini Al" }, + { "LanguageCode": "ja", "Message": "Kronen Iridos武器バンドルをゲット" } + ], + "Prop": "https://www.warframe.com/news/prime-gaming-iridos-collection?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688669160000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688666400000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/1e27d24da6fdef2db2c316b2bf31cfc2_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a718d5d0f273eec4094531" }, + "Messages": [{ "LanguageCode": "ja", "Message": "[重要]エンドユーザー使用許諾契約が改定されます" }], + "Prop": "https://bit.ly/46OHtxo", + "Date": { "$date": { "$numberLong": "1688672400000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a82148f306ef37280e6ac7" }, + "Messages": [{ "LanguageCode": "en", "Message": "The Seven Crimes of Kullervo: Hotfix 33.5.6" }], + "Prop": "https://www.warframe.com/updates/pc/33-5-6", + "Date": { "$date": { "$numberLong": "1688740140000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a837164f857f32740d8bf2" }, + "Messages": [{ "LanguageCode": "es", "Message": "Los Siete Crímenes de Kullervo: Revisión 33.5.5 + Revisión 33.5.6" }], + "Prop": "https://forums.warframe.com/topic/1359741-los-siete-cr%C3%ADmenes-de-kullervo-revisi%C3%B3n-3355-revisi%C3%B3n-3356/", + "Date": { "$date": { "$numberLong": "1688745660000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a84e66280dd26c2c0efa87" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Hildryn Prime Access Ending Soon" }, + { "LanguageCode": "fr", "Message": "Le Prime Access Hildryn Prime se termine bientôt" }, + { "LanguageCode": "it", "Message": "L'Accesso Hildryn Prime Terminerà Presto" }, + { "LanguageCode": "de", "Message": "Hildryn Prime Access endet bald" }, + { "LanguageCode": "es", "Message": "Prime Access de Hildryn está por terminar" }, + { "LanguageCode": "pt", "Message": "O Prime Access da Hildryn Prime terminará em breve" }, + { "LanguageCode": "ru", "Message": "Доступ Хильдрин Прайм скоро закончится" }, + { "LanguageCode": "pl", "Message": "Hildryn Prime Access wkrótce się skończy" }, + { "LanguageCode": "uk", "Message": "Доступ до Гільдрини-прайм невдовзі завершується" }, + { "LanguageCode": "tr", "Message": "Hildryn Prime Access Yakında Sona Eriyor" }, + { "LanguageCode": "ja", "Message": "Hildryn Prime Accessが近日終了" }, + { "LanguageCode": "zh", "Message": "Hildryn Prime Access 即将结束" }, + { "LanguageCode": "ko", "Message": "힐드린 프라임 액세스가 곧 종료됩니다" }, + { "LanguageCode": "tc", "Message": "Hildryn Prime Access 即將結束" } + ], + "Prop": "https://www.warframe.com/news/hildryn-prime-access?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688751300000" } }, + "EventEndDate": { "$date": { "$numberLong": "1690344000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/8260dab07e051d35bcef1a2a82c22965_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64ac2714c715cfb44009da9b" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Alienware Arena Giveaways!" }, + { "LanguageCode": "fr", "Message": "Giveaway Alienware Arena !" }, + { "LanguageCode": "it", "Message": "Giveaway Alienware Arena!" }, + { "LanguageCode": "de", "Message": "Alienware Arena Giveaways!" }, + { "LanguageCode": "es", "Message": "¡Sorteo de Alienware Arena!" }, + { "LanguageCode": "pt", "Message": "Brindes e Sorteio da Alienware Arena!" }, + { "LanguageCode": "ru", "Message": "Розыгрыши Alienware Arena!" }, + { "LanguageCode": "pl", "Message": "Rozdanie Alienware Arena!" }, + { "LanguageCode": "uk", "Message": "Розіграші від Alienware Arena!" }, + { "LanguageCode": "tr", "Message": "Alienware Arena Çekilişleri!" }, + { "LanguageCode": "ja", "Message": "Alienware Arenaプレゼントキャンペーン!" }, + { "LanguageCode": "zh", "Message": "Alienware Arena 赠礼!" }, + { "LanguageCode": "ko", "Message": "Alienware Arena 경품 행사!" }, + { "LanguageCode": "tc", "Message": "Alienware Arena 贈禮!" } + ], + "Prop": "https://www.warframe.com/news/alienware-arena-giveaways?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688997120000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688997600000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/604ecbcc3704d5ef4d7fa585f31f29f9_1600x900.png", + "Priority": false, + "MobileOnly": false } ], + "Goals": [], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "64776b7eba82e08c76d6cb9b" }, - "Activation": { "$date": { "$numberLong": "1685548800000" } }, - "Expiry": { "$date": { "$numberLong": "1685635200000" } }, + "_id": { "$oid": "64ac277ee0be1ec801ded16b" }, + "Activation": { "$date": { "$numberLong": "1689004800000" } }, + "Expiry": { "$date": { "$numberLong": "1689091200000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 28971, - "Boss": "SORTIE_BOSS_ALAD", + "Seed": 58490, + "Boss": "SORTIE_BOSS_HYENA", "ExtraDrops": [], "Variants": [ - { - "missionType": "MT_MOBILE_DEFENSE", - "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", - "node": "SolNode53", - "tileset": "CorpusGasCityTileset" - }, - { - "missionType": "MT_RESCUE", - "modifierType": "SORTIE_MODIFIER_IMPACT", - "node": "SolNode107", - "tileset": "CorpusOutpostTileset" - }, - { - "missionType": "MT_EXTERMINATION", - "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", - "node": "SolNode304", - "tileset": "OrokinMoonTilesetCorpus" - } + { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode6", "tileset": "CorpusOutpostTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode215", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode102", "tileset": "CorpusShipTileset" } ], "Twitter": true + }, + { + "_id": { "$oid": "64ad78fdfcacab999d728e66" }, + "Activation": { "$date": { "$numberLong": "1689091200000" } }, + "Expiry": { "$date": { "$numberLong": "1689177600000" } }, + "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", + "Seed": 58954, + "Boss": "SORTIE_BOSS_CORRUPTED_VOR", + "ExtraDrops": [], + "Variants": [ + { "missionType": "MT_TERRITORY", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode404", "tileset": "OrokinVoidTileset" }, + { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_FREEZE", "node": "SolNode407", "tileset": "OrokinVoidTileset" }, + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", "node": "SolNode408", "tileset": "OrokinVoidTileset" } + ] } ], "LiteSorties": [ { - "_id": { "$oid": "6473e77dfff198b17e47812d" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "_id": { "$oid": "64ab467d8122f2d5a857b947" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 62757, + "Seed": 67504, "Boss": "SORTIE_BOSS_AMAR", "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode30" }, - { "missionType": "MT_EXCAVATE", "node": "SolNode11" }, + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode11" }, + { "missionType": "MT_EXCAVATE", "node": "SolNode45" }, { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "64775ff00000000000000002" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ac2ac5e63fe1ba9ba984b6" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "ArbitersSyndicate", + "Seed": 58490, + "Nodes": ["SolNode107", "SolNode89", "SolNode147", "SolNode130", "SolNode171", "SolNode4", "SolNode1"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984b8" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 61357, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac5e63fe1ba9ba984b7" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 62817, + "Nodes": ["SolNode36", "SolNode101", "SolNode79", "SolNode103", "SolNode122", "SolNode93", "SolNode137"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984ba" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "KahlSyndicate", + "Seed": 63524, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984b9" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "EventSyndicate", + "Seed": 8133, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bc" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "QuillsSyndicate", + "Seed": 25301, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bb" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 58704, + "Nodes": ["SolNode109", "SolNode224", "SolNode139", "SolNode63", "SolNode74", "SolNode19", "SolNode211"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bd" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "PerrinSyndicate", + "Seed": 41057, + "Nodes": ["SolNode14", "SolNode85", "SettlementNode1", "SolNode42", "SolNode128", "SolNode162", "SolNode119"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984be" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 82961, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c3" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 25479, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c6" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 19817, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c0" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 80910, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c5" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 50640, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bf" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 47689, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c7" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 38660, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c4" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 3659, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c1" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 65648, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c2" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 14558, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c8" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 97600, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984ca" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 64315, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c9" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 5590, + "Nodes": ["SolNode226", "SolNode61", "SolNode710", "SolNode25", "SolNode217", "SettlementNode11", "SolNode70"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984cb" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "VoxSyndicate", + "Seed": 18807, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984cc" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 41173, + "Nodes": ["SolNode59", "SolNode223", "SolNode23", "SolNode146", "SolNode189", "SolNode172", "SolNode402"] + }, + { + "_id": { "$oid": "64ad569e0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, "Tag": "EntratiSyndicate", - "Seed": 20831, + "Seed": 61243, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [5, 5, 5] + "xpAmounts": [6, 6, 6] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [11, 11, 11] + "xpAmounts": [8, 8, 8] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", @@ -714,23 +918,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 29] + "xpAmounts": [19, 19, 19, 28] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 39] + "xpAmounts": [21, 21, 21, 21, 41] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -767,56 +971,64 @@ ] }, { - "_id": { "$oid": "64775ff00000000000000022" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ad569e0000000000000026" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, + "Tag": "ZarimanSyndicate", + "Seed": 61244, + "Nodes": [] + }, + { + "_id": { "$oid": "64ad569e0000000000000022" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, "Tag": "SolarisSyndicate", - "Seed": 20831, + "Seed": 61243, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [350, 350, 350] + "xpAmounts": [420, 420, 420] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [680, 680, 680] + "xpAmounts": [720, 720, 720] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 890] + "xpAmounts": [590, 590, 590, 870] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [580, 580, 580, 580, 1140] + "xpAmounts": [550, 550, 550, 550, 1090] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [680, 680, 680, 680, 1340] + "xpAmounts": [690, 690, 690, 690, 1350] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -824,65 +1036,65 @@ }, { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [760, 760, 760, 760, 1500] + "xpAmounts": [820, 820, 820, 820, 1610] } ] }, { - "_id": { "$oid": "64775ff00000000000000007" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ad569e0000000000000007" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, "Tag": "CetusSyndicate", - "Seed": 20831, + "Seed": 61243, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [690, 690, 690] + "xpAmounts": [360, 360, 360] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [710, 710, 710] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [590, 590, 590, 870] + "xpAmounts": [610, 610, 610, 900] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 550, 1080] + "xpAmounts": [560, 560, 560, 560, 1090] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1350] + "xpAmounts": [700, 700, 700, 700, 1380] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -890,6 +1102,159 @@ }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [770, 770, 770, 770, 1510] + } + ] + }, + { + "_id": { "$oid": "64ad79c50000000000000002" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, + "Tag": "EntratiSyndicate", + "Seed": 47401, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [6, 6, 6] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [10, 10, 10] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", + "masteryReq": 5, + "minEnemyLevel": 25, + "maxEnemyLevel": 30, + "endless": true, + "bonusXpMultiplier": 0.15000001, + "xpAmounts": [14, 14, 14] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "masteryReq": 2, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [16, 16, 16, 25] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [20, 20, 20, 20, 40] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [25, 25, 25, 25, 50] + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", + "masteryReq": 5, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [2, 2, 2, 4], + "locationTag": "ChamberB", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [4, 4, 4, 5], + "locationTag": "ChamberA", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", + "masteryReq": 5, + "minEnemyLevel": 50, + "maxEnemyLevel": 60, + "xpAmounts": [5, 5, 5, 7], + "locationTag": "ChamberC", + "isVault": true + } + ] + }, + { + "_id": { "$oid": "64ad79c50000000000000007" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, + "Tag": "CetusSyndicate", + "Seed": 47401, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [490, 490, 490] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [700, 700, 700] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [670, 670, 670, 980] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [630, 630, 630, 630, 1230] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [680, 680, 680, 680, 1330] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, @@ -899,460 +1264,298 @@ ] }, { - "_id": { "$oid": "64775ff00000000000000026" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ad79c50000000000000022" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, + "Tag": "SolarisSyndicate", + "Seed": 47401, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [400, 400, 400] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [710, 710, 710] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [610, 610, 610, 890] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobAmbush", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [570, 570, 570, 570, 1120] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [760, 760, 760, 760, 1490] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [800, 800, 800, 800, 1580] + } + ] + }, + { + "_id": { "$oid": "64ad79c50000000000000026" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, "Tag": "ZarimanSyndicate", - "Seed": 20831, + "Seed": 47401, "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4de" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "ArbitersSyndicate", - "Seed": 28971, - "Nodes": ["SolNode36", "SolNode123", "SolNode225", "SolNode709", "SolNode137", "SolNode195", "SolNode81"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4df" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 25969, - "Nodes": ["SolNode79", "SolNode41", "SettlementNode1", "SolNode132", "SolNode166", "SolNode72", "SolNode23"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e0" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 81067, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e1" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "EventSyndicate", - "Seed": 28897, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e2" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "KahlSyndicate", - "Seed": 92441, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e4" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "QuillsSyndicate", - "Seed": 61214, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e3" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 21393, - "Nodes": ["SolNode68", "SolNode2", "SolNode82", "SolNode217", "SolNode409", "SolNode139", "SolNode75"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e5" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "PerrinSyndicate", - "Seed": 72469, - "Nodes": ["SolNode39", "SolNode12", "SolNode146", "SolNode101", "SolNode121", "SolNode408", "SolNode96"] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e6" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 13526, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ea" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 20328, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4eb" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 87241, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ec" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 54438, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e7" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 20666, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e9" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 7709, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e8" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 33027, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ee" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 21780, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ef" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 95381, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ed" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 53091, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f0" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 60623, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f1" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 78309, - "Nodes": ["SolNode15", "SolNode106", "SettlementNode3", "SolNode224", "SolNode401", "SolNode76", "SolNode62"] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f3" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "VoxSyndicate", - "Seed": 52842, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f2" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 49149, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f4" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 9289, - "Nodes": ["SolNode130", "SolNode61", "SolNode30", "SolNode10", "SolNode102", "SolNode64", "SolNode50"] } ], "ActiveMissions": [ { - "_id": { "$oid": "64775c05cab187e046c3d277" }, - "Region": 12, - "Seed": 94704, - "Activation": { "$date": { "$numberLong": "1685543941731" } }, - "Expiry": { "$date": { "$numberLong": "1685550975969" } }, - "Node": "SolNode184", - "MissionType": "MT_SABOTAGE", + "_id": { "$oid": "64ad6025357b495f180d5564" }, + "Region": 9, + "Seed": 22195, + "Activation": { "$date": { "$numberLong": "1689083941869" } }, + "Expiry": { "$date": { "$numberLong": "1689090872723" } }, + "Node": "SolNode72", + "MissionType": "MT_DEFENSE", "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "647761698afaf76e50461fc8" }, + "_id": { "$oid": "64ad6062d99ca7575a305f42" }, + "Region": 3, + "Seed": 32236, + "Activation": { "$date": { "$numberLong": "1689084002029" } }, + "Expiry": { "$date": { "$numberLong": "1689090850537" } }, + "Node": "SolNode85", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64ad6062d99ca7575a305f43" }, + "Region": 2, + "Seed": 39346, + "Activation": { "$date": { "$numberLong": "1689084002029" } }, + "Expiry": { "$date": { "$numberLong": "1689091164336" } }, + "Node": "SolNode101", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64ad618eb13490a6d19830ef" }, + "Region": 2, + "Seed": 99258, + "Activation": { "$date": { "$numberLong": "1689084302097" } }, + "Expiry": { "$date": { "$numberLong": "1689090769276" } }, + "Node": "SolNode23", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "64ad618eb13490a6d19830f0" }, + "Region": 3, + "Seed": 96081, + "Activation": { "$date": { "$numberLong": "1689084302097" } }, + "Expiry": { "$date": { "$numberLong": "1689090997241" } }, + "Node": "SolNode63", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "64ad681eee7e23fc36cde3d3" }, + "Region": 8, + "Seed": 52707, + "Activation": { "$date": { "$numberLong": "1689085981981" } }, + "Expiry": { "$date": { "$numberLong": "1689090851874" } }, + "Node": "SolNode84", + "MissionType": "MT_INTEL", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "64ad690def6919bc8761fda1" }, "Region": 19, - "Seed": 58268, - "Activation": { "$date": { "$numberLong": "1685545321337" } }, - "Expiry": { "$date": { "$numberLong": "1685551434577" } }, + "Seed": 8693, + "Activation": { "$date": { "$numberLong": "1689086221185" } }, + "Expiry": { "$date": { "$numberLong": "1689092771610" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "64ad690def6919bc8761fda2" }, + "Region": 19, + "Seed": 1298, + "Activation": { "$date": { "$numberLong": "1689086221185" } }, + "Expiry": { "$date": { "$numberLong": "1689091440901" } }, "Node": "SolNode746", "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "6477630df698f676b0b32282" }, + "_id": { "$oid": "64ad6b29ae39dea52d96affa" }, + "Region": 8, + "Seed": 1701, + "Activation": { "$date": { "$numberLong": "1689086761492" } }, + "Expiry": { "$date": { "$numberLong": "1689092517218" } }, + "Node": "SolNode17", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64ad6b29ae39dea52d96affb" }, "Region": 15, - "Seed": 70123, - "Activation": { "$date": { "$numberLong": "1685545741655" } }, - "Expiry": { "$date": { "$numberLong": "1685550886528" } }, - "Node": "SolNode412", - "MissionType": "MT_TERRITORY", + "Seed": 74243, + "Activation": { "$date": { "$numberLong": "1689086761492" } }, + "Expiry": { "$date": { "$numberLong": "1689092588164" } }, + "Node": "SolNode401", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64ad6bde8a2dfd7a7a7c4e1c" }, + "Region": 16, + "Seed": 96734, + "Activation": { "$date": { "$numberLong": "1689086942013" } }, + "Expiry": { "$date": { "$numberLong": "1689092198860" } }, + "Node": "SettlementNode2", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "64ad6fd909d8a47e49f35ca7" }, + "Region": 11, + "Seed": 1317, + "Activation": { "$date": { "$numberLong": "1689087961663" } }, + "Expiry": { "$date": { "$numberLong": "1689092929978" } }, + "Node": "SolNode162", + "MissionType": "MT_CAPTURE", "Modifier": "VoidT4" }, { - "_id": { "$oid": "6477630df698f676b0b32283" }, - "Region": 9, - "Seed": 15094, - "Activation": { "$date": { "$numberLong": "1685545741655" } }, - "Expiry": { "$date": { "$numberLong": "1685550459337" } }, - "Node": "SolNode56", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "647764ed12544a97c96618a5" }, - "Region": 15, - "Seed": 66090, - "Activation": { "$date": { "$numberLong": "1685546221415" } }, - "Expiry": { "$date": { "$numberLong": "1685553063549" } }, - "Node": "SolNode405", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "647764ed12544a97c96618a6" }, - "Region": 13, - "Seed": 19703, - "Activation": { "$date": { "$numberLong": "1685546221415" } }, - "Expiry": { "$date": { "$numberLong": "1685550448683" } }, - "Node": "SolNode216", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "64776565dc85a669dae19b38" }, - "Region": 3, - "Seed": 90150, - "Activation": { "$date": { "$numberLong": "1685546341763" } }, - "Expiry": { "$date": { "$numberLong": "1685552506487" } }, - "Node": "SolNode89", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64776565dc85a669dae19b39" }, - "Region": 2, - "Seed": 11253, - "Activation": { "$date": { "$numberLong": "1685546341763" } }, - "Expiry": { "$date": { "$numberLong": "1685550810452" } }, - "Node": "SolNode128", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64776655b191713293c08dfe" }, + "_id": { "$oid": "64ad750111c35eaa5a3823e7" }, "Region": 5, - "Seed": 67983, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685553220288" } }, - "Node": "SolNode97", - "MissionType": "MT_INTEL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64776655b191713293c08dff" }, - "Region": 10, - "Seed": 74682, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685551010303" } }, - "Node": "SolNode135", + "Seed": 30425, + "Activation": { "$date": { "$numberLong": "1689089281936" } }, + "Expiry": { "$date": { "$numberLong": "1689093260478" } }, + "Node": "SolNode10", "MissionType": "MT_SABOTAGE", "Modifier": "VoidT2", "Hard": true }, { - "_id": { "$oid": "64776655b191713293c08e00" }, - "Region": 6, - "Seed": 15538, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685551799194" } }, - "Node": "SolNode18", + "_id": { "$oid": "64ad750111c35eaa5a3823e8" }, + "Region": 10, + "Seed": 12845, + "Activation": { "$date": { "$numberLong": "1689089281936" } }, + "Expiry": { "$date": { "$numberLong": "1689093452186" } }, + "Node": "SolNode147", "MissionType": "MT_TERRITORY", "Modifier": "VoidT2", "Hard": true }, { - "_id": { "$oid": "64776ec5752b9bd0c871fa7c" }, - "Region": 4, - "Seed": 47626, - "Activation": { "$date": { "$numberLong": "1685548741727" } }, - "Expiry": { "$date": { "$numberLong": "1685553411719" } }, - "Node": "SolNode36", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "647770a68bb595254a64c26e" }, - "Region": 7, - "Seed": 86090, - "Activation": { "$date": { "$numberLong": "1685549222143" } }, - "Expiry": { "$date": { "$numberLong": "1685556263692" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "647770a68bb595254a64c26f" }, - "Region": 13, - "Seed": 39703, - "Activation": { "$date": { "$numberLong": "1685549222143" } }, - "Expiry": { "$date": { "$numberLong": "1685553504151" } }, - "Node": "SolNode212", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "6477720ec9dd724c888eff5b" }, + "_id": { "$oid": "64ad7759415742cb718802f1" }, "Region": 19, - "Seed": 2767, - "Activation": { "$date": { "$numberLong": "1685549582078" } }, - "Expiry": { "$date": { "$numberLong": "1685554300277" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", + "Seed": 17280, + "Activation": { "$date": { "$numberLong": "1689089881941" } }, + "Expiry": { "$date": { "$numberLong": "1689095284623" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", "Modifier": "VoidT5" }, { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7c" }, - "Region": 10, - "Seed": 84581, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685554027918" } }, - "Node": "SolNode149", + "_id": { "$oid": "64ad7759415742cb718802f2" }, + "Region": 19, + "Seed": 31988, + "Activation": { "$date": { "$numberLong": "1689089881941" } }, + "Expiry": { "$date": { "$numberLong": "1689093504669" } }, + "Node": "SolNode742", "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2" + "Modifier": "VoidT5" }, { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7d" }, - "Region": 16, - "Seed": 50951, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685553961019" } }, - "Node": "SettlementNode12", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7e" }, - "Region": 5, - "Seed": 37897, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685556218772" } }, - "Node": "SolNode73", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT2" + "_id": { "$oid": "64ad7759415742cb718802f3" }, + "Region": 19, + "Seed": 71464, + "Activation": { "$date": { "$numberLong": "1689089881941" } }, + "Expiry": { "$date": { "$numberLong": "1689095100161" } }, + "Node": "SolNode745", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT5" } ], "GlobalUpgrades": [], "FlashSales": [ - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "StartDate": { "$date": { "$numberLong": "1662422400000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, + "Discount": 35, "RegularOverride": 0, - "PremiumOverride": 1, + "PremiumOverride": 0, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 40, + "RegularOverride": 0, + "PremiumOverride": 0, "BogoBuy": 0, "BogoGet": 0 }, { "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "StartDate": { "$date": { "$numberLong": "1667347200000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": true, - "Popular": false, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 5, - "Discount": 0, + "Discount": 25, "RegularOverride": 0, - "PremiumOverride": 1, + "PremiumOverride": 0, "BogoBuy": 0, "BogoGet": 0 }, @@ -1360,14 +1563,9 @@ "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 80, "Discount": 0, "RegularOverride": 0, "PremiumOverride": 195, @@ -1375,18 +1573,26 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "StartDate": { "$date": { "$numberLong": "1661173200000" } }, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 45, + "RegularOverride": 0, + "PremiumOverride": 0, + "BogoBuy": 0, + "BogoGet": 0 + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 85, "Discount": 0, "RegularOverride": 0, "PremiumOverride": 430, @@ -1394,206 +1600,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 90, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 90, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 95, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 260, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 105, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 20, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 100, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 325, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 110, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 35, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 115, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 80, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 120, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 165, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693494000000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 1, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693440000000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 2, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1683828000000" } }, - "EndDate": { "$date": { "$numberLong": "1687110900000" } }, - "DefaultPremium": 1, - "DefaulRegular": 0, - "LocalizedItemName": "FREE WITH PRIME GAMING" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1683828000000" } }, - "EndDate": { "$date": { "$numberLong": "1687110900000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", "ShowInMarket": true, @@ -1606,53 +1612,276 @@ "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1684432800000" } }, "EndDate": { "$date": { "$numberLong": "1693504800000" } } + }, + { + "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 325, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693440000000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 20, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 165, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 260, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693494000000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 80, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 90, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 35, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeMantisIridosLandingCraftStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1686247200000" } }, + "EndDate": { "$date": { "$numberLong": "1689530100000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeMantisIridosLandingCraftStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1686247200000" } }, + "EndDate": { "$date": { "$numberLong": "1689530100000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 70, + "StartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EndDate": { "$date": { "$numberLong": "1722171600000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Community10YearOrdisGlyph", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "StartDate": { "$date": { "$numberLong": "1688209260000" } }, + "EndDate": { "$date": { "$numberLong": "1690801260000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Community10YearRoyalPratDisplay", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 30, + "StartDate": { "$date": { "$numberLong": "1688209320000" } }, + "EndDate": { "$date": { "$numberLong": "1690801320000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Community10YearDasterDisplay", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 30, + "StartDate": { "$date": { "$numberLong": "1688209320000" } }, + "EndDate": { "$date": { "$numberLong": "1690801320000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1688652120000" } }, + "EndDate": { "$date": { "$numberLong": "1691952900000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1688666400000" } }, + "EndDate": { "$date": { "$numberLong": "1691952900000" } } } ], "InGameMarket": { "LandingPage": { "Categories": [ - { - "CategoryName": "POPULAR", - "Name": "/Lotus/Language/Menu/StorePopular", - "Icon": "popular", - "Items": [ - "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/WolfFrameBundle", - "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/EmberDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/RailjackVoidrigBundle", - "/Lotus/StoreItems/Powersuits/Werewolf/Werewolf", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/FormaPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" - ] - }, { "CategoryName": "DUVIRI_PARADOX", "Name": "/Lotus/Language/Store/Store_DuviriParadox", "Icon": "duviriparadox", "AddToMenu": true, "Items": [ + "/Lotus/Types/StoreItems/Packages/WarframeBundles/PaxDuviricusItemsBundle", + "/Lotus/Types/StoreItems/Packages/HorseCrownBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/GaussDeluxeHorseAccessoriesBundle", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit3ABundle", + "/Lotus/StoreItems/Upgrades/Skins/PaxDuviricus/KullervoTwoHandedSwordSkin", "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/WispDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/VoidAdornmentIVBundle", "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/StoreItems/Upgrades/Skins/Duviri/DuviriSwordTowerShieldSkin", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit1ABundle", - "/Lotus/StoreItems/Weapons/Tenno/Bows/DaxDuviriAsymetricalBow/DaxDuviriAsymmetricalLongBowPlayerWeapon", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAetigo", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundlePsyacus", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAccessories", - "/Lotus/Types/StoreItems/Packages/Tattoo/TattooBundleDuviri", - "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle" + ] + }, + { + "CategoryName": "POPULAR", + "Name": "/Lotus/Language/Menu/StorePopular", + "Icon": "popular", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItemNoLogo", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItem", + "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/ZephyrDlxOperatorBundle", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/StoreItems/Powersuits/PaxDuviricus/PaxDuviricus", + "/Lotus/Types/StoreItems/Packages/NekrosDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/EmberDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/VampireKavatStarterKit", + "/Lotus/Types/StoreItems/Packages/FormaPack", + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" ] }, { @@ -1660,21 +1889,17 @@ "Name": "/Lotus/Language/Menu/Store_Tennogen", "Icon": "tennogen", "Items": [ - "/Lotus/StoreItems/Upgrades/Skins/Runner/SWGaussNitrolystSkin", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRetrorolystSyandana", - "/Lotus/StoreItems/Upgrades/Skins/BrokenFrame/SWXakuDeatheaSkin", - "/Lotus/StoreItems/Upgrades/Skins/Sentient/SWCalibanScionHelmet", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWAlocanaSyandana", - "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" + "/Lotus/StoreItems/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWKrtrimaKatanaSkin", + "/Lotus/StoreItems/Upgrades/Skins/Necro/SWNekrosAusirylystSkin", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorA", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWVikasaAegisArmor/SWVikasaAegisArmorC", + "/Lotus/StoreItems/Upgrades/Skins/Liset/SWHerulystLisetSkin", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorC", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWZhiviraShoulderArmor/SWZhiviraShoulderArmorA", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorL" ] }, - { - "CategoryName": "DUVIRI_CHOICES", - "Name": "/Lotus/Language/Store/Store_DuviriChoices", - "Icon": "duvirichoices", - "AddToMenu": true, - "Items": [] - }, + { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "AddToMenu": true, "Items": [] }, { "CategoryName": "PREMIUM_BUNDLES", "Name": "/Lotus/Language/Store/Store_PremiumBundles", @@ -1688,145 +1913,90 @@ "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB" ] }, - { - "CategoryName": "WISH_LIST", - "Name": "/Lotus/Language/Menu/Store_Wishlist", - "Icon": "wishlist", - "Items": [] - } + { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] } ] } }, "Invasions": [ { - "_id": { "$oid": "6471a5c11c84d8991785ccc1" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode4", - "Count": -35500, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "646e00f1d08856975bb476fe" }, - "AttackerReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] - }, - "AttackerMissionInfo": { "seed": 573551, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 810078, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1685170489276" } } - }, - { - "_id": { "$oid": "64729729ea6b289e0f440b37" }, + "_id": { "$oid": "64aba56adc4108eb211cf4ce" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode177", - "Count": -40065, - "Goal": 40000, + "Node": "SolNode181", + "Count": -36759, + "Goal": 41000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "646fdcb95a219384bdbbd5f1" }, - "AttackerReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 }] - }, - "AttackerMissionInfo": { "seed": 181914, "faction": "FC_GRINEER" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 197505, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1685232025336" } } + "Completed": false, + "ChainID": { "$oid": "64a438a15c82690bba01da1f" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 630071, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithReceiver", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 503172, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1688971153359" } } }, { - "_id": { "$oid": "64764c611959704d82e095f8" }, + "_id": { "$oid": "64a9d42d2c6f2607fde359bf" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SettlementNode3", + "Count": 35249, + "Goal": 48000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64a9d42d2c6f2607fde359bf" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/TwinVipersWraithReceiver", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 1418, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/DeraVandalBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 408470, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1688919293530" } } + }, + { + "_id": { "$oid": "64ab5235aadd8aa4a525c297" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode127", - "Count": -19265, + "Count": -30072, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "647612f5b75e9d02362f0c6c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 995781, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 978707, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1685474401909" } } - }, - { - "_id": { "$oid": "6476ba8aca0663ae5a22b6bb" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode68", - "Count": -33274, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "6476ba8aca0663ae5a22b6bb" }, + "ChainID": { "$oid": "64ab1b21b464ebac66cacb05" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 512950, "faction": "FC_GRINEER" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 160228, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685508708793" } } + "AttackerMissionInfo": { "seed": 776594, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 318162, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1688949301919" } } }, { - "_id": { "$oid": "647730e50ecf58593d735cb0" }, + "_id": { "$oid": "64abda258c51f909e8841ceb" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode107", - "Count": -17526, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, + "Node": "SolNode53", + "Count": -30086, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "64aba7c127ac32a450c4b81b" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 640989, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 53442, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685537906204" } } + "AttackerMissionInfo": { "seed": 214951, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 479771, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1688984101482" } } }, { - "_id": { "$oid": "64775e991d3a1c5c0a181494" }, + "_id": { "$oid": "64ad5a8592d04a20de1198bb" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode66", - "Count": -1218, - "Goal": 45000, + "Node": "SolNode220", + "Count": -136, + "Goal": 37000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, + "ChainID": { "$oid": "64ad5a8592d04a20de1198bb" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 563164, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 203755, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685544601696" } } - }, - { - "_id": { "$oid": "64775e991d3a1c5c0a181495" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode22", - "Count": -1490, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 933714, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 693132, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685544601696" } } + "AttackerMissionInfo": { "seed": 233680, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 674168, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1689089072159" } } } ], "HubEvents": [], @@ -1834,7 +2004,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9507716 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9564278 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1848,207 +2018,49 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } - }, - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1684512000000" } }, - "Expiry": { "$date": { "$numberLong": "1685721600000" } }, - "Node": "SolNode129", - "Faction": "FC_CORPUS", - "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1685710800000" } }, - "Expiry": { "$date": { "$numberLong": "1685883600000" } }, + "Activation": { "$date": { "$numberLong": "1689339600000" } }, + "Expiry": { "$date": { "$numberLong": "1689512400000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "SaturnHUB" + "Node": "MercuryHUB" } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1683223200000" } }, + "Activation": { "$date": { "$numberLong": "1688666400000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaTrinityPrimeDualPack", - "PrimePrice": 10 - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack", - "PrimePrice": 10, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOberonPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTrinityPrimeSinglePack", - "PrimePrice": 6 - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaPrimeSinglePack", - "PrimePrice": 6 - }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Paladin/PaladinPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeOberonCape", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/SurakaPrimeDangle", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeSilvaAegis/PrimeSilvaAegis", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSybaris/PrimeSybarisRifle", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Necro/NekrosPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/UruPrimeScarf", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAcanthusPrimeArmorSet", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTigris/PrimeTigris", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeGalatine/PrimeGalatine", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Trinity/TrinityPrime", "PrimePrice": 3 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVKavasaPrimeKubrowArmor", - "PrimePrice": 2 - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", - "PrimePrice": 1 - }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeDualKamas/PrimeDualKamas", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/AntiMatter/NovaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEdoPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilFive", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSoma/PrimeSomaRifle", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeVasto/PrimeVastoPistol", "PrimePrice": 2 }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OberonPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NekrosPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NovaPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TrinityPrimeBobbleHead", "PrimePrice": 1 }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultBBronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultBBronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheePrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMiragePrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Banshee/BansheePrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfF", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVIctusPrimeSentAccessories", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeHeliosPowerSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/AllNew1hSG/AllNew1hSG", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Harlequin/MiragePrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtavistPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfG", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeKogake/KogakePrimeKnuckles", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeAkbolto/PrimeAkBoltoWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BansheePrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/MiragePrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1685718000000" } }, + "Expiry": { "$date": { "$numberLong": "1691085600000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -2056,33 +2068,21 @@ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeLex/PrimeLex", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Game/ShipScenes/PrimeLisetFiligreeScene", "PrimePrice": 1 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAviaPrimeArmorSet", "PrimePrice": 2 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVayasPrimeAccessories", - "PrimePrice": 2 - }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVayasPrimeAccessories", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/TwitchPrimeMeleeDangle", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeAviaSyandana", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeTwitchScarf", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/TwitchPrimeScarf", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/TwitchPrimeSigil", "PrimePrice": 1 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNecraloidBundle", - "RegularPrice": 10 - }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNecraloidBundle", "RegularPrice": 10 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinTwitchPrime", "RegularPrice": 10 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/InfMembraneCape", "RegularPrice": 10 }, { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PrimeBucks", "RegularPrice": 1 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoidTraceBundle", "RegularPrice": 1 } ], "ScheduleInfo": [ - { - "Expiry": { "$date": { "$numberLong": "1667498400000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1669921200000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack" - }, + { "Expiry": { "$date": { "$numberLong": "1667498400000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" }, + { "Expiry": { "$date": { "$numberLong": "1669921200000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack" }, { "Expiry": { "$date": { "$numberLong": "1672945200000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1668711600000" } }, @@ -2120,94 +2120,98 @@ }, { "Expiry": { "$date": { "$numberLong": "1691085600000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1691085600000" } } - } + "PreviewHiddenUntil": { "$date": { "$numberLong": "1687456800000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack" + }, + { "Expiry": { "$date": { "$numberLong": "1694109600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1694109600000" } } }, + { "Expiry": { "$date": { "$numberLong": "1696528800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1696532400000" } } }, + { "Expiry": { "$date": { "$numberLong": "1698948000000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1698948000000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "64775c416894d083a29b8872" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1685546401825" } }, - "Expiry": { "$date": { "$numberLong": "1685551801825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64775c416894d083a29b8871" }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15f8" }, "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1685546401821" } }, - "Expiry": { "$date": { "$numberLong": "1685551801821" } }, + "Activation": { "$date": { "$numberLong": "1689085201821" } }, + "Expiry": { "$date": { "$numberLong": "1689090601821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64775c416894d083a29b8874" }, - "Node": "CrewBattleNode521", - "Activation": { "$date": { "$numberLong": "1685546401829" } }, - "Expiry": { "$date": { "$numberLong": "1685551801829" } }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fb" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1689085201829" } }, + "Expiry": { "$date": { "$numberLong": "1689090601829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "64775c416894d083a29b8873" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1685546401827" } }, - "Expiry": { "$date": { "$numberLong": "1685551801827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64775c416894d083a29b8876" }, - "Node": "CrewBattleNode543", - "Activation": { "$date": { "$numberLong": "1685546401834" } }, - "Expiry": { "$date": { "$numberLong": "1685551801834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64775c416894d083a29b8875" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1685546401832" } }, - "Expiry": { "$date": { "$numberLong": "1685551801832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3db" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1685550001821" } }, - "Expiry": { "$date": { "$numberLong": "1685555401821" } }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15f9" }, + "Node": "CrewBattleNode512", + "Activation": { "$date": { "$numberLong": "1689085201825" } }, + "Expiry": { "$date": { "$numberLong": "1689090601825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "647765a1dcb87be34e0ce3de" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1685550001829" } }, - "Expiry": { "$date": { "$numberLong": "1685555401829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3dd" }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fa" }, "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1685550001827" } }, - "Expiry": { "$date": { "$numberLong": "1685555401827" } }, + "Activation": { "$date": { "$numberLong": "1689085201827" } }, + "Expiry": { "$date": { "$numberLong": "1689090601827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "647765a1dcb87be34e0ce3dc" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1685550001825" } }, - "Expiry": { "$date": { "$numberLong": "1685555401825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3e0" }, - "Node": "CrewBattleNode542", - "Activation": { "$date": { "$numberLong": "1685550001834" } }, - "Expiry": { "$date": { "$numberLong": "1685555401834" } }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fc" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1689085201832" } }, + "Expiry": { "$date": { "$numberLong": "1689090601832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "647765a1dcb87be34e0ce3df" }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fd" }, + "Node": "CrewBattleNode554", + "Activation": { "$date": { "$numberLong": "1689085201834" } }, + "Expiry": { "$date": { "$numberLong": "1689090601834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b13" }, + "Node": "CrewBattleNode522", + "Activation": { "$date": { "$numberLong": "1689088801821" } }, + "Expiry": { "$date": { "$numberLong": "1689094201821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b14" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1689088801825" } }, + "Expiry": { "$date": { "$numberLong": "1689094201825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b15" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1689088801827" } }, + "Expiry": { "$date": { "$numberLong": "1689094201827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b16" }, + "Node": "CrewBattleNode521", + "Activation": { "$date": { "$numberLong": "1689088801829" } }, + "Expiry": { "$date": { "$numberLong": "1689094201829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b18" }, + "Node": "CrewBattleNode553", + "Activation": { "$date": { "$numberLong": "1689088801834" } }, + "Expiry": { "$date": { "$numberLong": "1689094201834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b17" }, "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1685550001832" } }, - "Expiry": { "$date": { "$numberLong": "1685555401832" } }, + "Activation": { "$date": { "$numberLong": "1689088801832" } }, + "Expiry": { "$date": { "$numberLong": "1689094201832" } }, "ActiveMissionTier": "VoidT4" } ], @@ -2216,23 +2220,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Upgrades/Focus/AttackLensGreater", - "Activation": { "$date": { "$numberLong": "1685480400000" } }, - "Expiry": { "$date": { "$numberLong": "1685574000000" } }, - "Discount": 20, - "OriginalPrice": 40, - "SalePrice": 32, + "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Melee/Gauntlet/Gauntlet", + "Activation": { "$date": { "$numberLong": "1689037200000" } }, + "Expiry": { "$date": { "$numberLong": "1689130800000" } }, + "Discount": 30, + "OriginalPrice": 125, + "SalePrice": 87, "AmountTotal": 125, - "AmountSold": 125 + "AmountSold": 9 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "6470fd0132c7efc24f00caf0" }, + "_id": { "$oid": "64a860b14248d4428ac6e7c8" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2240,10 +2244,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6470fd0132c7efc24f00caf1" }, + "_id": { "$oid": "64a860b14248d4428ac6e7c9" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2251,10 +2255,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6470fd0132c7efc24f00caf2" }, + "_id": { "$oid": "64a860b14248d4428ac6e7cb" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], + "isGenerated": true, + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "64a860b14248d4428ac6e7c8" }, { "$oid": "64a860b14248d4428ac6e7c9" }, { "$oid": "64a860b14248d4428ac6e7ca" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + }, + { + "_id": { "$oid": "64a860b14248d4428ac6e7ca" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2262,21 +2277,32 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6470fd0132c7efc24f00caf3" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], + "_id": { "$oid": "64ad70c987228ffe420d764f" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "6470fd0132c7efc24f00caf0" }, { "$oid": "6470fd0132c7efc24f00caf1" }, { "$oid": "6470fd0132c7efc24f00caf2" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfb8" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "_id": { "$oid": "64ad70c987228ffe420d7650" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ad70c987228ffe420d764d" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2284,10 +2310,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfb9" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "_id": { "$oid": "64ad70c987228ffe420d7651" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ad70c987228ffe420d764e" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2295,65 +2332,32 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfbc" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], + "_id": { "$oid": "64ad70c987228ffe420d7652" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfbb" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfba" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbf" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsMEDIUM", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], + "_id": { "$oid": "64ad70c987228ffe420d7654" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfbd" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbe" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "_id": { "$oid": "64ad70c987228ffe420d7653" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", @@ -2364,52 +2368,22 @@ "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [55.93717913052773, 90.86309625235785, 0], + "ProjectPct": [95.66978602549699, 23.79055975443198, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, - { "Category": "EXC_HARD", "Choices": ["Zylok", "Sibear", "Dread", "Despair", "Hate"] } + { "Category": "EXC_NORMAL", "Choices": ["Garuda", "Baruuk", "Hildryn"] }, + { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { - "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, - "Name": "Miau after Tomorrow", - "Tier": 1, - "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, - "Emblem": true - }, - { - "_id": { "$oid": "56ab8b2407c56fd145c91aa5" }, - "Name": "Slayers of Darkness", - "Tier": 2, - "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, - "Emblem": true - }, - { - "_id": { "$oid": "57ed05cb08c56ffd67386105" }, - "Name": "Nazaryk", - "Tier": 3, - "AllianceId": { "$oid": "5fdcf602fc5cef2d337800e0" }, - "Emblem": true - }, - { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz", "Tier": 4, "Emblem": true }, - { - "_id": { "$oid": "56d8b39408c56fd89a1799ec" }, - "Name": "Phantom Vanguard", - "Tier": 5, - "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, - "Emblem": true - }, - { - "_id": { "$oid": "54e44a5006c56f7eab0d5aa9" }, - "Name": "Violet Church", - "Tier": 3, - "AllianceId": { "$oid": "56c44d0b08c56f5c367b4665" }, - "Emblem": true - } + { "_id": { "$oid": "5d6e8383a38e4ab3d87910b4" }, "Name": "KHAO SAN ROAD", "Tier": 1, "AllianceId": { "$oid": "62ca246ada801e95e10faef5" }, "Emblem": true }, + { "_id": { "$oid": "56ab8b2407c56fd145c91aa5" }, "Name": "Slayers of Darkness", "Tier": 2, "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, "Emblem": true }, + { "_id": { "$oid": "5ad6ae822183db51113cad5a" }, "Name": "Ascension of Immortals", "Tier": 3, "AllianceId": { "$oid": "5f95b2a34c0af225c816a3ed" }, "Emblem": true }, + { "_id": { "$oid": "5b6961f7283a00373e55937f" }, "Name": "FOREVER SUMMER", "Tier": 4, "AllianceId": { "$oid": "62ef727a50f3d0a965003de2" }, "Emblem": true }, + { "_id": { "$oid": "60871578cc2e694df27157a8" }, "Name": "Twelve_Olympians", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "64857275eb6c266f67034392" } }, + { "_id": { "$oid": "53480a9007c56f925e90f861" }, "Name": "The Remnants of the Void", "Tier": 5, "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, "Emblem": true } ], "SeasonInfo": { "Activation": { "$date": { "$numberLong": "1684951200000" } }, @@ -2420,69 +2394,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100020000000000000022" }, + "_id": { "$oid": "001100070000000000000098" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685577600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithElectricity" + "Activation": { "$date": { "$numberLong": "1688860800000" } }, + "Expiry": { "$date": { "$numberLong": "1689120000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCollectHundredResources" }, { - "_id": { "$oid": "001100020000000000000023" }, + "_id": { "$oid": "001100080000000000000106" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1685404800000" } }, - "Expiry": { "$date": { "$numberLong": "1685664000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTransmuteMods" + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689206400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySlideKills" }, { - "_id": { "$oid": "001100020000000000000024" }, + "_id": { "$oid": "001100080000000000000107" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1685491200000" } }, - "Expiry": { "$date": { "$numberLong": "1685750400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySolveCiphers" + "Activation": { "$date": { "$numberLong": "1689033600000" } }, + "Expiry": { "$date": { "$numberLong": "1689292800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyPickUpMedallion" }, { - "_id": { "$oid": "001100020000000000000015" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteRescue" + "_id": { "$oid": "001100080000000000000099" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteNightmareMissions" }, { - "_id": { "$oid": "001100020000000000000016" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteKuva" + "_id": { "$oid": "001100080000000000000100" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillArchgunEnemies" }, { - "_id": { "$oid": "001100020000000000000017" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEximus" + "_id": { "$oid": "001100080000000000000101" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPlainsBounties" }, { - "_id": { "$oid": "001100020000000000000018" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPerfectAnimalCapture" + "_id": { "$oid": "001100080000000000000102" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRailjackHijackDestroyThree" }, { - "_id": { "$oid": "001100020000000000000019" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUnlockRelics" + "_id": { "$oid": "001100080000000000000103" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteMobileDefense" }, { - "_id": { "$oid": "001100020000000000000020" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillEnemies" + "_id": { "$oid": "001100080000000000000104" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFallenAngel" }, { - "_id": { "$oid": "001100020000000000000021" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFastCapture" + "_id": { "$oid": "001100080000000000000105" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteNightmareMissions" } ] }, - "Tmp": "{\"sfn\":555}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"sfn\":554}" } -- 2.47.2 From 77c7357881e005a6f985ad5fc04069d0b016d659 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:18:15 -0300 Subject: [PATCH 022/522] Bump word-wrap from 1.2.3 to 1.2.4 (#23) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8ee83e57..b78a003d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3182,9 +3182,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" -- 2.47.2 From 4f3bfa3a2b50e7fd0a9f47778381f932cf164dc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:19:27 -0300 Subject: [PATCH 023/522] Bump mongoose from 7.1.1 to 7.4.1 (#24) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ângelo Tadeucci --- package-lock.json | 36 ++++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index b78a003d..b9b654e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1", + "mongoose": "^7.4.1", "warframe-items": "1.1260.50" }, "devDependencies": { @@ -888,9 +888,9 @@ } }, "node_modules/bson": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", - "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", + "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", "engines": { "node": ">=14.20.1" } @@ -2081,11 +2081,11 @@ } }, "node_modules/mongodb": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", - "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", + "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", "dependencies": { - "bson": "^5.2.0", + "bson": "^5.4.0", "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, @@ -2097,6 +2097,8 @@ }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.201.0", + "@mongodb-js/zstd": "^1.1.0", + "kerberos": "^2.0.1", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -2104,6 +2106,12 @@ "@aws-sdk/credential-providers": { "optional": true }, + "@mongodb-js/zstd": { + "optional": true + }, + "kerberos": { + "optional": true + }, "mongodb-client-encryption": { "optional": true }, @@ -2122,20 +2130,20 @@ } }, "node_modules/mongoose": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", - "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.1.tgz", + "integrity": "sha512-o3E5KHHiHdaiwCJG3+9r70sncRKki71Ktf/TfXdW6myu+53rtZ56uLl5ylkQiCf60V3COJuOeekcxXVsjQ7cBA==", "dependencies": { - "bson": "^5.2.0", + "bson": "^5.4.0", "kareem": "2.5.1", - "mongodb": "5.3.0", + "mongodb": "5.7.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=14.20.1" }, "funding": { "type": "opencollective", diff --git a/package.json b/package.json index c4d88a17..a7f471f7 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1", + "mongoose": "^7.4.1", "warframe-items": "1.1260.50" }, "devDependencies": { -- 2.47.2 From 79bb7bae213894335921e0d8e4c0ca4d3818585a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:19:35 -0300 Subject: [PATCH 024/522] Bump prettier from 2.8.8 to 3.0.0 (#26) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ângelo Tadeucci --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index b9b654e8..750673cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "eslint": "^8.41.0", "eslint-plugin-prettier": "^4.2.1", "morgan": "^1.10.0", - "prettier": "^2.8.8", + "prettier": "^3.0.0", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", "typescript": "^5.1.3" @@ -2409,15 +2409,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" diff --git a/package.json b/package.json index a7f471f7..07d6e2bb 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "eslint": "^8.41.0", "eslint-plugin-prettier": "^4.2.1", "morgan": "^1.10.0", - "prettier": "^2.8.8", + "prettier": "^3.0.0", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", "typescript": "^5.1.3" -- 2.47.2 From b32deebb1f3ffda4dcb048a34d518009b218ae9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:19:51 -0300 Subject: [PATCH 025/522] Bump @typescript-eslint/eslint-plugin from 5.59.8 to 6.1.0 (#27) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ângelo Tadeucci --- package-lock.json | 320 ++++++++++++++++++++++++++++++++++++---------- package.json | 2 +- 2 files changed, 254 insertions(+), 68 deletions(-) diff --git a/package-lock.json b/package-lock.json index 750673cb..67f1452b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^5.59.8", "eslint": "^8.41.0", "eslint-plugin-prettier": "^4.2.1", @@ -404,32 +404,34 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.8.tgz", - "integrity": "sha512-JDMOmhXteJ4WVKOiHXGCoB96ADWg9q7efPWHRViT/f09bA8XOMLAVHHju3l0MkZnG1izaWXYmgvQcUjTRcpShQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", + "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/type-utils": "5.59.8", - "@typescript-eslint/utils": "5.59.8", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/type-utils": "6.1.0", + "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -437,6 +439,53 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", + "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", + "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", + "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.1.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -528,25 +577,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.8.tgz", - "integrity": "sha512-+5M518uEIHFBy3FnyqZUF3BMP+AXnYn4oyH8RF012+e7/msMY98FhGL5SrN29NQ9xDgvqCgYnsOiKp1VjZ/fpA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", + "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.8", - "@typescript-eslint/utils": "5.59.8", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/utils": "6.1.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -554,6 +603,63 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", + "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", + "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", + "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.1.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -641,31 +747,127 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.8.tgz", - "integrity": "sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", + "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/typescript-estree": "5.59.8", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", + "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", + "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", + "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", + "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.1.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/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/@typescript-eslint/utils/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/@typescript-eslint/visitor-keys": { "version": "5.59.8", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", @@ -1237,19 +1439,6 @@ } } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", @@ -1369,15 +1558,6 @@ "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/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1685,12 +1865,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -2647,9 +2821,9 @@ } }, "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "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" @@ -2916,6 +3090,18 @@ "tree-kill": "cli.js" } }, + "node_modules/ts-api-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", diff --git a/package.json b/package.json index 07d6e2bb..8e95104e 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^5.59.8", "eslint": "^8.41.0", "eslint-plugin-prettier": "^4.2.1", -- 2.47.2 From 8bcd90c562bef6104966b4c478193859dfa26492 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:21:23 -0300 Subject: [PATCH 026/522] Bump warframe-items from 1.1260.50 to 1.1260.79 (#25) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 67f1452b..94e21d40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.50" + "warframe-items": "1.1260.79" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -3336,9 +3336,9 @@ } }, "node_modules/warframe-items": { - "version": "1.1260.50", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.50.tgz", - "integrity": "sha512-03oNB6Yg61yUd7glewUUg0avnaGaAqc9oVPJk+1THFB0o/d4ppQSgL38yTUxMwmw0avCrqd+8z5TMrfXtvPDXQ==" + "version": "1.1260.79", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.79.tgz", + "integrity": "sha512-Xp/nt++v5V3ghEZNhE56Mge2jeBjjr+ua6PC/7ZHYTMsO8x1xheOMuVxl7v7IjscO1rHFdYEQnSU9Gw1uipYsQ==" }, "node_modules/webidl-conversions": { "version": "7.0.0", diff --git a/package.json b/package.json index 8e95104e..af8b0b44 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.50" + "warframe-items": "1.1260.79" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", -- 2.47.2 From a45642a6ca31e610bf3aaa4423c77344d8383737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Mon, 24 Jul 2023 18:25:28 -0300 Subject: [PATCH 027/522] build: bump package versions --- package-lock.json | 908 +++++++++++++++++++++++++++++----------------- package.json | 10 +- 2 files changed, 585 insertions(+), 333 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94e21d40..ce96b3cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,21 +18,30 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "@typescript-eslint/parser": "^5.59.8", - "eslint": "^8.41.0", - "eslint-plugin-prettier": "^4.2.1", + "@typescript-eslint/eslint-plugin": "^6.2.0", + "@typescript-eslint/parser": "^6.2.0", + "eslint": "^8.45.0", + "eslint-plugin-prettier": "^5.0.0", "morgan": "^1.10.0", "prettier": "^3.0.0", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typescript": "^5.1.6" }, "engines": { "node": ">=18.15.0", "npm": ">=9.5.0" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -70,14 +79,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -116,18 +125,18 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", - "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -240,6 +249,26 @@ "node": ">= 8" } }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -404,16 +433,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", - "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.0.tgz", + "integrity": "sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/type-utils": "6.1.0", - "@typescript-eslint/utils": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/type-utils": "6.2.0", + "@typescript-eslint/utils": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -439,53 +468,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", - "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", - "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", - "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -510,25 +492,26 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.8.tgz", - "integrity": "sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.0.tgz", + "integrity": "sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/typescript-estree": "5.59.8", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -560,16 +543,16 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz", - "integrity": "sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.0.tgz", + "integrity": "sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/visitor-keys": "5.59.8" + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -577,13 +560,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", - "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.0.tgz", + "integrity": "sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/utils": "6.2.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -603,63 +586,6 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", - "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", - "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", - "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -684,12 +610,12 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.8.tgz", - "integrity": "sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.0.tgz", + "integrity": "sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -697,21 +623,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz", - "integrity": "sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.0.tgz", + "integrity": "sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/visitor-keys": "5.59.8", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -747,17 +673,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", - "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.0.tgz", + "integrity": "sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/typescript-estree": "6.2.0", "semver": "^7.5.4" }, "engines": { @@ -771,70 +697,13 @@ "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", - "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz", + "integrity": "sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", - "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", - "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", - "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/types": "6.2.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -845,46 +714,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/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/@typescript-eslint/utils/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/@typescript-eslint/visitor-keys": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", - "integrity": "sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.8", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -898,9 +727,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1030,6 +859,15 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1067,6 +905,18 @@ "node": ">= 0.6" } }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1103,6 +953,21 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", @@ -1265,6 +1130,52 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1363,16 +1274,16 @@ } }, "node_modules/eslint": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", - "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.41.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -1383,7 +1294,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1393,7 +1304,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -1403,9 +1313,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -1419,21 +1328,29 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } @@ -1500,12 +1417,12 @@ "dev": true }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -1575,6 +1492,29 @@ "node": ">= 0.6" } }, + "node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/express": { "version": "5.0.0-beta.1", "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", @@ -1646,9 +1586,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1798,6 +1738,18 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "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", @@ -1915,6 +1867,15 @@ "node": ">= 0.6" } }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2012,6 +1973,21 @@ "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==", + "dev": true, + "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", @@ -2033,6 +2009,24 @@ "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==", + "dev": true, + "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", @@ -2051,6 +2045,45 @@ "node": ">=8" } }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2172,6 +2205,12 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2221,6 +2260,18 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2419,6 +2470,33 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -2448,18 +2526,51 @@ "wrappy": "1" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -2561,6 +2672,12 @@ "node": ">=8" } }, + "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", @@ -2761,6 +2878,110 @@ "node": ">= 0.10" } }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -2920,6 +3141,12 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3008,6 +3235,18 @@ "node": ">=4" } }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3044,12 +3283,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3227,26 +3494,11 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", "dev": true }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3284,9 +3536,9 @@ } }, "node_modules/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3304,6 +3556,15 @@ "node": ">= 0.8" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3375,15 +3636,6 @@ "node": ">= 8" } }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index af8b0b44..ba9a9b62 100644 --- a/package.json +++ b/package.json @@ -21,15 +21,15 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "@typescript-eslint/parser": "^5.59.8", - "eslint": "^8.41.0", - "eslint-plugin-prettier": "^4.2.1", + "@typescript-eslint/eslint-plugin": "^6.2.0", + "@typescript-eslint/parser": "^6.2.0", + "eslint": "^8.45.0", + "eslint-plugin-prettier": "^5.0.0", "morgan": "^1.10.0", "prettier": "^3.0.0", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typescript": "^5.1.6" }, "engines": { "node": ">=18.15.0", -- 2.47.2 From d53512be034307d32bdf098a6587ce81eb3114c8 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 27 Jul 2023 22:15:15 +0200 Subject: [PATCH 028/522] fix transform method calls (#28) --- src/models/inventoryModel.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index 37290960..552cc1f3 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -67,7 +67,7 @@ const WeaponSchema = new Schema({ }); WeaponSchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; @@ -123,7 +123,7 @@ const suitSchema = new Schema({ }); suitSchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; @@ -143,7 +143,7 @@ const FlavourItemSchema = new Schema({ }); FlavourItemSchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { delete returnedObject._id; delete returnedObject.__v; } -- 2.47.2 From bb1b9b672099fcc38b70470edfdcbebda9d717d7 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 5 Aug 2023 22:48:56 +0200 Subject: [PATCH 029/522] update 33.6.3 (#33) --- config.json | 8 +- src/routes/cache.ts | 2 +- static/fixed_responses/worldState.json | 2698 ++++++++++-------------- 3 files changed, 1161 insertions(+), 1547 deletions(-) diff --git a/config.json b/config.json index 0c03092a..6ed21654 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.07.06.16.50/isrcmLv6J3FZS839QAenoQ", - "matchmakingBuildId": "7784392807453928214", - "version": "33.5.6", - "worldSeed": "HOI4Qm0LmuvK+UonXmubrYk/CGif1pdPWzrv0u4ZHmg62Vaulo04cEzutzZ06vGXvuje01HP7/2YoRgjwUj3MwLpomK+TbN3O8dRxHqvFzh9w+jxKKdZEpE4K1mrIH/7hHteU6/GOM0uJ2yoptjRucSvq2wc4Ntwnxqb8l8CfxFP5Dc1XaeHz39gYd1f92Sde3wqfSpO7mwNXrJxn/qDZ5Y0iTOpiLjlACiU6Brmth9EExyuaxjSNXAyunhDQLoU/9YXrKUhDZ/AbE/jAVQ8+fW8ROIMdrGhSMXgpmhtUjGj5q9IIcTd8GRE9JTzzhhp/htmP35Sd0SVV824GN0jVw==", + "buildLabel": "2023.08.02.16.42/WzqaOAjnMjHIa7dCmIMi3g", + "matchmakingBuildId": "7393589425820942782", + "version": "33.6.3", + "worldSeed": "HILkB4urWwjkub/+6JP0cbi8/qYU9GCC2tdstDLy8ZM6sw4Za/jk62eMcIRDWcxuPHm12I7DVftNk0iD79Kmja7lPBUJwNa/O7oQCsbEfWlTns1c4ZMOrBk8osjO2M7rTrau1VYC3A9ZBNOw+/4VjfY5aUCsybW+Jj6JWOTZdLtOOQWLjuNfuulEjxudrhf2qjh4/CMSRLE7oy/1rgSP3g2l/Gfa4ATcCeKh1RM8KEDiV9icIQ7eB5Jwt+xvay84jth5eNTKsfAV93oV2Yv8XgkCh6gVrnAXieTCbY4whJBBXFiElOs1p17HS83IJWnWa2q3FRjEbm2+kzSN2vDibg==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/src/routes/cache.ts b/src/routes/cache.ts index 803331c3..dba00602 100644 --- a/src/routes/cache.ts +++ b/src/routes/cache.ts @@ -11,7 +11,7 @@ cacheRouter.get("/B.Cache.Windows_en.bin*", (_req, res) => { res.sendFile("static/data/B.Cache.Windows_en_33.0.10.bin", { root: "./" }); }); -cacheRouter.get(/^\/origin\/([a-zA-Z0-9]+)\/H\.Cache\.bin.*$/, (_req, res) => { +cacheRouter.get(/^\/origin\/[a-zA-Z0-9]+\/[0-9]+\/H\.Cache\.bin.*$/, (_req, res) => { res.sendFile(`static/data/H.Cache_${config.version}.bin`, { root: "./" }); }); diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 96fc656b..9b4a6c0f 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "HOI4Qm0LmuvK+UonXmubrYk/CGif1pdPWzrv0u4ZHmg62Vaulo04cEzutzZ06vGXvuje01HP7/2YoRgjwUj3MwLpomK+TbN3O8dRxHqvFzh9w+jxKKdZEpE4K1mrIH/7hHteU6/GOM0uJ2yoptjRucSvq2wc4Ntwnxqb8l8CfxFP5Dc1XaeHz39gYd1f92Sde3wqfSpO7mwNXrJxn/qDZ5Y0iTOpiLjlACiU6Brmth9EExyuaxjSNXAyunhDQLoU/9YXrKUhDZ/AbE/jAVQ8+fW8ROIMdrGhSMXgpmhtUjGj5q9IIcTd8GRE9JTzzhhp/htmP35Sd0SVV824GN0jVw==", + "WorldSeed": "HILkB4urWwjkub/+6JP0cbi8/qYU9GCC2tdstDLy8ZM6sw4Za/jk62eMcIRDWcxuPHm12I7DVftNk0iD79Kmja7lPBUJwNa/O7oQCsbEfWlTns1c4ZMOrBk8osjO2M7rTrau1VYC3A9ZBNOw+/4VjfY5aUCsybW+Jj6JWOTZdLtOOQWLjuNfuulEjxudrhf2qjh4/CMSRLE7oy/1rgSP3g2l/Gfa4ATcCeKh1RM8KEDiV9icIQ7eB5Jwt+xvay84jth5eNTKsfAV93oV2Yv8XgkCh6gVrnAXieTCbY4whJBBXFiElOs1p17HS83IJWnWa2q3FRjEbm2+kzSN2vDibg==", "Version": 10, "MobileVersion": "4.15.16.0", - "BuildLabel": "2023.07.06.16.50/isrcmLv6J3FZS839QAenoQ", - "Time": 1689090336, + "BuildLabel": "2023.08.02.16.42/WzqaOAjnMjHIa7dCmIMi3g", + "Time": 1691188339, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -60,33 +60,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6319fa5321a116ecd1017614" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 32: Veilbreaker - szczegóły po polsku" }], - "Prop": "https://forums.warframe.com/topic/1321154-aktualizacja-32-veilbreaker/", - "Date": { "$date": { "$numberLong": "1662646740000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/76a29b4bf3e094861c3d36ef31b34b3e.png", - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "633b073816cec9695a056a84" }, - "Messages": [{ "LanguageCode": "pl", "Message": "PRZEGLĄD DEVSTREAM 164" }], - "Prop": "https://forums.warframe.com/topic/1326595-przegl%C4%85d-devstream-164/", - "Date": { "$date": { "$numberLong": "1664812800000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "63456893365cb9c9a309e104" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Wprowadzenie do Polowania na Archona" }], - "Prop": "https://forums.warframe.com/topic/1327682-wprowadzenie-do-polowania-na-archona/", - "Date": { "$date": { "$numberLong": "1665493080000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8c34580f18d0a489c282192bfc2a810b_1600x900.png", - "Priority": true, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "634d7f2f5c1c0e405d05254f" }, "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Intro aux Chasses aux Archontes" }], @@ -97,14 +70,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "63878183da0783f1c00ffc85" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 32.2: Żer na Lua - Notki po polsku!" }], - "Prop": "https://forums.warframe.com/topic/1332240-aktualizacja-322-%C5%BCer-na-lua/", - "Date": { "$date": { "$numberLong": "1669824840000" } }, - "Priority": true, - "MobileOnly": false - }, { "_id": { "$oid": "63a23acc1336bb81640a63dd" }, "Messages": [], "Prop": "", "Date": { "$date": { "$numberLong": "1671576240000" } }, "Priority": false, "MobileOnly": false }, { "_id": { "$oid": "63c84f910ee5a50a18071a24" }, @@ -134,25 +99,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6444153668778753e30ed2d4" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Duviri et au-delà, dernières infos" }], - "Prop": "https://forums.warframe.com/topic/1345726-duviri-et-au-del%C3%A0-derni%C3%A8res-infos/", - "Date": { "$date": { "$numberLong": "1682183340000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_04/FuVYV0aWcAAc60t.jpg.0e90f5d9af010ecaa5b9467aaf7333c3.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64493fde2b02c323ce07ec73" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 33: Paradoks Duviri" }], - "Prop": "https://forums.warframe.com/topic/1345996-aktualizacja-33-paradoks-duviri/", - "Date": { "$date": { "$numberLong": "1682521920000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0c1fb4674583e7e29bf36784b28f3476.png", - "Priority": true, - "MobileOnly": false - }, { "_id": { "$oid": "64494dc72c44d78bab079685" }, "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33: 두비리의 역설" }], @@ -162,15 +108,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "64495365aca4975f2408f5c3" }, - "Messages": [{ "LanguageCode": "es", "Message": "Actualización 33: La Paradoja de Duviri" }], - "Prop": "https://forums.warframe.com/topic/1346059-actualizaci%C3%B3n-33-la-paradoja-de-duviri/", - "Date": { "$date": { "$numberLong": "1682527020000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "6466726e06ca85f0e202e343" }, "Messages": [ @@ -212,29 +149,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "6467baa3db8bd174db0b163b" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Pre-order 10 Year Anniversary Merch!" }, - { "LanguageCode": "fr", "Message": "Précommandez la Collection de produits dérivés du 10e Anniversaire !" }, - { "LanguageCode": "it", "Message": "Preordina il Merch per il 10° Anniversario!" }, - { "LanguageCode": "de", "Message": "Bestellt die Merch-Kollektion zum 10. Jubiläum vor!" }, - { "LanguageCode": "es", "Message": "¡Reserva los productos del 10° aniversario!" }, - { "LanguageCode": "pt", "Message": "Faça a pré-encomenda de Produtos do Aniversário de 10 anos!" }, - { "LanguageCode": "pl", "Message": "Zamów w przedsprzedaży gadżety na 10-lecie!" }, - { "LanguageCode": "tr", "Message": "10. Yıl Dönümü Ürünleri için ön siparişini ver!" }, - { "LanguageCode": "ja", "Message": "Warframe 10周年記念グッズを予約購入!" }, - { "LanguageCode": "zh", "Message": "预购十周年纪念周边商品!" }, - { "LanguageCode": "ko", "Message": "10주년 기념 굿즈를 예약 주문하세요!" }, - { "LanguageCode": "tc", "Message": "預購 10 週年紀念周邊商品!" } - ], - "Prop": "https://store.warframe.com/products/10-year-anniversary-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Merch-10year-Collection", - "Date": { "$date": { "$numberLong": "1684519320000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684519200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/81f0ccac0ee2cdfb628a64f9f72d2166_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "646e6a4cf16914573401c77b" }, "Messages": [{ "LanguageCode": "tr", "Message": "Nora’nın Derlemesi - 3. Seri Tamamlandı + 4. Seri Sizlerle!" }], @@ -244,334 +158,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "648b4a319960e4f3f507aafb" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Submit your cover of 'We All Lift Together'!" }, - { "LanguageCode": "fr", "Message": "Soumettez votre reprise de \"We All Lift Together\" !" }, - { "LanguageCode": "it", "Message": "Invia la tua cover di 'We All Lift Together'!" }, - { "LanguageCode": "de", "Message": "Reicht eure Cover-Version von 'We All Lift Together' ein!" }, - { "LanguageCode": "es", "Message": "¡Envía tu cover de \"We All Lift Together\"!" }, - { "LanguageCode": "pt", "Message": "Envie a sua versão cover de ''We All Lift Together''!" }, - { "LanguageCode": "ru", "Message": "Отправьте свой кавер на песню «We All Lift Together»!" }, - { "LanguageCode": "pl", "Message": "Prześlij swój cover utworu \"We All Lift Together\"!" }, - { "LanguageCode": "tr", "Message": "We All Lift Together' şarkısı aranjmanını gönder!" }, - { "LanguageCode": "ja", "Message": "「We All Lift Together」のカバー曲を投稿しよう!" }, - { "LanguageCode": "zh", "Message": "提交你对《我们共度时艰》的二次创作!" }, - { "LanguageCode": "ko", "Message": "여러분만의 버전으로 부른 'We All Lift Together' 커버곡을 응모해주세요!" }, - { "LanguageCode": "tc", "Message": "提交你的「我們共舉時艱」二次創作!" } - ], - "Prop": "https://forms.gle/cCdQFq1dkutnQmXu5", - "Date": { "$date": { "$numberLong": "1686849540000" } }, - "EventStartDate": { "$date": { "$numberLong": "1686801600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1689393600000" } }, - "Priority": false, - "MobileOnly": false, - "GameOnly": true - }, - { - "_id": { "$oid": "648c4202bc8c61a6f2063075" }, - "Messages": [{ "LanguageCode": "uk", "Message": "Надішліть свій переспів «We All Life Together»" }], - "Prop": "https://forms.gle/cCdQFq1dkutnQmXu5", - "Date": { "$date": { "$numberLong": "1686913380000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.527ab75a6e11c92d58cd8e26c0fbea5c.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64931f8ca8ed97840d05728a" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes : Les 7 Crimes de Kullervo" }], - "Prop": "https://forums.warframe.com/topic/1357229-mise-%C3%A0-jour-335%C2%A0-les-sept-crimes-de-kullervo/", - "Date": { "$date": { "$numberLong": "1687363260000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/77b1a0663839e804bedd36ba71e0147a.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64932af048a7518e5801b9a3" }, - "Messages": [{ "LanguageCode": "en", "Message": "PSA: Known Issues - The Seven Crimes of Kullervo" }], - "Prop": "https://forums.warframe.com/topic/1357249-psa-the-seven-crimes-of-kullervo-known-issues-thread/?utm_medium=in-game&utm_source=in-game", - "Date": { "$date": { "$numberLong": "1687366320000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "649332b411f8afb670001c2d" }, - "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33.5: 쿨레르보의 일곱 가지 죄" }], - "Prop": "", - "Links": [ - { - "LanguageCode": "ko", - "Link": "https://forums.warframe.com/topic/1357281-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-335-%EC%BF%A8%EB%A0%88%EB%A5%B4%EB%B3%B4%EC%9D%98-%EC%9D%BC%EA%B3%B1-%EA%B0%80%EC%A7%80-%EC%A3%84/" - } - ], - "Date": { "$date": { "$numberLong": "1687368300000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6493614fa93624418f0e5380" }, - "Messages": [{ "LanguageCode": "es", "Message": "Actualización 33.5: Los Siete Crímenes de Kullervo" }], - "Prop": "https://forums.warframe.com/topic/1357383-actualizaci%C3%B3n-335-los-siete-cr%C3%ADmenes-de-kullervo/", - "Date": { "$date": { "$numberLong": "1687380240000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64936b6d66571ada400474c0" }, - "Messages": [{ "LanguageCode": "uk", "Message": "Оновлення 33.5: Сім злочинів Куллерво" }], - "Prop": "https://forums.warframe.com/topic/1357411-%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-335-%D1%81%D1%96%D0%BC-%D0%B7%D0%BB%D0%BE%D1%87%D0%B8%D0%BD%D1%96%D0%B2-%D0%BA%D1%83%D0%BB%D0%BB%D0%B5%D1%80%D0%B2%D0%BE/", - "Date": { "$date": { "$numberLong": "1687382820000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/77b1a0663839e804bedd36ba71e0147a.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "649c87e59da048ca2202161a" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Drops Twitch : campagne des 10 ans" }], - "Prop": "https://forums.warframe.com/topic/1358811-drops-twitch-campagne-du-10e-anniversaire-%C3%A0-partir-du-1er-juillet-%C3%A0-9h-he/", - "Date": { "$date": { "$numberLong": "1687979940000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "649c8f594706538b1002f50b" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Twitch Dropları: 10. Yıl Dönümü Kampanyası, 1 Temmuz TSİ 16:00'da başlıyor!" }], - "Prop": "https://forums.warframe.com/topic/1358816-twitch-droplar%C4%B1-10-y%C4%B1l-d%C3%B6n%C3%BCm%C3%BC-kampanyas%C4%B1-1-temmuz-tsi%CC%87-1600da-ba%C5%9Fl%C4%B1yor/", - "Date": { "$date": { "$numberLong": "1687981740000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "649c95a6afb787b1360ce40e" }, - "Messages": [{ "LanguageCode": "ja", "Message": "10周年記念Twitchキャンペーン! " }], - "Prop": "https://bit.ly/3CREpmc", - "Date": { "$date": { "$numberLong": "1687983420000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.b3a0a9eb925dba65d3fa345689293aff.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "649db9a52021d217f20e64dc" }, - "Messages": [ - { "LanguageCode": "en", "Message": "The Summer Mega Sale is now live!" }, - { "LanguageCode": "fr", "Message": "Les méga soldes d'été sont maintenant disponibles !" }, - { "LanguageCode": "it", "Message": "Le Mega-Offerte Estive sono ora disponibili!" }, - { "LanguageCode": "de", "Message": "Die Warframe Sommer Mega-Rabatte sind jetzt live!" }, - { "LanguageCode": "es", "Message": "¡La megaoferta de verano ya está disponible!" }, - { "LanguageCode": "pt", "Message": "A Mega Promoção de Verão já está disponível!" }, - { "LanguageCode": "ru", "Message": "Летняя мега-распродажа началась!" }, - { "LanguageCode": "pl", "Message": "Letnia Wyprzedaż już dostępna!" }, - { "LanguageCode": "uk", "Message": "Літній розпродаж у Warframe уже розпочався!" }, - { "LanguageCode": "tr", "Message": "Mega Yaz İndirimi şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "夏のメガセールが開催中!" }, - { "LanguageCode": "zh", "Message": "夏季大促销已上线!" }, - { "LanguageCode": "ko", "Message": "여름 폭탄 세일을 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "夏季超級特賣現已登場!" } - ], - "Prop": "https://www.warframe.com/news/warframe-summer-mega-sale?utm_medium=in-game&utm_source=in-game", - "Date": { "$date": { "$numberLong": "1688058000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e350d7dd6952975b050b24c21fd397eb_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "649dbd9d3448be0aa107c931" }, - "Messages": [{ "LanguageCode": "es", "Message": "Los Siete Crímenes de Kullervo: Revisión 33.5.3 + Revisión 33.5.4" }], - "Prop": "https://forums.warframe.com/topic/1358928-los-siete-cr%C3%ADmenes-de-kullervo-revisi%C3%B3n-3353-revisi%C3%B3n-3354/", - "Date": { "$date": { "$numberLong": "1688059260000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "649dd1e36230bdfdfd04fc12" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Recall: Ten-Zero begins July 19" }, - { "LanguageCode": "fr", "Message": "Le Rappel : Ten-Zero commence le 19 juillet" }, - { "LanguageCode": "it", "Message": "La Rievocazione: Ten-Zero inizia il 19 Luglio" }, - { "LanguageCode": "de", "Message": "\"Rückruf: Ten-Zero\" beginnt am 19. Juli" }, - { "LanguageCode": "es", "Message": "El Recuerdo: Diez-Cero comienza el 19 de julio" }, - { "LanguageCode": "pt", "Message": "A Reiteração: 10-0 começa no dia 19 de julho" }, - { "LanguageCode": "ru", "Message": "«Воспоминания: Десять-ноль» начинаются 19 июля" }, - { "LanguageCode": "pl", "Message": "Powrót: Ten-Zero wraca 19 lipca" }, - { "LanguageCode": "uk", "Message": "«Спогад: 10-0» — із 19 липня" }, - { "LanguageCode": "tr", "Message": "Geri Dönüş: Ten-Zero, 19 Temmuz'da başlıyor" }, - { "LanguageCode": "ja", "Message": "リコール:Ten-Zeroが7月20日から開幕" }, - { "LanguageCode": "zh", "Message": "「召回:10-0」将于美东夏令时间 7 月 19 日推出" }, - { "LanguageCode": "ko", "Message": "회상: 10-0가 북미 시각 7월 19일에 시작됩니다" }, - { "LanguageCode": "tc", "Message": "「召回:10-0」從 7 月 19 日開始" } - ], - "Prop": "", - "Links": [ - { "LanguageCode": "en", "Link": "https://www.warframe.com/news/recall-ten-zero" }, - { "LanguageCode": "fr", "Link": "https://www.warframe.com/fr/news/recall-ten-zero" }, - { "LanguageCode": "it", "Link": "https://www.warframe.com/it/news/recall-ten-zero" }, - { "LanguageCode": "de", "Link": "https://www.warframe.com/de/news/recall-ten-zero" }, - { "LanguageCode": "es", "Link": "https://www.warframe.com/es/news/recall-ten-zero" }, - { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/news/recall-ten-zero" }, - { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/news/recall-ten-zero" }, - { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/news/recall-ten-zero" }, - { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/news/recall-ten-zero" }, - { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/news/recall-ten-zero" }, - { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/news/recall-ten-zero" }, - { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/news/recall-ten-zero" }, - { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/news/recall-ten-zero" }, - { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/news/recall-ten-zero" } - ], - "Date": { "$date": { "$numberLong": "1688061120000" } }, - "EventStartDate": { "$date": { "$numberLong": "1688011200000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/promo/anniversary/tenyears/masthead-keyart.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "649ddf316230bdfdfd04fe07" }, - "Messages": [{ "LanguageCode": "en", "Message": "TennoCon Livestream Schedule" }], - "Prop": "https://www.warframe.com/news/tennocon-2023-schedule-revealed", - "Date": { "$date": { "$numberLong": "1688067780000" } }, - "EventStartDate": { "$date": { "$numberLong": "1688011200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/bfb40fef22a8110c690e49459bb3ba41_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "649ef1dc87ca60af0e0071a9" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #172" }], - "Prop": "https://forums.warframe.com/topic/1358985-r%C3%A9sum%C3%A9-devstream-172-version-fr/", - "Date": { "$date": { "$numberLong": "1688138100000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e32ae5312b58b8d47c91aa20528f62df_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "649f0b25bcf880cade0fdb85" }, - "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: 10 Year Anniversary Campaign!" }], - "Prop": "https://forums.warframe.com/topic/1358802-twitch-drops-10-year-anniversary-campaign-starting-july-1st-9am-et/?utm_medium=in-game&utm_source=in-game", - "Date": { "$date": { "$numberLong": "1688144520000" } }, - "EventStartDate": { "$date": { "$numberLong": "1688216400000" } }, - "EventEndDate": { "$date": { "$numberLong": "1690030800000" } }, - "EventLiveUrl": "https://forums.warframe.com/topic/1358802-twitch-drops-10-year-anniversary-campaign-starting-july-1st-9am-et/?utm_medium=in-game&utm_source=in-game", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64a3243ea597a863880a0362" }, - "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: ¡Campaña del 10º aniversario de Warframe!" }], - "Prop": "https://forums.warframe.com/topic/1359351-twitch-drops-%C2%A1campa%C3%B1a-de-aniversario-de-10-a%C3%B1os-a-partir-del-1-de-julio-a-las-9-a-m-et/", - "Date": { "$date": { "$numberLong": "1688413140000" } }, - "EventStartDate": { "$date": { "$numberLong": "1688216400000" } }, - "EventEndDate": { "$date": { "$numberLong": "1690030800000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64a3338a35b3be7f8c093585" }, - "Messages": [{ "LanguageCode": "en", "Message": "July Community Stream Schedule " }], - "Prop": "https://forums.warframe.com/topic/1359355-community-stream-schedule-july-3-20th/?utm_medium=in-game&utm_source=in-game", - "Date": { "$date": { "$numberLong": "1688417100000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64a33c11f6aa71b88501f6dc" }, - "Messages": [{ "LanguageCode": "uk", "Message": "Предмети з Twitch Drop: кампанія до 10-річчя." }], - "Prop": "https://forums.warframe.com/topic/1359358-%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%B8-%D0%B7-twitch-drop-%D0%BA%D0%B0%D0%BC%D0%BF%D0%B0%D0%BD%D1%96%D1%8F-%D0%B4%D0%BE-10-%D1%80%D1%96%D1%87%D1%87%D1%8F-%D0%B7-1-%D0%BB%D0%B8%D0%BF%D0%BD%D1%8F-1600-%D0%B7%D0%B0-%D0%BA%D0%B8%D1%97%D0%B2%D1%81%D1%8C%D0%BA%D0%B8%D0%BC-%D1%87%D0%B0%D1%81%D0%BE%D0%BC/", - "Date": { "$date": { "$numberLong": "1688419260000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.b3a0a9eb925dba65d3fa345689293aff.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64a3866532a2ec5e600aeb0a" }, - "Messages": [{ "LanguageCode": "ja", "Message": "7月3日~7月20日の配信スケジュール" }], - "Prop": "https://bit.ly/46MfONF", - "Date": { "$date": { "$numberLong": "1688438220000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64a4016f670fa8a76f08f43b" }, - "Messages": [{ "LanguageCode": "uk", "Message": "Трансляції від спільноти: 3 — 20 липня!" }], - "Prop": "https://forums.warframe.com/topic/1359408-%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D1%96%D1%97-%D0%B2%D1%96%D0%B4-%D1%81%D0%BF%D1%96%D0%BB%D1%8C%D0%BD%D0%BE%D1%82%D0%B8-3-%E2%80%94-20-%D0%BB%D0%B8%D0%BF%D0%BD%D1%8F/", - "Date": { "$date": { "$numberLong": "1688469840000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.79e9944db3a2d2c9ce9fcc88f2129ae3.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64a709a2dd0a98de5402437c" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Now Available: Banshee Prime & Mirage Prime" }, - { "LanguageCode": "fr", "Message": "Maintenant disponibles : Banshee Prime et Mirage Prime" }, - { "LanguageCode": "it", "Message": "Ora Disponibili: Banshee Prime e Mirage Prime" }, - { "LanguageCode": "de", "Message": "Jetzt erhältlich: Banshee Prime und Mirage Prime" }, - { "LanguageCode": "es", "Message": "Ya disponible: Banshee Prime y Mirage Prime" }, - { "LanguageCode": "pt", "Message": "Já Disponível: Banshee Prime e Mirage Prime" }, - { "LanguageCode": "ru", "Message": "Уже доступны: Банши Прайм и Мираж Прайм" }, - { "LanguageCode": "pl", "Message": "Już dostępne: Banshee Prime i Mirage Prime" }, - { "LanguageCode": "uk", "Message": "Уже доступні: Банші-прайм і Міраж-прайм" }, - { "LanguageCode": "tr", "Message": "Şimdi Sizlerle: Banshee Prime ve Mirage Prime" }, - { "LanguageCode": "ja", "Message": "Banshee PrimeとMirage Primeをゲットしよう" }, - { "LanguageCode": "zh", "Message": "现已登场:Banshee Prime 和 Mirage Prime" }, - { "LanguageCode": "ko", "Message": "지금 만나보세요: 밴쉬 프라임 및 미라지 프라임" }, - { "LanguageCode": "tc", "Message": "現已登場:Banshee Prime 以及 Mirage Prime" } - ], - "Prop": "", - "Links": [ - { "LanguageCode": "en", "Link": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "fr", "Link": "https://www.warframe.com//fre/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "it", "Link": "https://www.warframe.com/it/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "de", "Link": "https://www.warframe.com/de/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "es", "Link": "https://www.warframe.com/es/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, - { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/prime-resurgence?utm_medium=in-game&utm_source=in-game" } - ], - "Date": { "$date": { "$numberLong": "1688667360000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/cf6e94b58b0e6f4166e9f5d9a50842a8_800x450.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64a70e1b7d879cc23f092b4a" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Get the Kronen Iridos Weapon Bundle" }, - { "LanguageCode": "fr", "Message": "Obtenez le Bundle d'arme Kronen Iridos" }, - { "LanguageCode": "it", "Message": "Ottieni il Pacchetto Arma Kronen Iridos" }, - { "LanguageCode": "de", "Message": "Holt euch das Waffen-Paket: Kronen Iridos" }, - { "LanguageCode": "es", "Message": "Obtén el Paquete de arma Kronen Iridos" }, - { "LanguageCode": "pt", "Message": "Obtenha o Conjunto da Arma Kronen Iridos" }, - { "LanguageCode": "pl", "Message": "Zdobądź zestaw broni: Kronen Iridos" }, - { "LanguageCode": "uk", "Message": "Отримайте комплект «Іридій» для Кронена" }, - { "LanguageCode": "tr", "Message": "Kronen Iridos Silah Paketini Al" }, - { "LanguageCode": "ja", "Message": "Kronen Iridos武器バンドルをゲット" } - ], - "Prop": "https://www.warframe.com/news/prime-gaming-iridos-collection?utm_medium=in-game&utm_source=in-game", - "Date": { "$date": { "$numberLong": "1688669160000" } }, - "EventStartDate": { "$date": { "$numberLong": "1688666400000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/1e27d24da6fdef2db2c316b2bf31cfc2_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64a718d5d0f273eec4094531" }, "Messages": [{ "LanguageCode": "ja", "Message": "[重要]エンドユーザー使用許諾契約が改定されます" }], @@ -583,316 +169,605 @@ "Community": true }, { - "_id": { "$oid": "64a82148f306ef37280e6ac7" }, - "Messages": [{ "LanguageCode": "en", "Message": "The Seven Crimes of Kullervo: Hotfix 33.5.6" }], - "Prop": "https://www.warframe.com/updates/pc/33-5-6", - "Date": { "$date": { "$numberLong": "1688740140000" } }, - "Priority": true, + "_id": { "$oid": "64b7fb5e1f25a586ae0334f5" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Start playing Recall: Ten-Zero now!" }, + { "LanguageCode": "fr", "Message": "Commencez le Rappel: Ten-Zero !" }, + { "LanguageCode": "it", "Message": "Inizia ora a giocare alla Rievocazione: Ten-Zero!" }, + { "LanguageCode": "de", "Message": "Spielt jetzt \"Rückruf: Ten-Zero!\"" }, + { "LanguageCode": "es", "Message": "¡Empieza a jugar Recuerdo: Diez-Cero ahora!" }, + { "LanguageCode": "pt", "Message": "Comece a jogar a Reiteração: 10-0 agora mesmo!" }, + { "LanguageCode": "ru", "Message": "Играйте в «Воспоминания: Десять-ноль» прямо сейчас!" }, + { "LanguageCode": "pl", "Message": "Zacznijcie grać w Powrót: Ten-Zero już teraz!" }, + { "LanguageCode": "uk", "Message": "Грайте в «Спогад: 10-0» уже зараз!" }, + { "LanguageCode": "tr", "Message": "Geri Dönüş: Ten-Zero oynamaya hemen başla!" }, + { "LanguageCode": "ja", "Message": "「リコール:Ten-Zero」開催!" }, + { "LanguageCode": "zh", "Message": "现在就开始游玩「追忆:10-0」吧!" }, + { "LanguageCode": "ko", "Message": "회상: 10-0을 지금 시작해 보세요!" }, + { "LanguageCode": "tc", "Message": "現在就開始遊玩「召回:10-0」!" } + ], + "Prop": "https://www.warframe.com/news/recall-ten-zero?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Recall-Ten-Zero", + "Date": { "$date": { "$numberLong": "1689778800000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/baa9e66a04fc62a51091a8e3d7e877a0_1600x900.png", + "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64a837164f857f32740d8bf2" }, - "Messages": [{ "LanguageCode": "es", "Message": "Los Siete Crímenes de Kullervo: Revisión 33.5.5 + Revisión 33.5.6" }], - "Prop": "https://forums.warframe.com/topic/1359741-los-siete-cr%C3%ADmenes-de-kullervo-revisi%C3%B3n-3355-revisi%C3%B3n-3356/", - "Date": { "$date": { "$numberLong": "1688745660000" } }, + "_id": { "$oid": "64b7fce2cb60ec1d6d0b0ef9" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Pre-Order your TennoCon 2023 merch" }, + { "LanguageCode": "fr", "Message": "Précommandez vos Produits Dérivés TennoCon 2023" }, + { "LanguageCode": "it", "Message": "Preordina il tuo merch TennoCon 2023" }, + { "LanguageCode": "de", "Message": "Bestellt euren TennoCon 2023 Merch vor" }, + { "LanguageCode": "es", "Message": "Reserva tus productos de TennoCon 2023" }, + { "LanguageCode": "pt", "Message": "Pré-encomende os seus Produtos da TennoCon 2023" }, + { "LanguageCode": "ru", "Message": "Оформите предзаказ товаров TennoCon 2023" }, + { "LanguageCode": "pl", "Message": "Zamówcie Gadżety TennoCon 2023 w przedsprzedaży" }, + { "LanguageCode": "uk", "Message": "Передзамовте собі рекламні товари «Теннокон 2023»" }, + { "LanguageCode": "tr", "Message": "TennoCon 2023 ürünlerin için Ön Sipariş ver" }, + { "LanguageCode": "ja", "Message": "TennoCon 2023グッズパックを予約購入" }, + { "LanguageCode": "zh", "Message": "预购 TennoCon 2023 周边商品" }, + { "LanguageCode": "ko", "Message": "텐노콘 2023 굿즈를 예약 주문하세요" } + ], + "Prop": "https://store.warframe.com/products/tennocon-2023-merch-pack?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Merch-Tennocon-MerchPack", + "Date": { "$date": { "$numberLong": "1689778980000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/3fa3a69cd023866dbb97f31081c8dc40_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64b7ff3db82a88ebc108284e" }, + "Messages": [ + { "LanguageCode": "en", "Message": "TennoCon Giveaways and Digital Extras" }, + { "LanguageCode": "fr", "Message": "Giveaways et extras numériques TennoCon" }, + { "LanguageCode": "it", "Message": "Giveaway ed Extra Digitali TennoCon" }, + { "LanguageCode": "de", "Message": "TennoCon Giveaways & Digitale Extras" }, + { "LanguageCode": "es", "Message": "Sorteos y extras digitales de TennoCon" }, + { "LanguageCode": "pt", "Message": "Brindes e Extras Digitais da TennoCon" }, + { "LanguageCode": "ru", "Message": "Розыгрыши и Цифровые Дополнения TennoCon" }, + { "LanguageCode": "pl", "Message": "Rozdania nagród i Dodatki Cyfrowe TennoCon" }, + { "LanguageCode": "uk", "Message": "Розіграші подарунків та цифрові доповнення Теннокону" }, + { "LanguageCode": "tr", "Message": "TennoCon Çekilişler ve Dijital Ekstralar" }, + { "LanguageCode": "ja", "Message": "TennoConプレゼント企画とデジタルエキストラ" }, + { "LanguageCode": "zh", "Message": "TennoCon 赠礼以及数字附加内容" }, + { "LanguageCode": "ko", "Message": "텐노콘 경품 행사 및 디지털 엑스트라" }, + { "LanguageCode": "tc", "Message": "TennoCon 贈禮以及額外數位物品" } + ], + "Prop": "https://www.warframe.com/news/tennocon-2023-giveaways-and-digital-extras?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Giveaways-and-Digital-Extras", + "Date": { "$date": { "$numberLong": "1689779400000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/c112a734a10d3fa83dec4cb06c0c1d1b_800x450.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64b800f696be9f767602a910" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Countdown to TennoCon 2023" }, + { "LanguageCode": "fr", "Message": "Compte à rebours pour la TennoCon 2023 " }, + { "LanguageCode": "it", "Message": "Conto alla rovescia al TennoCon 2023" }, + { "LanguageCode": "de", "Message": "Countdown zur TennoCon 2023" }, + { "LanguageCode": "es", "Message": "Cuenta regresiva para la TennoCon 2023" }, + { "LanguageCode": "pt", "Message": "Contagem regressiva para a TennoCon 2023" }, + { "LanguageCode": "ru", "Message": "Обратный отсчёт к TennoCon 2023" }, + { "LanguageCode": "pl", "Message": "Odliczanie do TennoCon 2023" }, + { "LanguageCode": "uk", "Message": "Зворотний відлік до Теннокону 2023" }, + { "LanguageCode": "tr", "Message": "TennoCon 2023 için Geri Sayım" }, + { "LanguageCode": "ja", "Message": "TennoCon 2023カウントダウン" }, + { "LanguageCode": "zh", "Message": "TennoCon 2023 倒计时" }, + { "LanguageCode": "ko", "Message": "텐노콘 2023 카운트다운" }, + { "LanguageCode": "tc", "Message": "TennoCon 2023 倒數" } + ], + "Prop": "https://www.warframe.com/tennocon?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-TennoCon-", + "Date": { "$date": { "$numberLong": "1689780000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/f5cf830e636dcc1f0d42105a1bd99ade_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64b989b4820b83cc5406201d" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Temel modlama part:1" }], + "Prop": "https://forums.warframe.com/topic/1360789-temel-modlama-part1/", + "Date": { "$date": { "$numberLong": "1689880920000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "64a84e66280dd26c2c0efa87" }, + "_id": { "$oid": "64bfe5f8a5bf96a8ae0e2079" }, "Messages": [ - { "LanguageCode": "en", "Message": "Hildryn Prime Access Ending Soon" }, - { "LanguageCode": "fr", "Message": "Le Prime Access Hildryn Prime se termine bientôt" }, - { "LanguageCode": "it", "Message": "L'Accesso Hildryn Prime Terminerà Presto" }, - { "LanguageCode": "de", "Message": "Hildryn Prime Access endet bald" }, - { "LanguageCode": "es", "Message": "Prime Access de Hildryn está por terminar" }, - { "LanguageCode": "pt", "Message": "O Prime Access da Hildryn Prime terminará em breve" }, - { "LanguageCode": "ru", "Message": "Доступ Хильдрин Прайм скоро закончится" }, - { "LanguageCode": "pl", "Message": "Hildryn Prime Access wkrótce się skończy" }, - { "LanguageCode": "uk", "Message": "Доступ до Гільдрини-прайм невдовзі завершується" }, - { "LanguageCode": "tr", "Message": "Hildryn Prime Access Yakında Sona Eriyor" }, - { "LanguageCode": "ja", "Message": "Hildryn Prime Accessが近日終了" }, - { "LanguageCode": "zh", "Message": "Hildryn Prime Access 即将结束" }, - { "LanguageCode": "ko", "Message": "힐드린 프라임 액세스가 곧 종료됩니다" }, - { "LanguageCode": "tc", "Message": "Hildryn Prime Access 即將結束" } + { "LanguageCode": "en", "Message": "Watch Now: Wisp Prime Access Trailer" }, + { "LanguageCode": "fr", "Message": "Regardez : trailer Wisp Prime" }, + { "LanguageCode": "it", "Message": "Guarda Ora: Trailer dell'Accesso Wisp Prime" }, + { "LanguageCode": "de", "Message": "Jetzt ansehen: Wisp Prime Access-Trailer" }, + { "LanguageCode": "es", "Message": "Mira ahora: Tráiler de Prime Access de Wisp" }, + { "LanguageCode": "pt", "Message": "Assista Agora: Trailer do Prime Access da Wisp Prime" }, + { "LanguageCode": "ru", "Message": "Смотрите прямо сейчас: трейлер «Доступ Висп Прайм»" }, + { "LanguageCode": "pl", "Message": "Obejrzyj teraz: Zwiastun Wisp Prime Access" }, + { "LanguageCode": "uk", "Message": "Дивіться зараз: Вісп-прайм" }, + { "LanguageCode": "tr", "Message": "Şimdi İzle: Wisp Prime Access Fragmanı" }, + { "LanguageCode": "ja", "Message": "「Wisp Prime Access」トレイラーを今すぐチェック" }, + { "LanguageCode": "zh", "Message": "立即观看:Wisp Prime Access 预告片" }, + { "LanguageCode": "ko", "Message": "지금 바로 시청하기: 위습 프라임 액세스 트레일러" }, + { "LanguageCode": "tc", "Message": "立即觀看:Wisp Prime Access 預告" } ], - "Prop": "https://www.warframe.com/news/hildryn-prime-access?utm_medium=in-game&utm_source=in-game", - "Date": { "$date": { "$numberLong": "1688751300000" } }, - "EventEndDate": { "$date": { "$numberLong": "1690344000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/8260dab07e051d35bcef1a2a82c22965_1600x900.png", + "Prop": "https://www.youtube.com/watch?v=eMlX3isbMBE?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Wisp-Prime-Access-Trailer", + "Date": { "$date": { "$numberLong": "1690297200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/81e05bfbd34036ef9c86e86fe70611e3_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64ac2714c715cfb44009da9b" }, + "_id": { "$oid": "64c28d56bf105de0bb0f2fbd" }, + "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 33.6: Echa Duviri - notki po polsku!" }], + "Prop": "https://forums.warframe.com/topic/1361255-aktualizacja-336-echa-duviri/", + "Date": { "$date": { "$numberLong": "1690471680000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/c9d3e3370ed3264c3462dcab3439b5f7.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64c28dbd659754ff7e09b044" }, + "Messages": [{ "LanguageCode": "en", "Message": "Update 33.6.0: Echoes of Duviri!" }], + "Prop": "https://www.warframe.com/updates/pc/33-6-0", + "Date": { "$date": { "$numberLong": "1690471800000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "64c2952035896c34470ff7db" }, "Messages": [ - { "LanguageCode": "en", "Message": "Alienware Arena Giveaways!" }, - { "LanguageCode": "fr", "Message": "Giveaway Alienware Arena !" }, - { "LanguageCode": "it", "Message": "Giveaway Alienware Arena!" }, - { "LanguageCode": "de", "Message": "Alienware Arena Giveaways!" }, - { "LanguageCode": "es", "Message": "¡Sorteo de Alienware Arena!" }, - { "LanguageCode": "pt", "Message": "Brindes e Sorteio da Alienware Arena!" }, - { "LanguageCode": "ru", "Message": "Розыгрыши Alienware Arena!" }, - { "LanguageCode": "pl", "Message": "Rozdanie Alienware Arena!" }, - { "LanguageCode": "uk", "Message": "Розіграші від Alienware Arena!" }, - { "LanguageCode": "tr", "Message": "Alienware Arena Çekilişleri!" }, - { "LanguageCode": "ja", "Message": "Alienware Arenaプレゼントキャンペーン!" }, - { "LanguageCode": "zh", "Message": "Alienware Arena 赠礼!" }, - { "LanguageCode": "ko", "Message": "Alienware Arena 경품 행사!" }, - { "LanguageCode": "tc", "Message": "Alienware Arena 贈禮!" } + { "LanguageCode": "en", "Message": "Wisp Prime Access is now available!" }, + { "LanguageCode": "fr", "Message": "Prime Access Wisp Prime disponible !" }, + { "LanguageCode": "it", "Message": "L'Accesso Wisp Prime è ora disponibile!" }, + { "LanguageCode": "de", "Message": "Wisp Prime Access ist jetzt verfügbar!" }, + { "LanguageCode": "es", "Message": "¡Prime Access de Wisp ya está disponible!" }, + { "LanguageCode": "pt", "Message": "O Prime Access da Wisp Prime já está disponível!" }, + { "LanguageCode": "ru", "Message": "Доступ к Висп Прайм теперь открыт!" }, + { "LanguageCode": "pl", "Message": "Wisp Prime Access już dostępny!" }, + { "LanguageCode": "uk", "Message": "Вісп-прайм уже доступна!" }, + { "LanguageCode": "tr", "Message": "Wisp Prime Access şimdi sizlerle!" }, + { "LanguageCode": "ja", "Message": "Wisp Prime Accessが登場!" }, + { "LanguageCode": "zh", "Message": "Wisp Prime Access 现已登场!" }, + { "LanguageCode": "ko", "Message": "위습 프라임 액세스를 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "Wisp Prime Access 現已登場!" } ], - "Prop": "https://www.warframe.com/news/alienware-arena-giveaways?utm_medium=in-game&utm_source=in-game", - "Date": { "$date": { "$numberLong": "1688997120000" } }, - "EventStartDate": { "$date": { "$numberLong": "1688997600000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/604ecbcc3704d5ef4d7fa585f31f29f9_1600x900.png", + "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Wisp-Prime-Launch", + "Date": { "$date": { "$numberLong": "1690470000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/81e05bfbd34036ef9c86e86fe70611e3_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64c2b19efdccd1fe8805e778" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Echoes of Duviri Now Available" }, + { "LanguageCode": "fr", "Message": "La màj \"Échos de Duviri\" est là !" }, + { "LanguageCode": "it", "Message": "Echi di Duviri - Ora Disponibile" }, + { "LanguageCode": "de", "Message": "Echos von Duviri ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "Ecos de Duviri ya está disponible" }, + { "LanguageCode": "pt", "Message": "A atualização Ecos de Duviri já está disponível" }, + { "LanguageCode": "ru", "Message": "Отголоски Дувири уже доступны" }, + { "LanguageCode": "pl", "Message": "Echa Duviri już dostępne" }, + { "LanguageCode": "uk", "Message": "«Відлуння Дувірі» вже доступне" }, + { "LanguageCode": "tr", "Message": "Echoes of the Duviri Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "アップデート.「デュヴィリの再演」が登場" }, + { "LanguageCode": "zh", "Message": "《双衍回响》现已登场" }, + { "LanguageCode": "ko", "Message": "두비리의 잔향을 지금 바로 만나보세요" }, + { "LanguageCode": "tc", "Message": "《Duviri 迴響》現已登場" } + ], + "Prop": "https://www.warframe.com/news/echoes-of-duviri?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Echoes-of-Duviri", + "Date": { "$date": { "$numberLong": "1690480800000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/cac13197a9ec34ad1bdc3920683cc61d_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64c2b9c64c7fc1e1f9035fa9" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Cuma Topluluk Dropları - 28 Temmuz!" }], + "Prop": "https://forums.warframe.com/topic/1361341-cuma-topluluk-droplar%C4%B1-28-temmuz/", + "Date": { "$date": { "$numberLong": "1690483080000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64c2e0f67e978150e70c7bdb" }, + "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33.6: 두비리의 잔향" }], + "Prop": "", + "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1361269-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-336-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%9E%94%ED%96%A5/" }], + "Date": { "$date": { "$numberLong": "1690493100000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64c2e234648077a3c70ff42a" }, + "Messages": [{ "LanguageCode": "uk", "Message": "ОНОВЛЕННЯ 33.6.0: ВІДЛУННЯ ДУВІРІ" }], + "Prop": "https://forums.warframe.com/topic/1361397-%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-3360-%D0%B2%D1%96%D0%B4%D0%BB%D1%83%D0%BD%D0%BD%D1%8F-%D0%B4%D1%83%D0%B2%D1%96%D1%80%D1%96/", + "Date": { "$date": { "$numberLong": "1690493400000" } }, + "Icon": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/5ebc66a3511c304642c97c699753fb03.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64c555d849bd2d721e0e7173" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Les Échos de Duviri - Bugs" }], + "Prop": "https://forums.warframe.com/topic/1361737-psa-les-%C3%A9chos-de-duviri-bugs/", + "Date": { "$date": { "$numberLong": "1690653960000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64c95f55455a4d671e09771f" }, + "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.2" }], + "Prop": "https://forums.warframe.com/topic/1362311-ecos-de-duviri-revisi%C3%B3n-3362/", + "Date": { "$date": { "$numberLong": "1690918680000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64ca9c5fbe665e26a20dee62" }, + "Messages": [{ "LanguageCode": "en", "Message": "Friday Community Twitch Drops: August 4!" }], + "Prop": "https://forums.warframe.com/topic/1362415-community-friday-drops-august-4th/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-fridaydrops-04", + "Date": { "$date": { "$numberLong": "1690999860000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64caa8a0338d02d7ff045985" }, + "Messages": [{ "LanguageCode": "ja", "Message": "金曜コミュニティDrops! - 日本時間8月5日" }], + "Prop": "https://bit.ly/3DGnHqw", + "Date": { "$date": { "$numberLong": "1691002980000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_08/image.png.998cc0a7a4afff133e24c086b22efcb0.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64cbf15455d526056f034df2" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Nyx Prime and Rhino Prime are back!" }, + { "LanguageCode": "fr", "Message": "Nyx Prime et Rhino Prime reviennent" }, + { "LanguageCode": "it", "Message": "Nyx Prime e Rhino Prime sono tornati!" }, + { "LanguageCode": "de", "Message": "Nyx Prime und Rhino Prime sind zurück!" }, + { "LanguageCode": "es", "Message": "¡Nyx Prime y Rhino Prime están de vuelta!" }, + { "LanguageCode": "pt", "Message": "A Nyx Prime e o Rhino Prime estão de volta!" }, + { "LanguageCode": "ru", "Message": "Никс Прайм и Рино Прайм возвращаются!" }, + { "LanguageCode": "pl", "Message": "Nyx Prime i Rhino Prime powrócili!" }, + { "LanguageCode": "uk", "Message": "Нікс-прайм і Райно-прайм повертаються!" }, + { "LanguageCode": "tr", "Message": "Nyx Prime ve Rhino Prime geri döndü!" }, + { "LanguageCode": "ja", "Message": "Nyx PrimeとRhino Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Nyx Prime 和 Rhino Prime 现已回归!" }, + { "LanguageCode": "ko", "Message": "닉스 프라임과 라이노 프라임이 돌아왔습니다!" }, + { "LanguageCode": "tc", "Message": "Nyx Prime 以及 Rhino Prime 回歸了!" } + ], + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-Nyx-and-Rhino-Prime-Resurgence", + "Date": { "$date": { "$numberLong": "1691089200000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/prime-resurgence/rotations/nyx-rhino/masthead-keyart-desktop.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64cbf78deab8cb28650a60b7" }, + "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.3" }], + "Prop": "https://www.warframe.com/updates/pc/33-6-3", + "Date": { "$date": { "$numberLong": "1691088720000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64cc032c13dd3ceccb004187" }, + "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.3" }], + "Prop": "https://forums.warframe.com/topic/1362558-ecos-de-duviri-revisi%C3%B3n-3363/", + "Date": { "$date": { "$numberLong": "1691091720000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64cc2cf4259ccbc9bb0e44ca" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Get the Akjagara Iridos Weapon Bundle" }, + { "LanguageCode": "fr", "Message": "Obtenez le Bundle d'arme Akjagara Iridos" }, + { "LanguageCode": "it", "Message": "Ottieni il Pacchetto Arma Akjagara Iridos" }, + { "LanguageCode": "de", "Message": "Holt euch das Waffen-Paket: Akjagara Iridos" }, + { "LanguageCode": "es", "Message": "Obtén el Paquete de arma Akjagara Iridos" }, + { "LanguageCode": "pt", "Message": "Obtenha o Conjunto da Arma Akjagara Iridos" }, + { "LanguageCode": "ru", "Message": "Получите набор оружия «Акджагара Иридос»" }, + { "LanguageCode": "pl", "Message": "Zdobądź zestaw broni: Akjagara Iridos" }, + { "LanguageCode": "uk", "Message": "Отримайте комплект «Іридій» для Акджаґари" }, + { "LanguageCode": "tr", "Message": "Akjagara Iridos Silah Paketini Hemen Al" }, + { "LanguageCode": "ja", "Message": "Akjagara Iridos武器バンドルをゲット" }, + { "LanguageCode": "zh", "Message": "获取觉醒双枪炫彩武器组合包" }, + { "LanguageCode": "ko", "Message": "Get the Akjagara Iridos Weapon Bundle" }, + { "LanguageCode": "tc", "Message": "獲取覺醒雙槍虹彩武器組合包" } + ], + "Prop": "https://www.warframe.com/news/prime-gaming-iridos-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-Prime-Gaming-Drop-10", + "Date": { "$date": { "$numberLong": "1691089200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/09d1b7b527383e3c8b4ca2ef914353ac_1600x900.png", "Priority": false, "MobileOnly": false } ], - "Goals": [], + "Goals": [ + { + "_id": { "$oid": "64c7c865706412146f097c26" }, + "Activation": { "$date": { "$numberLong": "1691074800000" } }, + "Expiry": { "$date": { "$numberLong": "1691679540000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "ClampNodeScores": true, + "Node": "EventNode27", + "MissionKeyName": "/Lotus/Types/Keys/TenYearAnniversary/TacAlertKeyTenYearAnniversaryM4A", + "Desc": "/Lotus/Language/Events/TenYearAnnniversaryEventTitleA", + "Icon": "/Lotus/Interface/Icons/Player/TennconPinGlyph.png", + "Tag": "TenYearM4A", + "Reward": { "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/GlassmakerBobbleHead"] } + }, + { + "_id": { "$oid": "64c7c8a7215ffa1585030db2" }, + "Activation": { "$date": { "$numberLong": "1691074800000" } }, + "Expiry": { "$date": { "$numberLong": "1691679540000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "Node": "EventNode24", + "MissionKeyName": "/Lotus/Types/Keys/TenYearAnniversary/TacAlertKeyTenYearAnniversaryM4B", + "Desc": "/Lotus/Language/Events/TenYearAnnniversaryEventTitleB", + "Icon": "/Lotus/Interface/Icons/Player/TennconPinGlyph.png", + "Tag": "TenYearM4B", + "PrereqGoalTags": ["TenYearM4A"], + "Reward": { "items": ["/Lotus/StoreItems/Types/Items/MiscItems/Forma"] } + }, + { + "_id": { "$oid": "64c7c8ebc5ebf4690206e34b" }, + "Activation": { "$date": { "$numberLong": "1691074800000" } }, + "Expiry": { "$date": { "$numberLong": "1691679540000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "Node": "EventNode29", + "MissionKeyName": "/Lotus/Types/Keys/TenYearAnniversary/TacAlertKeyTenYearAnniversaryM4C", + "Desc": "/Lotus/Language/Events/TenYearAnnniversaryEventTitleC", + "Icon": "/Lotus/Interface/Icons/Player/TennconPinGlyph.png", + "Tag": "TenYearM4C", + "PrereqGoalTags": ["TenYearM4A", "TenYearM4B"], + "Reward": { "items": ["/Lotus/StoreItems/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek3Glyph"] } + } + ], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "64ac277ee0be1ec801ded16b" }, - "Activation": { "$date": { "$numberLong": "1689004800000" } }, - "Expiry": { "$date": { "$numberLong": "1689091200000" } }, + "_id": { "$oid": "64cd1cfd6f0dc72cbd3ef928" }, + "Activation": { "$date": { "$numberLong": "1691164800000" } }, + "Expiry": { "$date": { "$numberLong": "1691251200000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 58490, - "Boss": "SORTIE_BOSS_HYENA", + "Seed": 40641, + "Boss": "SORTIE_BOSS_VOR", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode6", "tileset": "CorpusOutpostTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode215", "tileset": "CorpusShipTileset" }, - { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode102", "tileset": "CorpusShipTileset" } + { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode15", "tileset": "GrineerGalleonTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode41", "tileset": "GrineerSettlementTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_EXPLOSION", "node": "SolNode108", "tileset": "GrineerAsteroidTileset" } ], "Twitter": true - }, - { - "_id": { "$oid": "64ad78fdfcacab999d728e66" }, - "Activation": { "$date": { "$numberLong": "1689091200000" } }, - "Expiry": { "$date": { "$numberLong": "1689177600000" } }, - "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 58954, - "Boss": "SORTIE_BOSS_CORRUPTED_VOR", - "ExtraDrops": [], - "Variants": [ - { "missionType": "MT_TERRITORY", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode404", "tileset": "OrokinVoidTileset" }, - { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_FREEZE", "node": "SolNode407", "tileset": "OrokinVoidTileset" }, - { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", "node": "SolNode408", "tileset": "OrokinVoidTileset" } - ] } ], "LiteSorties": [ { - "_id": { "$oid": "64ab467d8122f2d5a857b947" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "_id": { "$oid": "64c6f5fd49f930a50bad7f56" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 67504, + "Seed": 77969, "Boss": "SORTIE_BOSS_AMAR", "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode11" }, - { "missionType": "MT_EXCAVATE", "node": "SolNode45" }, + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode16" }, + { "missionType": "MT_ARTIFACT", "node": "SolNode30" }, { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "64ac2ac5e63fe1ba9ba984b6" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204578494122e767f757" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "ArbitersSyndicate", - "Seed": 58490, - "Nodes": ["SolNode107", "SolNode89", "SolNode147", "SolNode130", "SolNode171", "SolNode4", "SolNode1"] + "Seed": 40641, + "Nodes": ["SolNode130", "SolNode2", "SolNode131", "SettlementNode1", "SolNode121", "SolNode85", "SolNode402"] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984b8" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204578494122e767f759" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "NecraloidSyndicate", - "Seed": 61357, + "Seed": 36410, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac5e63fe1ba9ba984b7" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 62817, - "Nodes": ["SolNode36", "SolNode101", "SolNode79", "SolNode103", "SolNode122", "SolNode93", "SolNode137"] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984ba" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "KahlSyndicate", - "Seed": 63524, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984b9" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204578494122e767f75a" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "EventSyndicate", - "Seed": 8133, + "Seed": 69553, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bc" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "QuillsSyndicate", - "Seed": 25301, + "_id": { "$oid": "64cd204578494122e767f758" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 27530, + "Nodes": ["SolNode68", "SolNode223", "SolNode141", "SolNode75", "SolNode406", "SolNode153", "SolNode64"] + }, + { + "_id": { "$oid": "64cd204578494122e767f75b" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "KahlSyndicate", + "Seed": 36622, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bb" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204578494122e767f75c" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "NewLokaSyndicate", - "Seed": 58704, - "Nodes": ["SolNode109", "SolNode224", "SolNode139", "SolNode63", "SolNode74", "SolNode19", "SolNode211"] + "Seed": 39158, + "Nodes": ["SolNode23", "SolNode26", "SolNode140", "SolNode209", "SolNode167", "SettlementNode14", "SolNode119"] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bd" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204678494122e767f75d" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "QuillsSyndicate", + "Seed": 49427, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f75e" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "PerrinSyndicate", - "Seed": 41057, - "Nodes": ["SolNode14", "SolNode85", "SettlementNode1", "SolNode42", "SolNode128", "SolNode162", "SolNode119"] + "Seed": 40441, + "Nodes": ["SolNode59", "SolNode106", "SolNode710", "SolNode212", "SolNode128", "SolNode707", "SolNode410"] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984be" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204678494122e767f75f" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 82961, + "Seed": 44537, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c3" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 25479, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c6" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 19817, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c0" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 80910, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c5" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 50640, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bf" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204678494122e767f760" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 47689, + "Seed": 56126, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c7" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 38660, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c4" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 3659, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c1" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 65648, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c2" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204678494122e767f763" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 14558, + "Seed": 74692, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c8" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204678494122e767f762" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 2995, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f764" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 37414, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f761" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 54110, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f765" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 11222, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f767" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 31598, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f768" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 10883, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f766" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 90249, + "Nodes": [] + }, + { + "_id": { "$oid": "64cd204678494122e767f769" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 97600, + "Seed": 44464, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984ca" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 64315, - "Nodes": [] - }, - { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c9" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204678494122e767f76a" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "RedVeilSyndicate", - "Seed": 5590, - "Nodes": ["SolNode226", "SolNode61", "SolNode710", "SolNode25", "SolNode217", "SettlementNode11", "SolNode70"] + "Seed": 78327, + "Nodes": ["SolNode22", "SolNode12", "SolNode97", "SolNode146", "SolNode147", "SolNode172", "SolNode203"] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984cb" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "_id": { "$oid": "64cd204678494122e767f76c" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, "Tag": "VoxSyndicate", - "Seed": 18807, + "Seed": 62326, "Nodes": [] }, { - "_id": { "$oid": "64ac2ac6e63fe1ba9ba984cc" }, - "Activation": { "$date": { "$numberLong": "1689004741892" } }, - "Expiry": { "$date": { "$numberLong": "1689091140000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 41173, - "Nodes": ["SolNode59", "SolNode223", "SolNode23", "SolNode146", "SolNode189", "SolNode172", "SolNode402"] + "_id": { "$oid": "64cd204678494122e767f76b" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 58503, + "Nodes": [] }, { - "_id": { "$oid": "64ad569e0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1689081502472" } }, - "Expiry": { "$date": { "$numberLong": "1689090501346" } }, + "_id": { "$oid": "64cd204678494122e767f76d" }, + "Activation": { "$date": { "$numberLong": "1691164741792" } }, + "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 14888, + "Nodes": ["SolNode45", "SolNode224", "SolNode711", "SolNode31", "SolNode138", "SolNode109", "SolNode79"] + }, + { + "_id": { "$oid": "64cd78270000000000000002" }, + "Activation": { "$date": { "$numberLong": "1691187239176" } }, + "Expiry": { "$date": { "$numberLong": "1691196238050" } }, "Tag": "EntratiSyndicate", - "Seed": 61243, + "Seed": 54285, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, @@ -900,12 +775,12 @@ "xpAmounts": [6, 6, 6] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [8, 8, 8] + "xpAmounts": [10, 10, 10] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", @@ -918,23 +793,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 28] + "xpAmounts": [17, 17, 17, 26] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 41] + "xpAmounts": [20, 20, 20, 20, 39] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -971,31 +846,89 @@ ] }, { - "_id": { "$oid": "64ad569e0000000000000026" }, - "Activation": { "$date": { "$numberLong": "1689081502472" } }, - "Expiry": { "$date": { "$numberLong": "1689090501346" } }, - "Tag": "ZarimanSyndicate", - "Seed": 61244, - "Nodes": [] - }, - { - "_id": { "$oid": "64ad569e0000000000000022" }, - "Activation": { "$date": { "$numberLong": "1689081502472" } }, - "Expiry": { "$date": { "$numberLong": "1689090501346" } }, - "Tag": "SolarisSyndicate", - "Seed": 61243, + "_id": { "$oid": "64cd78270000000000000007" }, + "Activation": { "$date": { "$numberLong": "1691187239176" } }, + "Expiry": { "$date": { "$numberLong": "1691196238050" } }, + "Tag": "CetusSyndicate", + "Seed": 54285, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [400, 400, 400] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [660, 660, 660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [590, 590, 590, 870] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [570, 570, 570, 570, 1120] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [740, 740, 740, 740, 1460] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [800, 800, 800, 800, 1580] + } + ] + }, + { + "_id": { "$oid": "64cd78270000000000000022" }, + "Activation": { "$date": { "$numberLong": "1691187239176" } }, + "Expiry": { "$date": { "$numberLong": "1691196238050" } }, + "Tag": "SolarisSyndicate", + "Seed": 54285, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] + "xpAmounts": [410, 410, 410] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, @@ -1003,31 +936,31 @@ "xpAmounts": [720, 720, 720] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [590, 590, 590, 870] + "xpAmounts": [660, 660, 660, 980] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 550, 1090] + "xpAmounts": [600, 600, 600, 600, 1180] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1350] + "xpAmounts": [680, 680, 680, 680, 1340] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -1040,525 +973,222 @@ "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1610] + "xpAmounts": [810, 810, 810, 810, 1580] } ] }, { - "_id": { "$oid": "64ad569e0000000000000007" }, - "Activation": { "$date": { "$numberLong": "1689081502472" } }, - "Expiry": { "$date": { "$numberLong": "1689090501346" } }, - "Tag": "CetusSyndicate", - "Seed": 61243, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [360, 360, 360] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [710, 710, 710] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 900] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [560, 560, 560, 560, 1090] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [700, 700, 700, 700, 1380] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [770, 770, 770, 770, 1510] - } - ] - }, - { - "_id": { "$oid": "64ad79c50000000000000002" }, - "Activation": { "$date": { "$numberLong": "1689090501347" } }, - "Expiry": { "$date": { "$numberLong": "1689099500220" } }, - "Tag": "EntratiSyndicate", - "Seed": 47401, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [6, 6, 6] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [10, 10, 10] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", - "masteryReq": 5, - "minEnemyLevel": 25, - "maxEnemyLevel": 30, - "endless": true, - "bonusXpMultiplier": 0.15000001, - "xpAmounts": [14, 14, 14] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", - "masteryReq": 2, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [16, 16, 16, 25] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 40] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [25, 25, 25, 25, 50] - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", - "masteryReq": 5, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [2, 2, 2, 4], - "locationTag": "ChamberB", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [4, 4, 4, 5], - "locationTag": "ChamberA", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", - "masteryReq": 5, - "minEnemyLevel": 50, - "maxEnemyLevel": 60, - "xpAmounts": [5, 5, 5, 7], - "locationTag": "ChamberC", - "isVault": true - } - ] - }, - { - "_id": { "$oid": "64ad79c50000000000000007" }, - "Activation": { "$date": { "$numberLong": "1689090501347" } }, - "Expiry": { "$date": { "$numberLong": "1689099500220" } }, - "Tag": "CetusSyndicate", - "Seed": 47401, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [490, 490, 490] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [700, 700, 700] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [670, 670, 670, 980] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [630, 630, 630, 630, 1230] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [680, 680, 680, 680, 1330] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [830, 830, 830, 830, 1640] - } - ] - }, - { - "_id": { "$oid": "64ad79c50000000000000022" }, - "Activation": { "$date": { "$numberLong": "1689090501347" } }, - "Expiry": { "$date": { "$numberLong": "1689099500220" } }, - "Tag": "SolarisSyndicate", - "Seed": 47401, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [400, 400, 400] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [710, 710, 710] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 890] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobAmbush", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [570, 570, 570, 570, 1120] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [760, 760, 760, 760, 1490] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [800, 800, 800, 800, 1580] - } - ] - }, - { - "_id": { "$oid": "64ad79c50000000000000026" }, - "Activation": { "$date": { "$numberLong": "1689090501347" } }, - "Expiry": { "$date": { "$numberLong": "1689099500220" } }, + "_id": { "$oid": "64cd78270000000000000026" }, + "Activation": { "$date": { "$numberLong": "1691187239176" } }, + "Expiry": { "$date": { "$numberLong": "1691196238050" } }, "Tag": "ZarimanSyndicate", - "Seed": 47401, + "Seed": 54286, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "64ad6025357b495f180d5564" }, + "_id": { "$oid": "64cd6839baea04f7c1ef0eab" }, "Region": 9, - "Seed": 22195, - "Activation": { "$date": { "$numberLong": "1689083941869" } }, - "Expiry": { "$date": { "$numberLong": "1689090872723" } }, - "Node": "SolNode72", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4", - "Hard": true + "Seed": 80718, + "Activation": { "$date": { "$numberLong": "1691183161599" } }, + "Expiry": { "$date": { "$numberLong": "1691189548790" } }, + "Node": "SolNode48", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT4" }, { - "_id": { "$oid": "64ad6062d99ca7575a305f42" }, - "Region": 3, - "Seed": 32236, - "Activation": { "$date": { "$numberLong": "1689084002029" } }, - "Expiry": { "$date": { "$numberLong": "1689090850537" } }, - "Node": "SolNode85", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64ad6062d99ca7575a305f43" }, - "Region": 2, - "Seed": 39346, - "Activation": { "$date": { "$numberLong": "1689084002029" } }, - "Expiry": { "$date": { "$numberLong": "1689091164336" } }, - "Node": "SolNode101", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64ad618eb13490a6d19830ef" }, - "Region": 2, - "Seed": 99258, - "Activation": { "$date": { "$numberLong": "1689084302097" } }, - "Expiry": { "$date": { "$numberLong": "1689090769276" } }, - "Node": "SolNode23", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "64ad618eb13490a6d19830f0" }, - "Region": 3, - "Seed": 96081, - "Activation": { "$date": { "$numberLong": "1689084302097" } }, - "Expiry": { "$date": { "$numberLong": "1689090997241" } }, - "Node": "SolNode63", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "64ad681eee7e23fc36cde3d3" }, - "Region": 8, - "Seed": 52707, - "Activation": { "$date": { "$numberLong": "1689085981981" } }, - "Expiry": { "$date": { "$numberLong": "1689090851874" } }, - "Node": "SolNode84", - "MissionType": "MT_INTEL", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "64ad690def6919bc8761fda1" }, + "_id": { "$oid": "64cd687518aa17f18e6d4061" }, "Region": 19, - "Seed": 8693, - "Activation": { "$date": { "$numberLong": "1689086221185" } }, - "Expiry": { "$date": { "$numberLong": "1689092771610" } }, + "Seed": 87156, + "Activation": { "$date": { "$numberLong": "1691183221801" } }, + "Expiry": { "$date": { "$numberLong": "1691189649972" } }, "Node": "SolNode748", "MissionType": "MT_RESCUE", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "64ad690def6919bc8761fda2" }, + "_id": { "$oid": "64cd687518aa17f18e6d4062" }, "Region": 19, - "Seed": 1298, - "Activation": { "$date": { "$numberLong": "1689086221185" } }, - "Expiry": { "$date": { "$numberLong": "1689091440901" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", + "Seed": 16387, + "Activation": { "$date": { "$numberLong": "1691183221801" } }, + "Expiry": { "$date": { "$numberLong": "1691189861406" } }, + "Node": "SolNode743", + "MissionType": "MT_MOBILE_DEFENSE", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "64ad6b29ae39dea52d96affa" }, - "Region": 8, - "Seed": 1701, - "Activation": { "$date": { "$numberLong": "1689086761492" } }, - "Expiry": { "$date": { "$numberLong": "1689092517218" } }, - "Node": "SolNode17", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "64ad6b29ae39dea52d96affb" }, - "Region": 15, - "Seed": 74243, - "Activation": { "$date": { "$numberLong": "1689086761492" } }, - "Expiry": { "$date": { "$numberLong": "1689092588164" } }, - "Node": "SolNode401", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "64ad6bde8a2dfd7a7a7c4e1c" }, - "Region": 16, - "Seed": 96734, - "Activation": { "$date": { "$numberLong": "1689086942013" } }, - "Expiry": { "$date": { "$numberLong": "1689092198860" } }, - "Node": "SettlementNode2", + "_id": { "$oid": "64cd6ce96d93cc6dbf632c9f" }, + "Region": 10, + "Seed": 73031, + "Activation": { "$date": { "$numberLong": "1691184361175" } }, + "Expiry": { "$date": { "$numberLong": "1691190359163" } }, + "Node": "SolNode139", "MissionType": "MT_CAPTURE", "Modifier": "VoidT2" }, { - "_id": { "$oid": "64ad6fd909d8a47e49f35ca7" }, - "Region": 11, - "Seed": 1317, - "Activation": { "$date": { "$numberLong": "1689087961663" } }, - "Expiry": { "$date": { "$numberLong": "1689092929978" } }, - "Node": "SolNode162", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT4" + "_id": { "$oid": "64cd6ce96d93cc6dbf632ca0" }, + "Region": 6, + "Seed": 44715, + "Activation": { "$date": { "$numberLong": "1691184361175" } }, + "Expiry": { "$date": { "$numberLong": "1691189783320" } }, + "Node": "SolNode50", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT2" }, { - "_id": { "$oid": "64ad750111c35eaa5a3823e7" }, - "Region": 5, - "Seed": 30425, - "Activation": { "$date": { "$numberLong": "1689089281936" } }, - "Expiry": { "$date": { "$numberLong": "1689093260478" } }, - "Node": "SolNode10", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64ad750111c35eaa5a3823e8" }, - "Region": 10, - "Seed": 12845, - "Activation": { "$date": { "$numberLong": "1689089281936" } }, - "Expiry": { "$date": { "$numberLong": "1689093452186" } }, - "Node": "SolNode147", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64ad7759415742cb718802f1" }, + "_id": { "$oid": "64cd6f4150d8f793a9307dba" }, "Region": 19, - "Seed": 17280, - "Activation": { "$date": { "$numberLong": "1689089881941" } }, - "Expiry": { "$date": { "$numberLong": "1689095284623" } }, - "Node": "SolNode741", - "MissionType": "MT_ASSAULT", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "64ad7759415742cb718802f2" }, - "Region": 19, - "Seed": 31988, - "Activation": { "$date": { "$numberLong": "1689089881941" } }, - "Expiry": { "$date": { "$numberLong": "1689093504669" } }, - "Node": "SolNode742", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "64ad7759415742cb718802f3" }, - "Region": 19, - "Seed": 71464, - "Activation": { "$date": { "$numberLong": "1689089881941" } }, - "Expiry": { "$date": { "$numberLong": "1689095100161" } }, + "Seed": 91244, + "Activation": { "$date": { "$numberLong": "1691184961724" } }, + "Expiry": { "$date": { "$numberLong": "1691190570835" } }, "Node": "SolNode745", "MissionType": "MT_ARTIFACT", "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "64cd6f4150d8f793a9307dbb" }, + "Region": 19, + "Seed": 64095, + "Activation": { "$date": { "$numberLong": "1691184961724" } }, + "Expiry": { "$date": { "$numberLong": "1691190658006" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "64cd70a9c529177f563ffac0" }, + "Region": 7, + "Seed": 56378, + "Activation": { "$date": { "$numberLong": "1691185321547" } }, + "Expiry": { "$date": { "$numberLong": "1691190013763" } }, + "Node": "SolNode64", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "64cd742de10070656ffb550b" }, + "Region": 13, + "Seed": 32784, + "Activation": { "$date": { "$numberLong": "1691186221977" } }, + "Expiry": { "$date": { "$numberLong": "1691190306860" } }, + "Node": "SolNode217", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64cd742ee10070656ffb550c" }, + "Region": 7, + "Seed": 62529, + "Activation": { "$date": { "$numberLong": "1691186221977" } }, + "Expiry": { "$date": { "$numberLong": "1691190722376" } }, + "Node": "SolNode122", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64cd742ee10070656ffb550d" }, + "Region": 8, + "Seed": 77047, + "Activation": { "$date": { "$numberLong": "1691186221977" } }, + "Expiry": { "$date": { "$numberLong": "1691190590372" } }, + "Node": "SolNode6", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64cd74694557e2cbbb5ce850" }, + "Region": 4, + "Seed": 43703, + "Activation": { "$date": { "$numberLong": "1691186281194" } }, + "Expiry": { "$date": { "$numberLong": "1691190749994" } }, + "Node": "SolNode36", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64cd74694557e2cbbb5ce851" }, + "Region": 3, + "Seed": 73859, + "Activation": { "$date": { "$numberLong": "1691186281194" } }, + "Expiry": { "$date": { "$numberLong": "1691191759013" } }, + "Node": "SolNode27", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64cd7559dad07aa9f25f0932" }, + "Region": 3, + "Seed": 1564, + "Activation": { "$date": { "$numberLong": "1691186521863" } }, + "Expiry": { "$date": { "$numberLong": "1691193572027" } }, + "Node": "SolNode85", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "64cd7559dad07aa9f25f0933" }, + "Region": 4, + "Seed": 79009, + "Activation": { "$date": { "$numberLong": "1691186521863" } }, + "Expiry": { "$date": { "$numberLong": "1691190942414" } }, + "Node": "SolNode11", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "64cd7685e7e427e1f5ca22b3" }, + "Region": 5, + "Seed": 45624, + "Activation": { "$date": { "$numberLong": "1691186821428" } }, + "Expiry": { "$date": { "$numberLong": "1691193576653" } }, + "Node": "SolNode125", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64cd7685e7e427e1f5ca22b4" }, + "Region": 10, + "Seed": 6197, + "Activation": { "$date": { "$numberLong": "1691186821428" } }, + "Expiry": { "$date": { "$numberLong": "1691190820431" } }, + "Node": "SolNode137", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64cd7991a03b6eb2aad5d2e1" }, + "Region": 15, + "Seed": 72866, + "Activation": { "$date": { "$numberLong": "1691187601200" } }, + "Expiry": { "$date": { "$numberLong": "1691193870211" } }, + "Node": "SolNode408", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "64cd7991a03b6eb2aad5d2e2" }, + "Region": 12, + "Seed": 8749, + "Activation": { "$date": { "$numberLong": "1691187601200" } }, + "Expiry": { "$date": { "$numberLong": "1691193866400" } }, + "Node": "SolNode195", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4", + "Hard": true } ], "GlobalUpgrades": [], "FlashSales": [ - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "StartDate": { "$date": { "$numberLong": "1662422400000" } }, - "EndDate": { "$date": { "$numberLong": "1689267600000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 35, - "RegularOverride": 0, - "PremiumOverride": 0, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1689267600000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 40, - "RegularOverride": 0, - "PremiumOverride": 0, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "StartDate": { "$date": { "$numberLong": "1667347200000" } }, - "EndDate": { "$date": { "$numberLong": "1689267600000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 25, - "RegularOverride": 0, - "PremiumOverride": 0, - "BogoBuy": 0, - "BogoGet": 0 - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1573,19 +1203,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1689267600000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 45, - "RegularOverride": 0, - "PremiumOverride": 0, - "BogoBuy": 0, - "BogoGet": 0 - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1739,32 +1356,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeMantisIridosLandingCraftStoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1686247200000" } }, - "EndDate": { "$date": { "$numberLong": "1689530100000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeMantisIridosLandingCraftStoreItemNoLogo", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1686247200000" } }, - "EndDate": { "$date": { "$numberLong": "1689530100000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, @@ -1777,42 +1368,6 @@ "StartDate": { "$date": { "$numberLong": "1688216400000" } }, "EndDate": { "$date": { "$numberLong": "1722171600000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Community10YearOrdisGlyph", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "StartDate": { "$date": { "$numberLong": "1688209260000" } }, - "EndDate": { "$date": { "$numberLong": "1690801260000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Community10YearRoyalPratDisplay", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 30, - "StartDate": { "$date": { "$numberLong": "1688209320000" } }, - "EndDate": { "$date": { "$numberLong": "1690801320000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Community10YearDasterDisplay", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 30, - "StartDate": { "$date": { "$numberLong": "1688209320000" } }, - "EndDate": { "$date": { "$numberLong": "1690801320000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItemNoLogo", "ShowInMarket": true, @@ -1836,52 +1391,125 @@ "PremiumOverride": 1, "StartDate": { "$date": { "$numberLong": "1688666400000" } }, "EndDate": { "$date": { "$numberLong": "1691952900000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1689267600000" } }, + "EndDate": { "$date": { "$numberLong": "1894406400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1689267600000" } }, + "EndDate": { "$date": { "$numberLong": "1894406400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1689267600000" } }, + "EndDate": { "$date": { "$numberLong": "1894406400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1689267600000" } }, + "EndDate": { "$date": { "$numberLong": "1894406400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1691085600000" } }, + "EndDate": { "$date": { "$numberLong": "1694368800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1691085600000" } }, + "EndDate": { "$date": { "$numberLong": "1694368800000" } } } ], "InGameMarket": { "LandingPage": { "Categories": [ + { + "CategoryName": "POPULAR", + "Name": "/Lotus/Language/Menu/StorePopular", + "Icon": "popular", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItemNoLogo", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItem", + "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/WispDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/NekrosDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/ValkyrDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/WarframeBundles/WolfFrameBundle", + "/Lotus/Types/StoreItems/Packages/FormaPack", + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" + ] + }, { "CategoryName": "DUVIRI_PARADOX", "Name": "/Lotus/Language/Store/Store_DuviriParadox", "Icon": "duviriparadox", "AddToMenu": true, "Items": [ + "/Lotus/StoreItems/Weapons/Tenno/Melee/SwordsAndBoards/DaxDuviriMaceShieldWeapon", + "/Lotus/Types/StoreItems/Packages/Tattoo/TattooBundleDuviriB", "/Lotus/Types/StoreItems/Packages/WarframeBundles/PaxDuviricusItemsBundle", "/Lotus/Types/StoreItems/Packages/HorseCrownBundle", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/GaussDeluxeHorseAccessoriesBundle", "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit3ABundle", "/Lotus/StoreItems/Upgrades/Skins/PaxDuviricus/KullervoTwoHandedSwordSkin", - "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle" - ] - }, - { - "CategoryName": "POPULAR", - "Name": "/Lotus/Language/Menu/StorePopular", - "Icon": "popular", - "AddToMenu": true, - "Items": [ - "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItem", - "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/ZephyrDlxOperatorBundle", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/StoreItems/Powersuits/PaxDuviricus/PaxDuviricus", - "/Lotus/Types/StoreItems/Packages/NekrosDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/EmberDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/VampireKavatStarterKit", - "/Lotus/Types/StoreItems/Packages/FormaPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" + "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle" ] }, { @@ -1905,8 +1533,8 @@ "Name": "/Lotus/Language/Store/Store_PremiumBundles", "Icon": "premiumbundles", "Items": [ - "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", @@ -1919,84 +1547,68 @@ }, "Invasions": [ { - "_id": { "$oid": "64aba56adc4108eb211cf4ce" }, + "_id": { "$oid": "64cb39014adcfa624e3de76d" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode51", + "Count": -30024, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "64cb14ae25d60b426dad7c30" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 478202, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 969615, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1691040001599" } } + }, + { + "_id": { "$oid": "64cbabd9c4b26082ae03f4b4" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", "Node": "SolNode181", - "Count": -36759, - "Goal": 41000, + "Count": 6228, + "Goal": 32000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "64a438a15c82690bba01da1f" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 630071, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithReceiver", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 503172, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1688971153359" } } + "ChainID": { "$oid": "64cbabd9c4b26082ae03f4b4" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 628905, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 658384, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1691124923423" } } }, { - "_id": { "$oid": "64a9d42d2c6f2607fde359bf" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SettlementNode3", - "Count": 35249, - "Goal": 48000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64a9d42d2c6f2607fde359bf" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/TwinVipersWraithReceiver", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 1418, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/DeraVandalBlueprint", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 408470, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1688919293530" } } - }, - { - "_id": { "$oid": "64ab5235aadd8aa4a525c297" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode127", - "Count": -30072, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "64ab1b21b464ebac66cacb05" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 776594, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 318162, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1688949301919" } } - }, - { - "_id": { "$oid": "64abda258c51f909e8841ceb" }, + "_id": { "$oid": "64cbfcb50426face6023113f" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode53", - "Count": -30086, + "Count": -29082, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "64aba7c127ac32a450c4b81b" }, + "Completed": false, + "ChainID": { "$oid": "64cbbb15075d362f03094875" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 214951, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 511929, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 479771, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1688984101482" } } + "DefenderMissionInfo": { "seed": 671039, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1691090101335" } } }, { - "_id": { "$oid": "64ad5a8592d04a20de1198bb" }, + "_id": { "$oid": "64cd4f62d05c18f3ae9d3374" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode220", - "Count": -136, - "Goal": 37000, + "Node": "SolNode81", + "Count": -392, + "Goal": 42000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "64ad5a8592d04a20de1198bb" }, + "ChainID": { "$oid": "64cd4f62d05c18f3ae9d3374" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 233680, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 936025, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 674168, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1689089072159" } } + "DefenderMissionInfo": { "seed": 183354, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1691182239361" } } } ], "HubEvents": [], @@ -2004,7 +1616,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9564278 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9592559 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -2023,44 +1635,42 @@ "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1689339600000" } }, - "Expiry": { "$date": { "$numberLong": "1689512400000" } }, + "Activation": { "$date": { "$numberLong": "1691758800000" } }, + "Expiry": { "$date": { "$numberLong": "1691931600000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "MercuryHUB" + "Node": "PlutoHUB" } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1688666400000" } }, + "Activation": { "$date": { "$numberLong": "1691085600000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheePrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMiragePrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Banshee/BansheePrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfF", "PrimePrice": 2 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVIctusPrimeSentAccessories", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeHeliosPowerSuit", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/AllNew1hSG/AllNew1hSG", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Harlequin/MiragePrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtavistPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfG", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeKogake/KogakePrimeKnuckles", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeAkbolto/PrimeAkBoltoWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BansheePrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/MiragePrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoNyxPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNyxPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Rhino/RhinoPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVDistillingExtractorPrimeSet", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/NoruPrimeScarf", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Gauntlet/PrimeAnkyros/PrimeAnkyros", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBoltor/PrimeBoltor", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Jade/NyxPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTargisPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ValaPrimeMeleeDangle", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Axe/PrimeScindo/PrimeScindoWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/ThrowingWeapons/PrimeThrowingStar/PrimeHikou", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/RhinoPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NyxPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1691085600000" } }, + "Expiry": { "$date": { "$numberLong": "1694109600000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -2123,7 +1733,11 @@ "PreviewHiddenUntil": { "$date": { "$numberLong": "1687456800000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1694109600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1694109600000" } } }, + { + "Expiry": { "$date": { "$numberLong": "1694109600000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1689876000000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoNyxPrimeDualPack" + }, { "Expiry": { "$date": { "$numberLong": "1696528800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1696532400000" } } }, { "Expiry": { "$date": { "$numberLong": "1698948000000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1698948000000" } } } ] @@ -2131,167 +1745,145 @@ ], "VoidStorms": [ { - "_id": { "$oid": "64ad5bb1f7dbfff5eebd15f8" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1689085201821" } }, - "Expiry": { "$date": { "$numberLong": "1689090601821" } }, + "_id": { "$oid": "64cd622192b5de2f17f8a3a5" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1691184001821" } }, + "Expiry": { "$date": { "$numberLong": "1691189401821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fb" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1689085201829" } }, - "Expiry": { "$date": { "$numberLong": "1689090601829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "64ad5bb1f7dbfff5eebd15f9" }, - "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1689085201825" } }, - "Expiry": { "$date": { "$numberLong": "1689090601825" } }, + "_id": { "$oid": "64cd622192b5de2f17f8a3a6" }, + "Node": "CrewBattleNode515", + "Activation": { "$date": { "$numberLong": "1691184001825" } }, + "Expiry": { "$date": { "$numberLong": "1691189401825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fa" }, - "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1689085201827" } }, - "Expiry": { "$date": { "$numberLong": "1689090601827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fc" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1689085201832" } }, - "Expiry": { "$date": { "$numberLong": "1689090601832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fd" }, - "Node": "CrewBattleNode554", - "Activation": { "$date": { "$numberLong": "1689085201834" } }, - "Expiry": { "$date": { "$numberLong": "1689090601834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64ad651275833d8933e29b13" }, - "Node": "CrewBattleNode522", - "Activation": { "$date": { "$numberLong": "1689088801821" } }, - "Expiry": { "$date": { "$numberLong": "1689094201821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64ad651275833d8933e29b14" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1689088801825" } }, - "Expiry": { "$date": { "$numberLong": "1689094201825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64ad651275833d8933e29b15" }, + "_id": { "$oid": "64cd622192b5de2f17f8a3a7" }, "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1689088801827" } }, - "Expiry": { "$date": { "$numberLong": "1689094201827" } }, + "Activation": { "$date": { "$numberLong": "1691184001827" } }, + "Expiry": { "$date": { "$numberLong": "1691189401827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "64ad651275833d8933e29b16" }, - "Node": "CrewBattleNode521", - "Activation": { "$date": { "$numberLong": "1689088801829" } }, - "Expiry": { "$date": { "$numberLong": "1689094201829" } }, + "_id": { "$oid": "64cd622192b5de2f17f8a3a8" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1691184001829" } }, + "Expiry": { "$date": { "$numberLong": "1691189401829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "64ad651275833d8933e29b18" }, - "Node": "CrewBattleNode553", - "Activation": { "$date": { "$numberLong": "1689088801834" } }, - "Expiry": { "$date": { "$numberLong": "1689094201834" } }, + "_id": { "$oid": "64cd622192b5de2f17f8a3a9" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1691184001832" } }, + "Expiry": { "$date": { "$numberLong": "1691189401832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "64ad651275833d8933e29b17" }, - "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1689088801832" } }, - "Expiry": { "$date": { "$numberLong": "1689094201832" } }, + "_id": { "$oid": "64cd622192b5de2f17f8a3aa" }, + "Node": "CrewBattleNode555", + "Activation": { "$date": { "$numberLong": "1691184001834" } }, + "Expiry": { "$date": { "$numberLong": "1691189401834" } }, "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64cd7031a35193fc54282cf3" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1691187601821" } }, + "Expiry": { "$date": { "$numberLong": "1691193001821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64cd7031a35193fc54282cf4" }, + "Node": "CrewBattleNode512", + "Activation": { "$date": { "$numberLong": "1691187601825" } }, + "Expiry": { "$date": { "$numberLong": "1691193001825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64cd7031a35193fc54282cf7" }, + "Node": "CrewBattleNode536", + "Activation": { "$date": { "$numberLong": "1691187601832" } }, + "Expiry": { "$date": { "$numberLong": "1691193001832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64cd7031a35193fc54282cf6" }, + "Node": "CrewBattleNode524", + "Activation": { "$date": { "$numberLong": "1691187601829" } }, + "Expiry": { "$date": { "$numberLong": "1691193001829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "64cd7031a35193fc54282cf8" }, + "Node": "CrewBattleNode554", + "Activation": { "$date": { "$numberLong": "1691187601834" } }, + "Expiry": { "$date": { "$numberLong": "1691193001834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64cd7031a35193fc54282cf5" }, + "Node": "CrewBattleNode533", + "Activation": { "$date": { "$numberLong": "1691187601827" } }, + "Expiry": { "$date": { "$numberLong": "1691193001827" } }, + "ActiveMissionTier": "VoidT2" } ], - "PrimeAccessAvailability": { "State": "PRIME1" }, + "PrimeAccessAvailability": { "State": "PRIME2" }, "PrimeVaultAvailabilities": [false, false, false, false, false], "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Melee/Gauntlet/Gauntlet", - "Activation": { "$date": { "$numberLong": "1689037200000" } }, - "Expiry": { "$date": { "$numberLong": "1689130800000" } }, - "Discount": 30, - "OriginalPrice": 125, - "SalePrice": 87, - "AmountTotal": 125, - "AmountSold": 9 + "StoreItem": "/Lotus/StoreItems/Powersuits/Trapper/Trapper", + "Activation": { "$date": { "$numberLong": "1691096400000" } }, + "Expiry": { "$date": { "$numberLong": "1691190000000" } }, + "Discount": 50, + "OriginalPrice": 300, + "SalePrice": 150, + "AmountTotal": 100, + "AmountSold": 100 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "64a860b14248d4428ac6e7c8" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1688756401177" } }, - "endDate": { "$date": { "$numberLong": "1689361201177" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], + "_id": { "$oid": "64cd28b5574f7f8b3835e72f" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, - "PVPMode": "PVPMODE_ALL", + "PVPMode": "PVPMODE_CAPTURETHEFLAG", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" + "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64a860b14248d4428ac6e7c9" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1688756401177" } }, - "endDate": { "$date": { "$numberLong": "1689361201177" } }, - "params": [{ "n": "ScriptParamValue", "v": 20 }], + "_id": { "$oid": "64cd28b5574f7f8b3835e733" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryMEDIUM", + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, - "PVPMode": "PVPMODE_ALL", + "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" + "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64a860b14248d4428ac6e7cb" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1688756401177" } }, - "endDate": { "$date": { "$numberLong": "1689361201177" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], - "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "64a860b14248d4428ac6e7c8" }, { "$oid": "64a860b14248d4428ac6e7c9" }, { "$oid": "64a860b14248d4428ac6e7ca" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" - }, - { - "_id": { "$oid": "64a860b14248d4428ac6e7ca" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1688756401177" } }, - "endDate": { "$date": { "$numberLong": "1689361201177" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "64ad70c987228ffe420d764f" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], + "_id": { "$oid": "64cd28b5574f7f8b3835e732" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ad70c987228ffe420d7650" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "_id": { "$oid": "64cd28b5574f7f8b3835e731" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2299,10 +1891,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ad70c987228ffe420d764d" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "_id": { "$oid": "64cd28b5574f7f8b3835e730" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2310,32 +1902,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ad70c987228ffe420d7651" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64ad70c987228ffe420d764e" }, + "_id": { "$oid": "64cd28b5574f7f8b3835e734" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64ad70c987228ffe420d7652" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsEASY", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", @@ -2343,38 +1913,82 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ad70c987228ffe420d7654" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64ad70c987228ffe420d7653" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM", - "startDate": { "$date": { "$numberLong": "1689088201386" } }, - "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "_id": { "$oid": "64cd28b5574f7f8b3835e736" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsHARD", + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64cd28b5574f7f8b3835e735" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", + "startDate": { "$date": { "$numberLong": "1691166901346" } }, + "endDate": { "$date": { "$numberLong": "1691253301346" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64cd4bdd46bf2495a242982f" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", + "startDate": { "$date": { "$numberLong": "1691175901937" } }, + "endDate": { "$date": { "$numberLong": "1691780701937" } }, + "params": [{ "n": "ScriptParamValue", "v": 20 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "64cd4bdd46bf2495a2429830" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1691175901937" } }, + "endDate": { "$date": { "$numberLong": "1691780701937" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "64cd4bdd46bf2495a242982e" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", + "startDate": { "$date": { "$numberLong": "1691175901937" } }, + "endDate": { "$date": { "$numberLong": "1691780701937" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "64cd4bdd46bf2495a2429831" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1691175901937" } }, + "endDate": { "$date": { "$numberLong": "1691780701937" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], + "isGenerated": true, + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "64cd4bdd46bf2495a242982e" }, { "$oid": "64cd4bdd46bf2495a242982f" }, { "$oid": "64cd4bdd46bf2495a2429830" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [95.66978602549699, 23.79055975443198, 0], + "ProjectPct": [9.709278869396325, 54.06043574840911, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Garuda", "Baruuk", "Hildryn"] }, - { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } + { "Category": "EXC_NORMAL", "Choices": ["Ash", "Frost", "Nyx"] }, + { "Category": "EXC_HARD", "Choices": ["Boar", "Gammacor", "Anku", "Gorgon", "Angstrum"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ @@ -2394,69 +2008,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100070000000000000098" }, + "_id": { "$oid": "001100110000000000000150" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1688860800000" } }, - "Expiry": { "$date": { "$numberLong": "1689120000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCollectHundredResources" + "Activation": { "$date": { "$numberLong": "1690934400000" } }, + "Expiry": { "$date": { "$numberLong": "1691193600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTwoForOne" }, { - "_id": { "$oid": "001100080000000000000106" }, + "_id": { "$oid": "001100110000000000000151" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689206400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySlideKills" + "Activation": { "$date": { "$numberLong": "1691020800000" } }, + "Expiry": { "$date": { "$numberLong": "1691280000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyToppingOffTheTank" }, { - "_id": { "$oid": "001100080000000000000107" }, + "_id": { "$oid": "001100110000000000000152" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1689033600000" } }, - "Expiry": { "$date": { "$numberLong": "1689292800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyPickUpMedallion" + "Activation": { "$date": { "$numberLong": "1691107200000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithRadiation" }, { - "_id": { "$oid": "001100080000000000000099" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteNightmareMissions" + "_id": { "$oid": "001100110000000000000141" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteExterminate" }, { - "_id": { "$oid": "001100080000000000000100" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillArchgunEnemies" + "_id": { "$oid": "001100110000000000000142" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUseForma" }, { - "_id": { "$oid": "001100080000000000000101" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPlainsBounties" + "_id": { "$oid": "001100110000000000000143" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSpy" }, { - "_id": { "$oid": "001100080000000000000102" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRailjackHijackDestroyThree" + "_id": { "$oid": "001100110000000000000144" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUnlockDragonVaults" }, { - "_id": { "$oid": "001100080000000000000103" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteMobileDefense" + "_id": { "$oid": "001100110000000000000145" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklySimarisScan" }, { - "_id": { "$oid": "001100080000000000000104" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFallenAngel" + "_id": { "$oid": "001100110000000000000146" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsSurvival" }, { - "_id": { "$oid": "001100080000000000000105" }, - "Activation": { "$date": { "$numberLong": "1688947200000" } }, - "Expiry": { "$date": { "$numberLong": "1689552000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteNightmareMissions" + "_id": { "$oid": "001100110000000000000147" }, + "Activation": { "$date": { "$numberLong": "1690761600000" } }, + "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardRailjackMissions" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"sfn\":554}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":550}" } -- 2.47.2 From 0965a5418e5cb4213db7b015f81662cd5cdedecd Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Tue, 29 Aug 2023 20:19:10 +0200 Subject: [PATCH 030/522] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2645c066..61fd7040 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# Warframe Emulator +# Space Ninja Server More information for the moment here: [https://discord.gg/PNNZ3asUuY](https://discord.gg/PNNZ3asUuY) -- 2.47.2 From 2ed10a80c9fd886b83534034774e7a5b9d93bb52 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Tue, 29 Aug 2023 20:20:26 +0200 Subject: [PATCH 031/522] update 33.6.6 (#45) --- config.json | 8 +- static/fixed_responses/worldState.json | 2990 ++++++++++++++---------- 2 files changed, 1776 insertions(+), 1222 deletions(-) diff --git a/config.json b/config.json index 6ed21654..4a3528d4 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.08.02.16.42/WzqaOAjnMjHIa7dCmIMi3g", - "matchmakingBuildId": "7393589425820942782", - "version": "33.6.3", - "worldSeed": "HILkB4urWwjkub/+6JP0cbi8/qYU9GCC2tdstDLy8ZM6sw4Za/jk62eMcIRDWcxuPHm12I7DVftNk0iD79Kmja7lPBUJwNa/O7oQCsbEfWlTns1c4ZMOrBk8osjO2M7rTrau1VYC3A9ZBNOw+/4VjfY5aUCsybW+Jj6JWOTZdLtOOQWLjuNfuulEjxudrhf2qjh4/CMSRLE7oy/1rgSP3g2l/Gfa4ATcCeKh1RM8KEDiV9icIQ7eB5Jwt+xvay84jth5eNTKsfAV93oV2Yv8XgkCh6gVrnAXieTCbY4whJBBXFiElOs1p17HS83IJWnWa2q3FRjEbm2+kzSN2vDibg==", + "buildLabel": "2023.08.22.13.10/sNbi6ap4s+Bi3+bWHbbR-A", + "matchmakingBuildId": "8456758659036605129", + "version": "33.6.6", + "worldSeed": "amwSB56Gk/0ZYTpQ+9idAK7hqsbE0NoQtFQOTOmsdaDXD+hbhsl5cqwAEqN6l739CmDapHz8JAUgYwV+q/9Sdc681a3hvuA6rRoFkk+M+GrRjeB1A13QQb2tVSHx0eVeTvFwut3PfsYM3dbTV+ilyJgwwSQ68n7bO0OB9sJ7Ry50lmCbhx6LZH6Xc2uSCFtliqiEHMN/X+977KDR6hZEv7Us+XtTVwCOlv8GtUm4mRGbkxtmlXqpw9PZ1JGyyBIoOrkXYFOiiILF5Knd10bkT/mVFdnzbVvQZqXw6x+Cg9V5grrrYYkDYE9Jt4XT7chIUhhyLmibFG4q2nKRzlJxIw==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 9b4a6c0f..93d7baf7 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "HILkB4urWwjkub/+6JP0cbi8/qYU9GCC2tdstDLy8ZM6sw4Za/jk62eMcIRDWcxuPHm12I7DVftNk0iD79Kmja7lPBUJwNa/O7oQCsbEfWlTns1c4ZMOrBk8osjO2M7rTrau1VYC3A9ZBNOw+/4VjfY5aUCsybW+Jj6JWOTZdLtOOQWLjuNfuulEjxudrhf2qjh4/CMSRLE7oy/1rgSP3g2l/Gfa4ATcCeKh1RM8KEDiV9icIQ7eB5Jwt+xvay84jth5eNTKsfAV93oV2Yv8XgkCh6gVrnAXieTCbY4whJBBXFiElOs1p17HS83IJWnWa2q3FRjEbm2+kzSN2vDibg==", + "WorldSeed": "amwSB56Gk/0ZYTpQ+9idAK7hqsbE0NoQtFQOTOmsdaDXD+hbhsl5cqwAEqN6l739CmDapHz8JAUgYwV+q/9Sdc681a3hvuA6rRoFkk+M+GrRjeB1A13QQb2tVSHx0eVeTvFwut3PfsYM3dbTV+ilyJgwwSQ68n7bO0OB9sJ7Ry50lmCbhx6LZH6Xc2uSCFtliqiEHMN/X+977KDR6hZEv7Us+XtTVwCOlv8GtUm4mRGbkxtmlXqpw9PZ1JGyyBIoOrkXYFOiiILF5Knd10bkT/mVFdnzbVvQZqXw6x+Cg9V5grrrYYkDYE9Jt4XT7chIUhhyLmibFG4q2nKRzlJxIw==", "Version": 10, "MobileVersion": "4.15.16.0", - "BuildLabel": "2023.08.02.16.42/WzqaOAjnMjHIa7dCmIMi3g", - "Time": 1691188339, + "BuildLabel": "2023.08.22.13.10/sNbi6ap4s+Bi3+bWHbbR-A", + "Time": 1693332073, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -30,84 +30,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "62dff6238607d6b5d80876f5" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Une ressource indispensable, le Wiki FR Warframe !" }], - "Prop": "https://warframe.fandom.com/fr/wiki/Wiki_Warframe", - "Date": { "$date": { "$numberLong": "1658844600000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2022_07/image.png.f54c43d80f7da00887a7c41471884c84.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "62e4112cb40d7d395d0b880f" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Warframe Türkiye Discord - Takas Odası Kanalları!" }], - "Prop": "https://forums.warframe.com/topic/1318162-warframe-t%C3%BCrkiye-discorduna-takas-kanallar%C4%B1-eklendi/", - "Date": { "$date": { "$numberLong": "1659113580000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2022_07/image.png.2515eac966b9f03c6eabf9b7e434d684.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "62ff8739293d0365d3046528" }, - "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Que faire après avoir terminé \"Le Trophée de Vor\"" }], - "Prop": "https://forums.warframe.com/topic/1315672-guide-que-faire-apr%C3%A8s-avoir-termin%C3%A9-le-troph%C3%A9e-de-vor/", - "Date": { "$date": { "$numberLong": "1660913400000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0bd16bb52c55ec09ca1168becb87b030.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "634d7f2f5c1c0e405d05254f" }, - "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Intro aux Chasses aux Archontes" }], - "Prop": "https://forums.warframe.com/topic/1328159-guide-introduction-aux-chasses-aux-archontes/", - "Date": { "$date": { "$numberLong": "1666023180000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8c34580f18d0a489c282192bfc2a810b_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { "_id": { "$oid": "63a23acc1336bb81640a63dd" }, "Messages": [], "Prop": "", "Date": { "$date": { "$numberLong": "1671576240000" } }, "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "63c84f910ee5a50a18071a24" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Sentient Rehberi" }], - "Prop": "https://forums.warframe.com/topic/1337858-sentient-rehberi/", - "Date": { "$date": { "$numberLong": "1674071820000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64134e23bf2682c23b0214ad" }, - "Messages": [{ "LanguageCode": "es", "Message": "Programas de terceros y tú" }], - "Prop": "https://forums.warframe.com/topic/1343097-programas-de-terceros-y-t%C3%BA/", - "Date": { "$date": { "$numberLong": "1678986720000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "642ca76911f9a53a5006bac6" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Créez votre masque du Paradoxe Duviri !" }], - "Prop": "https://forums.warframe.com/topic/1344657-cr%C3%A9ez-votre-propre-masque-du-paradoxe-duviri/", - "Date": { "$date": { "$numberLong": "1680648000000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/c28ced01aaf966b9222f4a6ed5a7a7fd_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64494dc72c44d78bab079685" }, - "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33: 두비리의 역설" }], - "Prop": "", - "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1346037-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-33-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%97%AD%EC%84%A4/" }], - "Date": { "$date": { "$numberLong": "1682525580000" } }, - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "6466726e06ca85f0e202e343" }, "Messages": [ @@ -150,640 +72,523 @@ "MobileOnly": false }, { - "_id": { "$oid": "646e6a4cf16914573401c77b" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Nora’nın Derlemesi - 3. Seri Tamamlandı + 4. Seri Sizlerle!" }], - "Prop": "https://forums.warframe.com/topic/1354223-nora%E2%80%99n%C4%B1n-derlemesi-seri-3-tamamland%C4%B1-seri-4-24-may%C4%B1s%E2%80%99ta-sizlerle/", - "Date": { "$date": { "$numberLong": "1684957500000" } }, + "_id": { "$oid": "64ea09d36553b9e03803ea9f" }, + "Messages": [{ "LanguageCode": "tr", "Message": "TennoCon 2023 Öncesi Twitch Bağlantını Yenilemeyi Unutma!" }], + "Prop": "https://forums.warframe.com/topic/1364347-tennocon-2023-%C3%B6ncesi-twitch-ba%C4%9Flant%C4%B1n%C4%B1-yenilemeyi-unutma/", + "Date": { "$date": { "$numberLong": "1693059420000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "64a718d5d0f273eec4094531" }, - "Messages": [{ "LanguageCode": "ja", "Message": "[重要]エンドユーザー使用許諾契約が改定されます" }], - "Prop": "https://bit.ly/46OHtxo", - "Date": { "$date": { "$numberLong": "1688672400000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64b7fb5e1f25a586ae0334f5" }, + "_id": { "$oid": "64ea0cced1fbb68cf30a1483" }, "Messages": [ - { "LanguageCode": "en", "Message": "Start playing Recall: Ten-Zero now!" }, - { "LanguageCode": "fr", "Message": "Commencez le Rappel: Ten-Zero !" }, - { "LanguageCode": "it", "Message": "Inizia ora a giocare alla Rievocazione: Ten-Zero!" }, - { "LanguageCode": "de", "Message": "Spielt jetzt \"Rückruf: Ten-Zero!\"" }, - { "LanguageCode": "es", "Message": "¡Empieza a jugar Recuerdo: Diez-Cero ahora!" }, - { "LanguageCode": "pt", "Message": "Comece a jogar a Reiteração: 10-0 agora mesmo!" }, - { "LanguageCode": "ru", "Message": "Играйте в «Воспоминания: Десять-ноль» прямо сейчас!" }, - { "LanguageCode": "pl", "Message": "Zacznijcie grać w Powrót: Ten-Zero już teraz!" }, - { "LanguageCode": "uk", "Message": "Грайте в «Спогад: 10-0» уже зараз!" }, - { "LanguageCode": "tr", "Message": "Geri Dönüş: Ten-Zero oynamaya hemen başla!" }, - { "LanguageCode": "ja", "Message": "「リコール:Ten-Zero」開催!" }, - { "LanguageCode": "zh", "Message": "现在就开始游玩「追忆:10-0」吧!" }, - { "LanguageCode": "ko", "Message": "회상: 10-0을 지금 시작해 보세요!" }, - { "LanguageCode": "tc", "Message": "現在就開始遊玩「召回:10-0」!" } + { "LanguageCode": "en", "Message": "Pre-order TennoCon 2023 Merch today!" }, + { "LanguageCode": "fr", "Message": "Précommandez les Produits TC 2023 !" }, + { "LanguageCode": "it", "Message": "Preordina il Merch TennoCon 2023 oggi stesso!" }, + { "LanguageCode": "de", "Message": "Bestellt das TennoCon 2023-Merch noch heute vor!" }, + { "LanguageCode": "es", "Message": "¡Reserva los productos de la TennoCon 2023 hoy mismo!" }, + { "LanguageCode": "pt", "Message": "Pré-encomende o Pacote de Produtos da TennoCon 2023 hoje mesmo!" }, + { "LanguageCode": "pl", "Message": "Przedsprzedaż Gadżetów TennoCon 2023!" }, + { "LanguageCode": "tr", "Message": "TennoCon 2023 Ürünleri için hemen ön sipariş ver!" }, + { "LanguageCode": "ja", "Message": "TennoCon 2023グッズを予約しよう!" }, + { "LanguageCode": "zh", "Message": "立即预购 TennoCon 2023 周边商品!" }, + { "LanguageCode": "ko", "Message": "오늘 텐노콘 2023 상품들을 예약 주문하세요!" }, + { "LanguageCode": "tc", "Message": "今天就預購 TennoCon 2023 周邊商品!" } ], - "Prop": "https://www.warframe.com/news/recall-ten-zero?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Recall-Ten-Zero", - "Date": { "$date": { "$numberLong": "1689778800000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/baa9e66a04fc62a51091a8e3d7e877a0_1600x900.png", + "Prop": "https://store.warframe.com/collections/tennocon-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-Merch-TennoCon2023Collection", + "Date": { "$date": { "$numberLong": "1693059960000" } }, + "EventStartDate": { "$date": { "$numberLong": "1693058400000" } }, + "ImageUrl": "https://store.warframe.com/cdn/shop/files/Tennocon-2023-Product-Images-MerchPack_720x.png?v=1688652822", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64b7fce2cb60ec1d6d0b0ef9" }, + "_id": { "$oid": "64ea160dc38675eb560a3c5e" }, "Messages": [ - { "LanguageCode": "en", "Message": "Pre-Order your TennoCon 2023 merch" }, - { "LanguageCode": "fr", "Message": "Précommandez vos Produits Dérivés TennoCon 2023" }, - { "LanguageCode": "it", "Message": "Preordina il tuo merch TennoCon 2023" }, - { "LanguageCode": "de", "Message": "Bestellt euren TennoCon 2023 Merch vor" }, - { "LanguageCode": "es", "Message": "Reserva tus productos de TennoCon 2023" }, - { "LanguageCode": "pt", "Message": "Pré-encomende os seus Produtos da TennoCon 2023" }, - { "LanguageCode": "ru", "Message": "Оформите предзаказ товаров TennoCon 2023" }, - { "LanguageCode": "pl", "Message": "Zamówcie Gadżety TennoCon 2023 w przedsprzedaży" }, - { "LanguageCode": "uk", "Message": "Передзамовте собі рекламні товари «Теннокон 2023»" }, - { "LanguageCode": "tr", "Message": "TennoCon 2023 ürünlerin için Ön Sipariş ver" }, - { "LanguageCode": "ja", "Message": "TennoCon 2023グッズパックを予約購入" }, - { "LanguageCode": "zh", "Message": "预购 TennoCon 2023 周边商品" }, - { "LanguageCode": "ko", "Message": "텐노콘 2023 굿즈를 예약 주문하세요" } + { "LanguageCode": "en", "Message": "Make a splash during Dog Days!" }, + { "LanguageCode": "fr", "Message": "Faites des vagues lors des Batailles d'eau!" }, + { "LanguageCode": "it", "Message": "Fai un tuffo durante i Dog Days!" }, + { "LanguageCode": "de", "Message": "Sorgt bei Hitzefrei für Furore!" }, + { "LanguageCode": "es", "Message": "¡Date un chapuzón durante Canícula!" }, + { "LanguageCode": "pt", "Message": "Refresque-se durante os Dias de Cão!" }, + { "LanguageCode": "ru", "Message": "Освежитесь во время «Знойных дней»!" }, + { "LanguageCode": "pl", "Message": "Plażowe szaleństwo podczas Kanikuł!" }, + { "LanguageCode": "uk", "Message": "Зробіть сплеск під час «Спекотних днів»!" }, + { "LanguageCode": "tr", "Message": "Dog Days ile ıslanmaya hazır ol!" }, + { "LanguageCode": "ja", "Message": "ドッグ・デイズで水しぶきをあげよう!" }, + { "LanguageCode": "zh", "Message": "在三伏天中掀起波澜!" }, + { "LanguageCode": "ko", "Message": "도그 데이즈 미션 동안 물놀이를 즐겨보세요!" }, + { "LanguageCode": "tc", "Message": "在三伏天期間讓水花四濺!" } ], - "Prop": "https://store.warframe.com/products/tennocon-2023-merch-pack?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Merch-Tennocon-MerchPack", - "Date": { "$date": { "$numberLong": "1689778980000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/3fa3a69cd023866dbb97f31081c8dc40_1600x900.png", + "Prop": "https://www.warframe.com/news/dog-days-has-returned?utm_medium=in-game&utm_source=in-game&utm_campaign=2023--08-DogDaysRerun", + "Date": { "$date": { "$numberLong": "1693061880000" } }, + "EventStartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EventEndDate": { "$date": { "$numberLong": "1694613600000" } }, "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64b7ff3db82a88ebc108284e" }, + "_id": { "$oid": "64ea1bc4e6d27d23b508a350" }, "Messages": [ - { "LanguageCode": "en", "Message": "TennoCon Giveaways and Digital Extras" }, - { "LanguageCode": "fr", "Message": "Giveaways et extras numériques TennoCon" }, - { "LanguageCode": "it", "Message": "Giveaway ed Extra Digitali TennoCon" }, - { "LanguageCode": "de", "Message": "TennoCon Giveaways & Digitale Extras" }, - { "LanguageCode": "es", "Message": "Sorteos y extras digitales de TennoCon" }, - { "LanguageCode": "pt", "Message": "Brindes e Extras Digitais da TennoCon" }, - { "LanguageCode": "ru", "Message": "Розыгрыши и Цифровые Дополнения TennoCon" }, - { "LanguageCode": "pl", "Message": "Rozdania nagród i Dodatki Cyfrowe TennoCon" }, - { "LanguageCode": "uk", "Message": "Розіграші подарунків та цифрові доповнення Теннокону" }, - { "LanguageCode": "tr", "Message": "TennoCon Çekilişler ve Dijital Ekstralar" }, - { "LanguageCode": "ja", "Message": "TennoConプレゼント企画とデジタルエキストラ" }, - { "LanguageCode": "zh", "Message": "TennoCon 赠礼以及数字附加内容" }, - { "LanguageCode": "ko", "Message": "텐노콘 경품 행사 및 디지털 엑스트라" }, - { "LanguageCode": "tc", "Message": "TennoCon 贈禮以及額外數位物品" } + { "LanguageCode": "en", "Message": "Warframe Excalibur Custom PC Giveaway" }, + { "LanguageCode": "fr", "Message": "Tirage de PC Warframe personnalisé Excalibur" }, + { "LanguageCode": "it", "Message": "Giveaway PC Personalizzato Warframe Excalibur" }, + { "LanguageCode": "de", "Message": "Gewinnspiel: Individueller Warframe Excalibur PC" }, + { "LanguageCode": "es", "Message": "Sorteo de PC personalizada Excalibur de Warframe" }, + { "LanguageCode": "pt", "Message": "Sorteio de PC Personalizado do Excalibur do Warframe" }, + { "LanguageCode": "ru", "Message": "Розыгрыш ПК «Экскалибур» от Warframe" }, + { "LanguageCode": "pl", "Message": "Rozdanie PC personalizowanego dla Warframe Excalibur" }, + { "LanguageCode": "uk", "Message": "Розіграш ПК «Екскалібур» від Warframe" }, + { "LanguageCode": "tr", "Message": "Warframe Excalibur Özel PC Çekilişi" }, + { "LanguageCode": "ja", "Message": "Warframe Excalibur カスタムPCプレゼントキャンペーン" }, + { "LanguageCode": "zh", "Message": "Warframe Excalibur 的定制 PC 赠礼" }, + { "LanguageCode": "ko", "Message": "워프레임 엑스칼리버 커스텀 PC 경품 행사" }, + { "LanguageCode": "tc", "Message": "Warframe Excalibur 自訂 PC 贈禮活動" } ], - "Prop": "https://www.warframe.com/news/tennocon-2023-giveaways-and-digital-extras?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Giveaways-and-Digital-Extras", - "Date": { "$date": { "$numberLong": "1689779400000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/c112a734a10d3fa83dec4cb06c0c1d1b_800x450.png", + "Prop": "https://www.warframe.com/news/warframe-excalibur-custom-pc-giveaway?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-JMDFGiveawayLaunch", + "Date": { "$date": { "$numberLong": "1693063620000" } }, + "EventStartDate": { "$date": { "$numberLong": "1693063800000" } }, "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64b800f696be9f767602a910" }, + "_id": { "$oid": "64ea3eea8df44dcb460a8564" }, "Messages": [ - { "LanguageCode": "en", "Message": "Countdown to TennoCon 2023" }, - { "LanguageCode": "fr", "Message": "Compte à rebours pour la TennoCon 2023 " }, - { "LanguageCode": "it", "Message": "Conto alla rovescia al TennoCon 2023" }, - { "LanguageCode": "de", "Message": "Countdown zur TennoCon 2023" }, - { "LanguageCode": "es", "Message": "Cuenta regresiva para la TennoCon 2023" }, - { "LanguageCode": "pt", "Message": "Contagem regressiva para a TennoCon 2023" }, - { "LanguageCode": "ru", "Message": "Обратный отсчёт к TennoCon 2023" }, - { "LanguageCode": "pl", "Message": "Odliczanie do TennoCon 2023" }, - { "LanguageCode": "uk", "Message": "Зворотний відлік до Теннокону 2023" }, - { "LanguageCode": "tr", "Message": "TennoCon 2023 için Geri Sayım" }, - { "LanguageCode": "ja", "Message": "TennoCon 2023カウントダウン" }, - { "LanguageCode": "zh", "Message": "TennoCon 2023 倒计时" }, - { "LanguageCode": "ko", "Message": "텐노콘 2023 카운트다운" }, - { "LanguageCode": "tc", "Message": "TennoCon 2023 倒數" } + { "LanguageCode": "en", "Message": "Prestigious Heirloom Collections Now Available" }, + { "LanguageCode": "fr", "Message": "Collections Héritage disponibles maintenant" }, + { "LanguageCode": "it", "Message": "Le Prestigiose Collezioni Heirloom sono Ora Disponibili" }, + { "LanguageCode": "de", "Message": "Renommierte Heirloom-Kollektionen sind jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "Las prestigiosas colecciones Legado ya están disponibles" }, + { "LanguageCode": "pt", "Message": "As prestigiosas Coleções do Legado já estão disponíveis" }, + { "LanguageCode": "ru", "Message": "Престижные коллекции «Наследие» теперь доступны" }, + { "LanguageCode": "pl", "Message": "Prestiżowe Kolekcje Pamiątkowe są już dostępne" }, + { "LanguageCode": "uk", "Message": "Престижні колекції серії «Спадок» уже доступні" }, + { "LanguageCode": "tr", "Message": "Prestijli Heirloom Koleksiyonları Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "限定Heirloomコレクションが登場" }, + { "LanguageCode": "zh", "Message": "著名的传家宝组合包现已登场" }, + { "LanguageCode": "ko", "Message": "품격 넘치는 에어룸 컬렉션을 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "著名獨家祖傳組合包現已登場" } ], - "Prop": "https://www.warframe.com/tennocon?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-TennoCon-", - "Date": { "$date": { "$numberLong": "1689780000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/f5cf830e636dcc1f0d42105a1bd99ade_1600x900.png", + "Prop": "https://www.warframe.com/heirloom?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-HeirloomPackLaunch", + "Date": { "$date": { "$numberLong": "1693072740000" } }, "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64b989b4820b83cc5406201d" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Temel modlama part:1" }], - "Prop": "https://forums.warframe.com/topic/1360789-temel-modlama-part1/", - "Date": { "$date": { "$numberLong": "1689880920000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64bfe5f8a5bf96a8ae0e2079" }, + "_id": { "$oid": "64ea487f4d892bae270da1e1" }, "Messages": [ - { "LanguageCode": "en", "Message": "Watch Now: Wisp Prime Access Trailer" }, - { "LanguageCode": "fr", "Message": "Regardez : trailer Wisp Prime" }, - { "LanguageCode": "it", "Message": "Guarda Ora: Trailer dell'Accesso Wisp Prime" }, - { "LanguageCode": "de", "Message": "Jetzt ansehen: Wisp Prime Access-Trailer" }, - { "LanguageCode": "es", "Message": "Mira ahora: Tráiler de Prime Access de Wisp" }, - { "LanguageCode": "pt", "Message": "Assista Agora: Trailer do Prime Access da Wisp Prime" }, - { "LanguageCode": "ru", "Message": "Смотрите прямо сейчас: трейлер «Доступ Висп Прайм»" }, - { "LanguageCode": "pl", "Message": "Obejrzyj teraz: Zwiastun Wisp Prime Access" }, - { "LanguageCode": "uk", "Message": "Дивіться зараз: Вісп-прайм" }, - { "LanguageCode": "tr", "Message": "Şimdi İzle: Wisp Prime Access Fragmanı" }, - { "LanguageCode": "ja", "Message": "「Wisp Prime Access」トレイラーを今すぐチェック" }, - { "LanguageCode": "zh", "Message": "立即观看:Wisp Prime Access 预告片" }, - { "LanguageCode": "ko", "Message": "지금 바로 시청하기: 위습 프라임 액세스 트레일러" }, - { "LanguageCode": "tc", "Message": "立即觀看:Wisp Prime Access 預告" } + { "LanguageCode": "en", "Message": "Mag Prime and Frost Prime are back!" }, + { "LanguageCode": "fr", "Message": "Mag Prime et Frost Prime sont là !" }, + { "LanguageCode": "it", "Message": "Mag Prime e Frost Prime sono tornati!" }, + { "LanguageCode": "de", "Message": "Mag Prime und Frost Prime sind zurück!" }, + { "LanguageCode": "es", "Message": "¡Mag Prime y Frost Prime están de vuelta!" }, + { "LanguageCode": "pt", "Message": "A Mag Prime e o Frost Prime estão de volta!" }, + { "LanguageCode": "ru", "Message": "Мэг Прайм и Фрост Прайм возвращаются!" }, + { "LanguageCode": "pl", "Message": "Mag Prime i Frost Prime powrócili!" }, + { "LanguageCode": "uk", "Message": "Меґ-прайм і Фрост-прайм повертаються!" }, + { "LanguageCode": "tr", "Message": "Mag Prime ve Frost Prime geri döndü!" }, + { "LanguageCode": "ja", "Message": "Mag PrimeとFrost Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Mag Prime 和 Frost Prime 现已回归!" }, + { "LanguageCode": "ko", "Message": "매그 프라임과 프로스트 프라임이 돌아왔습니다!" }, + { "LanguageCode": "tc", "Message": "Mag Prime 以及 Frost Prime 現已回歸!" } ], - "Prop": "https://www.youtube.com/watch?v=eMlX3isbMBE?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Wisp-Prime-Access-Trailer", - "Date": { "$date": { "$numberLong": "1690297200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/81e05bfbd34036ef9c86e86fe70611e3_1600x900.png", + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-TennoConPrimeResurgence", + "Date": { "$date": { "$numberLong": "1693075440000" } }, "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64c28d56bf105de0bb0f2fbd" }, - "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 33.6: Echa Duviri - notki po polsku!" }], - "Prop": "https://forums.warframe.com/topic/1361255-aktualizacja-336-echa-duviri/", - "Date": { "$date": { "$numberLong": "1690471680000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/c9d3e3370ed3264c3462dcab3439b5f7.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64c28dbd659754ff7e09b044" }, - "Messages": [{ "LanguageCode": "en", "Message": "Update 33.6.0: Echoes of Duviri!" }], - "Prop": "https://www.warframe.com/updates/pc/33-6-0", - "Date": { "$date": { "$numberLong": "1690471800000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "64c2952035896c34470ff7db" }, + "_id": { "$oid": "64ea79865e9a1409f8042695" }, "Messages": [ - { "LanguageCode": "en", "Message": "Wisp Prime Access is now available!" }, - { "LanguageCode": "fr", "Message": "Prime Access Wisp Prime disponible !" }, - { "LanguageCode": "it", "Message": "L'Accesso Wisp Prime è ora disponibile!" }, - { "LanguageCode": "de", "Message": "Wisp Prime Access ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡Prime Access de Wisp ya está disponible!" }, - { "LanguageCode": "pt", "Message": "O Prime Access da Wisp Prime já está disponível!" }, - { "LanguageCode": "ru", "Message": "Доступ к Висп Прайм теперь открыт!" }, - { "LanguageCode": "pl", "Message": "Wisp Prime Access już dostępny!" }, - { "LanguageCode": "uk", "Message": "Вісп-прайм уже доступна!" }, - { "LanguageCode": "tr", "Message": "Wisp Prime Access şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "Wisp Prime Accessが登場!" }, - { "LanguageCode": "zh", "Message": "Wisp Prime Access 现已登场!" }, - { "LanguageCode": "ko", "Message": "위습 프라임 액세스를 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "Wisp Prime Access 現已登場!" } + { "LanguageCode": "en", "Message": "Abyss of Dagath coming October 2023" }, + { "LanguageCode": "fr", "Message": "Les Abysses de Dagath - octobre 2023" }, + { "LanguageCode": "it", "Message": "Abisso di Dagath - in arrivo a Ottobre 2023" }, + { "LanguageCode": "de", "Message": "Der Abgrund von Dagath erscheint im Oktober 2023" }, + { "LanguageCode": "es", "Message": "«Abismo de Dagath» llegará en octubre de 2023" }, + { "LanguageCode": "pt", "Message": "O Abismo de Dagath chegará em outubro de 2023" }, + { "LanguageCode": "ru", "Message": "«Бездна Дагас» выйдет в октябре 2023 года" }, + { "LanguageCode": "pl", "Message": "Otchłań Dagath przybywa w październiku 2023" }, + { "LanguageCode": "uk", "Message": "«Безодня Даґат» з’явиться в жовтні 2023 року" }, + { "LanguageCode": "tr", "Message": "Abyss of Dagath Ekim 2023'te sizlerle" }, + { "LanguageCode": "ja", "Message": "アップデート「Dagathの深淵」が2023年10月に実装" }, + { "LanguageCode": "zh", "Message": "《Abyss of Dagath》将于 2023 年 10 月推出" }, + { "LanguageCode": "ko", "Message": "다가스의 나락이 2023년 10월에 찾아옵니다" }, + { "LanguageCode": "tc", "Message": "《Dagath 的深淵》將於 2023 年 10 月登場" } ], - "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Wisp-Prime-Launch", - "Date": { "$date": { "$numberLong": "1690470000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/81e05bfbd34036ef9c86e86fe70611e3_1600x900.png", + "Prop": "https://www.warframe.com/news/abyss-of-dagath-coming-october-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-AbyssofDagathComingin2023Announce", + "Date": { "$date": { "$numberLong": "1693088040000" } }, "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64c2b19efdccd1fe8805e778" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Echoes of Duviri Now Available" }, - { "LanguageCode": "fr", "Message": "La màj \"Échos de Duviri\" est là !" }, - { "LanguageCode": "it", "Message": "Echi di Duviri - Ora Disponibile" }, - { "LanguageCode": "de", "Message": "Echos von Duviri ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "Ecos de Duviri ya está disponible" }, - { "LanguageCode": "pt", "Message": "A atualização Ecos de Duviri já está disponível" }, - { "LanguageCode": "ru", "Message": "Отголоски Дувири уже доступны" }, - { "LanguageCode": "pl", "Message": "Echa Duviri już dostępne" }, - { "LanguageCode": "uk", "Message": "«Відлуння Дувірі» вже доступне" }, - { "LanguageCode": "tr", "Message": "Echoes of the Duviri Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "アップデート.「デュヴィリの再演」が登場" }, - { "LanguageCode": "zh", "Message": "《双衍回响》现已登场" }, - { "LanguageCode": "ko", "Message": "두비리의 잔향을 지금 바로 만나보세요" }, - { "LanguageCode": "tc", "Message": "《Duviri 迴響》現已登場" } - ], - "Prop": "https://www.warframe.com/news/echoes-of-duviri?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-07-Echoes-of-Duviri", - "Date": { "$date": { "$numberLong": "1690480800000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/cac13197a9ec34ad1bdc3920683cc61d_1600x900.png", + "_id": { "$oid": "64eaadcefca369eee60e01fa" }, + "Messages": [{ "LanguageCode": "en", "Message": "Watch the Full TennoLive Demo!" }], + "Prop": "https://www.youtube.com/watch?v=EZEevs_RSPw?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-WatchtheFullTennoLiveDemo", + "Date": { "$date": { "$numberLong": "1693101240000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/5bfdf272bdb52e0ec103206919671b6a_800x450.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64c2b9c64c7fc1e1f9035fa9" }, - "Messages": [{ "LanguageCode": "tr", "Message": "Cuma Topluluk Dropları - 28 Temmuz!" }], - "Prop": "https://forums.warframe.com/topic/1361341-cuma-topluluk-droplar%C4%B1-28-temmuz/", - "Date": { "$date": { "$numberLong": "1690483080000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64c2e0f67e978150e70c7bdb" }, - "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33.6: 두비리의 잔향" }], - "Prop": "", - "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1361269-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-336-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%9E%94%ED%96%A5/" }], - "Date": { "$date": { "$numberLong": "1690493100000" } }, + "_id": { "$oid": "64eaae440d919f8a69068598" }, + "Messages": [{ "LanguageCode": "en", "Message": "All the reveals from TennoCon 2023" }], + "Prop": "https://www.warframe.com/news/tennocon-2023-recap?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-TennoConRecap", + "Date": { "$date": { "$numberLong": "1693101540000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/7a6ff188d098ff16289abf4b73e727f_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64c2e234648077a3c70ff42a" }, - "Messages": [{ "LanguageCode": "uk", "Message": "ОНОВЛЕННЯ 33.6.0: ВІДЛУННЯ ДУВІРІ" }], - "Prop": "https://forums.warframe.com/topic/1361397-%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-3360-%D0%B2%D1%96%D0%B4%D0%BB%D1%83%D0%BD%D0%BD%D1%8F-%D0%B4%D1%83%D0%B2%D1%96%D1%80%D1%96/", - "Date": { "$date": { "$numberLong": "1690493400000" } }, - "Icon": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/5ebc66a3511c304642c97c699753fb03.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64c555d849bd2d721e0e7173" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Les Échos de Duviri - Bugs" }], - "Prop": "https://forums.warframe.com/topic/1361737-psa-les-%C3%A9chos-de-duviri-bugs/", - "Date": { "$date": { "$numberLong": "1690653960000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64c95f55455a4d671e09771f" }, - "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.2" }], - "Prop": "https://forums.warframe.com/topic/1362311-ecos-de-duviri-revisi%C3%B3n-3362/", - "Date": { "$date": { "$numberLong": "1690918680000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64ca9c5fbe665e26a20dee62" }, - "Messages": [{ "LanguageCode": "en", "Message": "Friday Community Twitch Drops: August 4!" }], - "Prop": "https://forums.warframe.com/topic/1362415-community-friday-drops-august-4th/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-fridaydrops-04", - "Date": { "$date": { "$numberLong": "1690999860000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64caa8a0338d02d7ff045985" }, - "Messages": [{ "LanguageCode": "ja", "Message": "金曜コミュニティDrops! - 日本時間8月5日" }], - "Prop": "https://bit.ly/3DGnHqw", - "Date": { "$date": { "$numberLong": "1691002980000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_08/image.png.998cc0a7a4afff133e24c086b22efcb0.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64cbf15455d526056f034df2" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Nyx Prime and Rhino Prime are back!" }, - { "LanguageCode": "fr", "Message": "Nyx Prime et Rhino Prime reviennent" }, - { "LanguageCode": "it", "Message": "Nyx Prime e Rhino Prime sono tornati!" }, - { "LanguageCode": "de", "Message": "Nyx Prime und Rhino Prime sind zurück!" }, - { "LanguageCode": "es", "Message": "¡Nyx Prime y Rhino Prime están de vuelta!" }, - { "LanguageCode": "pt", "Message": "A Nyx Prime e o Rhino Prime estão de volta!" }, - { "LanguageCode": "ru", "Message": "Никс Прайм и Рино Прайм возвращаются!" }, - { "LanguageCode": "pl", "Message": "Nyx Prime i Rhino Prime powrócili!" }, - { "LanguageCode": "uk", "Message": "Нікс-прайм і Райно-прайм повертаються!" }, - { "LanguageCode": "tr", "Message": "Nyx Prime ve Rhino Prime geri döndü!" }, - { "LanguageCode": "ja", "Message": "Nyx PrimeとRhino Primeが復帰!" }, - { "LanguageCode": "zh", "Message": "Nyx Prime 和 Rhino Prime 现已回归!" }, - { "LanguageCode": "ko", "Message": "닉스 프라임과 라이노 프라임이 돌아왔습니다!" }, - { "LanguageCode": "tc", "Message": "Nyx Prime 以及 Rhino Prime 回歸了!" } - ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-Nyx-and-Rhino-Prime-Resurgence", - "Date": { "$date": { "$numberLong": "1691089200000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/prime-resurgence/rotations/nyx-rhino/masthead-keyart-desktop.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64cbf78deab8cb28650a60b7" }, - "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.3" }], - "Prop": "https://www.warframe.com/updates/pc/33-6-3", - "Date": { "$date": { "$numberLong": "1691088720000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64cc032c13dd3ceccb004187" }, - "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.3" }], - "Prop": "https://forums.warframe.com/topic/1362558-ecos-de-duviri-revisi%C3%B3n-3363/", - "Date": { "$date": { "$numberLong": "1691091720000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64cc2cf4259ccbc9bb0e44ca" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Get the Akjagara Iridos Weapon Bundle" }, - { "LanguageCode": "fr", "Message": "Obtenez le Bundle d'arme Akjagara Iridos" }, - { "LanguageCode": "it", "Message": "Ottieni il Pacchetto Arma Akjagara Iridos" }, - { "LanguageCode": "de", "Message": "Holt euch das Waffen-Paket: Akjagara Iridos" }, - { "LanguageCode": "es", "Message": "Obtén el Paquete de arma Akjagara Iridos" }, - { "LanguageCode": "pt", "Message": "Obtenha o Conjunto da Arma Akjagara Iridos" }, - { "LanguageCode": "ru", "Message": "Получите набор оружия «Акджагара Иридос»" }, - { "LanguageCode": "pl", "Message": "Zdobądź zestaw broni: Akjagara Iridos" }, - { "LanguageCode": "uk", "Message": "Отримайте комплект «Іридій» для Акджаґари" }, - { "LanguageCode": "tr", "Message": "Akjagara Iridos Silah Paketini Hemen Al" }, - { "LanguageCode": "ja", "Message": "Akjagara Iridos武器バンドルをゲット" }, - { "LanguageCode": "zh", "Message": "获取觉醒双枪炫彩武器组合包" }, - { "LanguageCode": "ko", "Message": "Get the Akjagara Iridos Weapon Bundle" }, - { "LanguageCode": "tc", "Message": "獲取覺醒雙槍虹彩武器組合包" } - ], - "Prop": "https://www.warframe.com/news/prime-gaming-iridos-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-Prime-Gaming-Drop-10", - "Date": { "$date": { "$numberLong": "1691089200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/09d1b7b527383e3c8b4ca2ef914353ac_1600x900.png", + "_id": { "$oid": "64ecb4895cc1d9f6570ad996" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Résumé TennoCon 2023 - version FR" }], + "Prop": "https://forums.warframe.com/topic/1364683-r%C3%A9sum%C3%A9-tennocon-2023-version-fr/", + "Date": { "$date": { "$numberLong": "1693234200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/2b90772068288612d6e81acbca5076c0_1600x900.png", "Priority": false, "MobileOnly": false } ], "Goals": [ { - "_id": { "$oid": "64c7c865706412146f097c26" }, - "Activation": { "$date": { "$numberLong": "1691074800000" } }, - "Expiry": { "$date": { "$numberLong": "1691679540000" } }, + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1692201600000" } }, + "Expiry": { "$date": { "$numberLong": "1693411200000" } }, + "Node": "SolNode129", + "ScoreVar": "FissuresClosed", + "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", + "Count": 20, + "HealthPct": 0.2, + "Regions": [1], + "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", + "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", + "OptionalInMission": true, + "Tag": "HeatFissure", + "UpgradeIds": [{ "$oid": "64dbcd89a52b0821bd62d4ff" }, { "$oid": "64dbcd89a52b0821bd62d500" }], + "Personal": true, + "Community": true, + "Goal": 100, + "Reward": { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], "countedItems": [] }, + "InterimGoals": [5, 25, 50, 75], + "InterimRewards": [ + { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], "countedItems": [] }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], + "countedItems": [] + }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], + "countedItems": [] + }, + { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], "countedItems": [] } + ] + }, + { + "_id": { "$oid": "64c40eb98d92df18906c172f" }, + "Activation": { "$date": { "$numberLong": "1693062000000" } }, + "Expiry": { "$date": { "$numberLong": "1693666800000" } }, "Count": 0, - "Goal": 1, + "Goal": 0, "Success": 0, "Personal": true, + "Faction": "FC_GRINEER", + "Desc": "/Lotus/Language/Locations/RelayStationTennoCon", + "ToolTip": "/Lotus/Language/Locations/RelayStationTennoConDesc", + "Icon": "/Lotus/Interface/Icons/Sigils/TennoCon2023Sigil.png", + "Tag": "TennoConRelay", + "Node": "TennoConHUB2" + }, + { + "_id": { "$oid": "64e8cb4d0e968b698e15eb98" }, + "Activation": { "$date": { "$numberLong": "1693062000000" } }, + "Expiry": { "$date": { "$numberLong": "1695654000000" } }, + "Count": 0, + "Goal": 100, + "InterimGoals": [25, 50], + "BonusGoal": 200, + "Success": 0, + "Personal": true, + "Bounty": true, "ClampNodeScores": true, - "Node": "EventNode27", - "MissionKeyName": "/Lotus/Types/Keys/TenYearAnniversary/TacAlertKeyTenYearAnniversaryM4A", - "Desc": "/Lotus/Language/Events/TenYearAnnniversaryEventTitleA", - "Icon": "/Lotus/Interface/Icons/Player/TennconPinGlyph.png", - "Tag": "TenYearM4A", - "Reward": { "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/GlassmakerBobbleHead"] } - }, - { - "_id": { "$oid": "64c7c8a7215ffa1585030db2" }, - "Activation": { "$date": { "$numberLong": "1691074800000" } }, - "Expiry": { "$date": { "$numberLong": "1691679540000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "Node": "EventNode24", - "MissionKeyName": "/Lotus/Types/Keys/TenYearAnniversary/TacAlertKeyTenYearAnniversaryM4B", - "Desc": "/Lotus/Language/Events/TenYearAnnniversaryEventTitleB", - "Icon": "/Lotus/Interface/Icons/Player/TennconPinGlyph.png", - "Tag": "TenYearM4B", - "PrereqGoalTags": ["TenYearM4A"], - "Reward": { "items": ["/Lotus/StoreItems/Types/Items/MiscItems/Forma"] } - }, - { - "_id": { "$oid": "64c7c8ebc5ebf4690206e34b" }, - "Activation": { "$date": { "$numberLong": "1691074800000" } }, - "Expiry": { "$date": { "$numberLong": "1691679540000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "Node": "EventNode29", - "MissionKeyName": "/Lotus/Types/Keys/TenYearAnniversary/TacAlertKeyTenYearAnniversaryM4C", - "Desc": "/Lotus/Language/Events/TenYearAnnniversaryEventTitleC", - "Icon": "/Lotus/Interface/Icons/Player/TennconPinGlyph.png", - "Tag": "TenYearM4C", - "PrereqGoalTags": ["TenYearM4A", "TenYearM4B"], - "Reward": { "items": ["/Lotus/StoreItems/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek3Glyph"] } + "Node": "EventNode25", + "ConcurrentMissionKeyNames": ["/Lotus/Types/Keys/TacAlertKeyWaterFightB", "/Lotus/Types/Keys/TacAlertKeyWaterFightC", "/Lotus/Types/Keys/TacAlertKeyWaterFightD"], + "ConcurrentNodeReqs": [25, 50, 100], + "ConcurrentNodes": ["EventNode24", "EventNode34", "EventNode35"], + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyWaterFightA", + "Faction": "FC_CORPUS", + "Desc": "/Lotus/Language/Alerts/TacAlertWaterFight", + "Icon": "/Lotus/Interface/Icons/StoreIcons/Emblems/SplashEventIcon.png", + "Tag": "WaterFight", + "InterimRewards": [ + { "credits": 50000, "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/DogDays2023ASigil"], "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 25 }] }, + { + "credits": 50000, + "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyBeachKavat"], + "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 50 }] + } + ], + "Reward": { + "credits": 50000, + "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyRucksackKubrow"], + "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 75 }] + }, + "BonusReward": { + "credits": 50000, + "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCleaningDroneBeachcomber"], + "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 100 }] + }, + "ScoreVar": "Team1Score", + "NightLevel": "/Lotus/Levels/GrineerBeach/GrineerBeachEventNight.level" } ], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "64cd1cfd6f0dc72cbd3ef928" }, - "Activation": { "$date": { "$numberLong": "1691164800000" } }, - "Expiry": { "$date": { "$numberLong": "1691251200000" } }, + "_id": { "$oid": "64ee127d4dcb8f9d635af5ee" }, + "Activation": { "$date": { "$numberLong": "1693324800000" } }, + "Expiry": { "$date": { "$numberLong": "1693411200000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 40641, - "Boss": "SORTIE_BOSS_VOR", + "Seed": 50763, + "Boss": "SORTIE_BOSS_ALAD", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode15", "tileset": "GrineerGalleonTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode41", "tileset": "GrineerSettlementTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_EXPLOSION", "node": "SolNode108", "tileset": "GrineerAsteroidTileset" } + { "missionType": "MT_DEFENSE", "modifierType": "SORTIE_MODIFIER_SHIELDS", "node": "SolNode51", "tileset": "CorpusOutpostTileset" }, + { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_FIRE", "node": "SolNode104", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_SECONDARY_ONLY", "node": "SolNode53", "tileset": "CorpusGasCityTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "64c6f5fd49f930a50bad7f56" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, + "_id": { "$oid": "64ebdffdeacdda68a5dc8bf4" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 77969, - "Boss": "SORTIE_BOSS_AMAR", + "Seed": 73099, + "Boss": "SORTIE_BOSS_NIRA", "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode16" }, - { "missionType": "MT_ARTIFACT", "node": "SolNode30" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } + { "missionType": "MT_EXTERMINATION", "node": "SolNode125" }, + { "missionType": "MT_SURVIVAL", "node": "SolNode73" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "64cd204578494122e767f757" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb3e" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "ArbitersSyndicate", - "Seed": 40641, - "Nodes": ["SolNode130", "SolNode2", "SolNode131", "SettlementNode1", "SolNode121", "SolNode85", "SolNode402"] + "Seed": 50763, + "Nodes": ["SolNode15", "SolNode224", "SettlementNode12", "SolNode128", "SolNode132", "SolNode404", "SolNode189"] }, { - "_id": { "$oid": "64cd204578494122e767f759" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 36410, - "Nodes": [] - }, - { - "_id": { "$oid": "64cd204578494122e767f75a" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "EventSyndicate", - "Seed": 69553, - "Nodes": [] - }, - { - "_id": { "$oid": "64cd204578494122e767f758" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb3f" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 27530, - "Nodes": ["SolNode68", "SolNode223", "SolNode141", "SolNode75", "SolNode406", "SolNode153", "SolNode64"] + "Seed": 13269, + "Nodes": ["SolNode23", "SolNode85", "SolNode225", "SolNode73", "SolNode1", "SolNode171", "SolNode76"] }, { - "_id": { "$oid": "64cd204578494122e767f75b" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb40" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 75544, + "Nodes": [] + }, + { + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb42" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "KahlSyndicate", - "Seed": 36622, + "Seed": 22875, "Nodes": [] }, { - "_id": { "$oid": "64cd204578494122e767f75c" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb41" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "EventSyndicate", + "Seed": 55704, + "Nodes": [] + }, + { + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb43" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "NewLokaSyndicate", - "Seed": 39158, - "Nodes": ["SolNode23", "SolNode26", "SolNode140", "SolNode209", "SolNode167", "SettlementNode14", "SolNode119"] + "Seed": 82304, + "Nodes": ["SolNode66", "SolNode223", "SettlementNode1", "SolNode93", "SolNode63", "SolNode64", "SolNode214"] }, { - "_id": { "$oid": "64cd204678494122e767f75d" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb44" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "QuillsSyndicate", - "Seed": 49427, + "Seed": 79301, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f75e" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "PerrinSyndicate", - "Seed": 40441, - "Nodes": ["SolNode59", "SolNode106", "SolNode710", "SolNode212", "SolNode128", "SolNode707", "SolNode410"] - }, - { - "_id": { "$oid": "64cd204678494122e767f75f" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 44537, - "Nodes": [] - }, - { - "_id": { "$oid": "64cd204678494122e767f760" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb47" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 56126, + "Seed": 45775, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f763" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 74692, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb45" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "PerrinSyndicate", + "Seed": 6221, + "Nodes": ["SolNode68", "SolNode12", "SolNode135", "SolNode75", "SolNode72", "SolNode205", "SolNode410"] + }, + { + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb46" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 82230, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f762" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb49" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 2995, + "Seed": 48405, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f764" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 37414, - "Nodes": [] - }, - { - "_id": { "$oid": "64cd204678494122e767f761" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb48" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 54110, + "Seed": 74726, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f765" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4a" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 31317, + "Nodes": [] + }, + { + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4b" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 95375, + "Nodes": [] + }, + { + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4c" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 11222, + "Seed": 8792, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f767" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 31598, - "Nodes": [] - }, - { - "_id": { "$oid": "64cd204678494122e767f768" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 10883, - "Nodes": [] - }, - { - "_id": { "$oid": "64cd204678494122e767f766" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4d" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 90249, + "Seed": 91626, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f769" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4e" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 38016, + "Nodes": [] + }, + { + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb50" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 44464, + "Seed": 68371, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f76a" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4f" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 5059, + "Nodes": [] + }, + { + "_id": { "$oid": "64ee15c5d03b3df1ccf9bb51" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "RedVeilSyndicate", - "Seed": 78327, - "Nodes": ["SolNode22", "SolNode12", "SolNode97", "SolNode146", "SolNode147", "SolNode172", "SolNode203"] + "Seed": 44313, + "Nodes": ["SolNode14", "SolNode107", "SolNode67", "SolNode39", "SolNode57", "SolNode167", "SolNode191"] }, { - "_id": { "$oid": "64cd204678494122e767f76c" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c6d03b3df1ccf9bb53" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "VoxSyndicate", - "Seed": 62326, + "Seed": 69464, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f76b" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c6d03b3df1ccf9bb52" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "VentKidsSyndicate", - "Seed": 58503, + "Seed": 88995, "Nodes": [] }, { - "_id": { "$oid": "64cd204678494122e767f76d" }, - "Activation": { "$date": { "$numberLong": "1691164741792" } }, - "Expiry": { "$date": { "$numberLong": "1691251140000" } }, + "_id": { "$oid": "64ee15c6d03b3df1ccf9bb54" }, + "Activation": { "$date": { "$numberLong": "1693324741593" } }, + "Expiry": { "$date": { "$numberLong": "1693411140000" } }, "Tag": "SteelMeridianSyndicate", - "Seed": 14888, - "Nodes": ["SolNode45", "SolNode224", "SolNode711", "SolNode31", "SolNode138", "SolNode109", "SolNode79"] + "Seed": 7315, + "Nodes": ["SolNode26", "SolNode2", "SettlementNode14", "SolNode711", "SolNode56", "SolNode119", "SolNode172"] }, { - "_id": { "$oid": "64cd78270000000000000002" }, - "Activation": { "$date": { "$numberLong": "1691187239176" } }, - "Expiry": { "$date": { "$numberLong": "1691196238050" } }, + "_id": { "$oid": "64ee264b0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1693328971379" } }, + "Expiry": { "$date": { "$numberLong": "1693337970253" } }, "Tag": "EntratiSyndicate", - "Seed": 54285, + "Seed": 21261, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [6, 6, 6] + "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableCRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [10, 10, 10] + "xpAmounts": [9, 9, 9] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", "masteryReq": 5, "minEnemyLevel": 25, @@ -793,23 +598,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [17, 17, 17, 26] + "xpAmounts": [18, 18, 18, 28] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 39] + "xpAmounts": [21, 21, 21, 21, 41] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -817,7 +622,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -826,7 +631,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -835,7 +640,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -846,345 +651,344 @@ ] }, { - "_id": { "$oid": "64cd78270000000000000007" }, - "Activation": { "$date": { "$numberLong": "1691187239176" } }, - "Expiry": { "$date": { "$numberLong": "1691196238050" } }, + "_id": { "$oid": "64ee264b0000000000000007" }, + "Activation": { "$date": { "$numberLong": "1693328971379" } }, + "Expiry": { "$date": { "$numberLong": "1693337970253" } }, "Tag": "CetusSyndicate", - "Seed": 54285, + "Seed": 21261, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [400, 400, 400] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [660, 660, 660] + "xpAmounts": [440, 440, 440] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [690, 690, 690] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [590, 590, 590, 870] + "xpAmounts": [610, 610, 610, 900] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [570, 570, 570, 570, 1120] + "xpAmounts": [590, 590, 590, 590, 1160] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [740, 740, 740, 740, 1460] + "xpAmounts": [720, 720, 720, 720, 1420] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [800, 800, 800, 800, 1580] + "xpAmounts": [830, 830, 830, 830, 1630] } ] }, { - "_id": { "$oid": "64cd78270000000000000022" }, - "Activation": { "$date": { "$numberLong": "1691187239176" } }, - "Expiry": { "$date": { "$numberLong": "1691196238050" } }, + "_id": { "$oid": "64ee264b0000000000000026" }, + "Activation": { "$date": { "$numberLong": "1693328971379" } }, + "Expiry": { "$date": { "$numberLong": "1693337970253" } }, + "Tag": "ZarimanSyndicate", + "Seed": 21262, + "Nodes": [] + }, + { + "_id": { "$oid": "64ee264b0000000000000022" }, + "Activation": { "$date": { "$numberLong": "1693328971379" } }, + "Expiry": { "$date": { "$numberLong": "1693337970253" } }, "Tag": "SolarisSyndicate", - "Seed": 54285, + "Seed": 21261, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [410, 410, 410] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [720, 720, 720] + "xpAmounts": [470, 470, 470] }, { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [690, 690, 690] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, "xpAmounts": [660, 660, 660, 980] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [600, 600, 600, 600, 1180] + "xpAmounts": [630, 630, 630, 630, 1240] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [680, 680, 680, 680, 1340] + "xpAmounts": [740, 740, 740, 740, 1450] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [810, 810, 810, 810, 1580] + "xpAmounts": [820, 820, 820, 820, 1610] } ] - }, - { - "_id": { "$oid": "64cd78270000000000000026" }, - "Activation": { "$date": { "$numberLong": "1691187239176" } }, - "Expiry": { "$date": { "$numberLong": "1691196238050" } }, - "Tag": "ZarimanSyndicate", - "Seed": 54286, - "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "64cd6839baea04f7c1ef0eab" }, - "Region": 9, - "Seed": 80718, - "Activation": { "$date": { "$numberLong": "1691183161599" } }, - "Expiry": { "$date": { "$numberLong": "1691189548790" } }, - "Node": "SolNode48", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "64cd687518aa17f18e6d4061" }, - "Region": 19, - "Seed": 87156, - "Activation": { "$date": { "$numberLong": "1691183221801" } }, - "Expiry": { "$date": { "$numberLong": "1691189649972" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "64cd687518aa17f18e6d4062" }, - "Region": 19, - "Seed": 16387, - "Activation": { "$date": { "$numberLong": "1691183221801" } }, - "Expiry": { "$date": { "$numberLong": "1691189861406" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "64cd6ce96d93cc6dbf632c9f" }, - "Region": 10, - "Seed": 73031, - "Activation": { "$date": { "$numberLong": "1691184361175" } }, - "Expiry": { "$date": { "$numberLong": "1691190359163" } }, - "Node": "SolNode139", - "MissionType": "MT_CAPTURE", + "_id": { "$oid": "64ee172d646a0d83af89fbe6" }, + "Region": 5, + "Seed": 76652, + "Activation": { "$date": { "$numberLong": "1693325101616" } }, + "Expiry": { "$date": { "$numberLong": "1693332229056" } }, + "Node": "SolNode10", + "MissionType": "MT_SABOTAGE", "Modifier": "VoidT2" }, { - "_id": { "$oid": "64cd6ce96d93cc6dbf632ca0" }, + "_id": { "$oid": "64ee1c9264053283836c5e0d" }, + "Region": 9, + "Seed": 65359, + "Activation": { "$date": { "$numberLong": "1693326481956" } }, + "Expiry": { "$date": { "$numberLong": "1693333572769" } }, + "Node": "SolNode72", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "64ee1c9264053283836c5e0e" }, + "Region": 11, + "Seed": 36461, + "Activation": { "$date": { "$numberLong": "1693326481956" } }, + "Expiry": { "$date": { "$numberLong": "1693332210801" } }, + "Node": "SolNode164", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "64ee1c9264053283836c5e0f" }, "Region": 6, - "Seed": 44715, - "Activation": { "$date": { "$numberLong": "1691184361175" } }, - "Expiry": { "$date": { "$numberLong": "1691189783320" } }, + "Seed": 85505, + "Activation": { "$date": { "$numberLong": "1693326481956" } }, + "Expiry": { "$date": { "$numberLong": "1693333286871" } }, "Node": "SolNode50", "MissionType": "MT_RESCUE", - "Modifier": "VoidT2" + "Modifier": "VoidT2", + "Hard": true }, { - "_id": { "$oid": "64cd6f4150d8f793a9307dba" }, - "Region": 19, - "Seed": 91244, - "Activation": { "$date": { "$numberLong": "1691184961724" } }, - "Expiry": { "$date": { "$numberLong": "1691190570835" } }, - "Node": "SolNode745", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT5" + "_id": { "$oid": "64ee1c9264053283836c5e11" }, + "Region": 10, + "Seed": 2403, + "Activation": { "$date": { "$numberLong": "1693326481956" } }, + "Expiry": { "$date": { "$numberLong": "1693332398077" } }, + "Node": "SolNode135", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2", + "Hard": true }, { - "_id": { "$oid": "64cd6f4150d8f793a9307dbb" }, - "Region": 19, - "Seed": 64095, - "Activation": { "$date": { "$numberLong": "1691184961724" } }, - "Expiry": { "$date": { "$numberLong": "1691190658006" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5" + "_id": { "$oid": "64ee1e35f83b0f35592f0b97" }, + "Region": 4, + "Seed": 88015, + "Activation": { "$date": { "$numberLong": "1693326901464" } }, + "Expiry": { "$date": { "$numberLong": "1693333987686" } }, + "Node": "SolNode106", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1", + "Hard": true }, { - "_id": { "$oid": "64cd70a9c529177f563ffac0" }, - "Region": 7, - "Seed": 56378, - "Activation": { "$date": { "$numberLong": "1691185321547" } }, - "Expiry": { "$date": { "$numberLong": "1691190013763" } }, - "Node": "SolNode64", + "_id": { "$oid": "64ee2015742e1b8188735f4e" }, + "Region": 8, + "Seed": 22277, + "Activation": { "$date": { "$numberLong": "1693327381359" } }, + "Expiry": { "$date": { "$numberLong": "1693332151268" } }, + "Node": "SolNode17", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "64ee2015742e1b8188735f4f" }, + "Region": 13, + "Seed": 93585, + "Activation": { "$date": { "$numberLong": "1693327381359" } }, + "Expiry": { "$date": { "$numberLong": "1693333425807" } }, + "Node": "SolNode211", "MissionType": "MT_TERRITORY", "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "64cd742de10070656ffb550b" }, - "Region": 13, - "Seed": 32784, - "Activation": { "$date": { "$numberLong": "1691186221977" } }, - "Expiry": { "$date": { "$numberLong": "1691190306860" } }, - "Node": "SolNode217", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT3" + "_id": { "$oid": "64ee262e3e33a6de824157ab" }, + "Region": 2, + "Seed": 28971, + "Activation": { "$date": { "$numberLong": "1693328941990" } }, + "Expiry": { "$date": { "$numberLong": "1693335730615" } }, + "Node": "SolNode61", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT1" }, { - "_id": { "$oid": "64cd742ee10070656ffb550c" }, + "_id": { "$oid": "64ee26a5b3cf7338de535ae7" }, + "Region": 19, + "Seed": 70997, + "Activation": { "$date": { "$numberLong": "1693329061711" } }, + "Expiry": { "$date": { "$numberLong": "1693336051054" } }, + "Node": "SolNode747", + "MissionType": "MT_INTEL", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "64ee2a2a1d079534c49d905e" }, "Region": 7, - "Seed": 62529, - "Activation": { "$date": { "$numberLong": "1691186221977" } }, - "Expiry": { "$date": { "$numberLong": "1691190722376" } }, + "Seed": 86337, + "Activation": { "$date": { "$numberLong": "1693329962030" } }, + "Expiry": { "$date": { "$numberLong": "1693336381875" } }, "Node": "SolNode122", "MissionType": "MT_DEFENSE", "Modifier": "VoidT3" }, { - "_id": { "$oid": "64cd742ee10070656ffb550d" }, + "_id": { "$oid": "64ee2a2a1d079534c49d905f" }, "Region": 8, - "Seed": 77047, - "Activation": { "$date": { "$numberLong": "1691186221977" } }, - "Expiry": { "$date": { "$numberLong": "1691190590372" } }, - "Node": "SolNode6", - "MissionType": "MT_EXCAVATE", + "Seed": 25135, + "Activation": { "$date": { "$numberLong": "1693329962030" } }, + "Expiry": { "$date": { "$numberLong": "1693335949457" } }, + "Node": "SolNode78", + "MissionType": "MT_RESCUE", "Modifier": "VoidT3" }, { - "_id": { "$oid": "64cd74694557e2cbbb5ce850" }, - "Region": 4, - "Seed": 43703, - "Activation": { "$date": { "$numberLong": "1691186281194" } }, - "Expiry": { "$date": { "$numberLong": "1691190749994" } }, - "Node": "SolNode36", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT1", - "Hard": true + "_id": { "$oid": "64ee2a2a1d079534c49d9060" }, + "Region": 13, + "Seed": 72163, + "Activation": { "$date": { "$numberLong": "1693329962030" } }, + "Expiry": { "$date": { "$numberLong": "1693335717022" } }, + "Node": "SolNode215", + "MissionType": "MT_INTEL", + "Modifier": "VoidT3" }, { - "_id": { "$oid": "64cd74694557e2cbbb5ce851" }, - "Region": 3, - "Seed": 73859, - "Activation": { "$date": { "$numberLong": "1691186281194" } }, - "Expiry": { "$date": { "$numberLong": "1691191759013" } }, - "Node": "SolNode27", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64cd7559dad07aa9f25f0932" }, - "Region": 3, - "Seed": 1564, - "Activation": { "$date": { "$numberLong": "1691186521863" } }, - "Expiry": { "$date": { "$numberLong": "1691193572027" } }, - "Node": "SolNode85", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "64cd7559dad07aa9f25f0933" }, - "Region": 4, - "Seed": 79009, - "Activation": { "$date": { "$numberLong": "1691186521863" } }, - "Expiry": { "$date": { "$numberLong": "1691190942414" } }, - "Node": "SolNode11", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "64cd7685e7e427e1f5ca22b3" }, - "Region": 5, - "Seed": 45624, - "Activation": { "$date": { "$numberLong": "1691186821428" } }, - "Expiry": { "$date": { "$numberLong": "1691193576653" } }, - "Node": "SolNode125", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64cd7685e7e427e1f5ca22b4" }, - "Region": 10, - "Seed": 6197, - "Activation": { "$date": { "$numberLong": "1691186821428" } }, - "Expiry": { "$date": { "$numberLong": "1691190820431" } }, - "Node": "SolNode137", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64cd7991a03b6eb2aad5d2e1" }, - "Region": 15, - "Seed": 72866, - "Activation": { "$date": { "$numberLong": "1691187601200" } }, - "Expiry": { "$date": { "$numberLong": "1691193870211" } }, - "Node": "SolNode408", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "64cd7991a03b6eb2aad5d2e2" }, + "_id": { "$oid": "64ee2add4a3adecda4bf43fd" }, "Region": 12, - "Seed": 8749, - "Activation": { "$date": { "$numberLong": "1691187601200" } }, - "Expiry": { "$date": { "$numberLong": "1691193866400" } }, - "Node": "SolNode195", + "Seed": 5514, + "Activation": { "$date": { "$numberLong": "1693330141547" } }, + "Expiry": { "$date": { "$numberLong": "1693335805688" } }, + "Node": "SolNode196", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "64ee2add4a3adecda4bf43fe" }, + "Region": 15, + "Seed": 60361, + "Activation": { "$date": { "$numberLong": "1693330141547" } }, + "Expiry": { "$date": { "$numberLong": "1693334972375" } }, + "Node": "SolNode403", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "64ee2add4a3adecda4bf43ff" }, + "Region": 11, + "Seed": 60476, + "Activation": { "$date": { "$numberLong": "1693330141547" } }, + "Expiry": { "$date": { "$numberLong": "1693333921298" } }, + "Node": "SolNode175", + "MissionType": "MT_HIVE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "64ee2e9daccfecb03be6144a" }, + "Region": 19, + "Seed": 47046, + "Activation": { "$date": { "$numberLong": "1693331101524" } }, + "Expiry": { "$date": { "$numberLong": "1693335381776" } }, + "Node": "SolNode742", "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4", - "Hard": true + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "64ee2e9daccfecb03be6144b" }, + "Region": 19, + "Seed": 85211, + "Activation": { "$date": { "$numberLong": "1693331101524" } }, + "Expiry": { "$date": { "$numberLong": "1693336667973" } }, + "Node": "SolNode745", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "64ee31e526218cbaeb8e049f" }, + "Region": 5, + "Seed": 31714, + "Activation": { "$date": { "$numberLong": "1693331941889" } }, + "Expiry": { "$date": { "$numberLong": "1693338473398" } }, + "Node": "SolNode25", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT2" } ], "GlobalUpgrades": [], @@ -1218,20 +1022,7 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1684432800000" } }, - "EndDate": { "$date": { "$numberLong": "1693504800000" } } - }, - { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", + "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1239,49 +1030,7 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 325, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693440000000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 20, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 165, + "PremiumOverride": 90, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -1301,21 +1050,7 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693494000000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1323,13 +1058,13 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 80, + "PremiumOverride": 20, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", + "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1337,7 +1072,7 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 90, + "PremiumOverride": 325, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -1356,6 +1091,75 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 80, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 165, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693494000000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693440000000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1684432800000" } }, + "EndDate": { "$date": { "$numberLong": "1693504800000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, @@ -1368,30 +1172,6 @@ "StartDate": { "$date": { "$numberLong": "1688216400000" } }, "EndDate": { "$date": { "$numberLong": "1722171600000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItemNoLogo", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1688652120000" } }, - "EndDate": { "$date": { "$numberLong": "1691952900000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1688666400000" } }, - "EndDate": { "$date": { "$numberLong": "1691952900000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "ShowInMarket": true, @@ -1463,6 +1243,163 @@ "PremiumOverride": 1, "StartDate": { "$date": { "$numberLong": "1691085600000" } }, "EndDate": { "$date": { "$numberLong": "1694368800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRollers", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 75, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/WaterFightNoggleBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 240, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFChargerBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFEngineerBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFGruntBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFHealerBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFHeavyBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFHellionBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFSniperBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFTankBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "StartDate": { "$date": { "$numberLong": "1693062000000" } }, + "EndDate": { "$date": { "$numberLong": "1695654000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } } ], "InGameMarket": { @@ -1474,57 +1411,42 @@ "Icon": "popular", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/HeirloomPackC", "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", + "/Lotus/Types/StoreItems/Packages/WarframeBundles/PaxDuviricusItemsBundle", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", + "/Lotus/Types/StoreItems/Packages/DuvArmorBundle", + "/Lotus/Types/StoreItems/Packages/NyxDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/WispDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/NekrosDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/ValkyrDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/WolfFrameBundle", + "/Lotus/StoreItems/Powersuits/Runner/Runner", + "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", "/Lotus/Types/StoreItems/Packages/FormaPack", "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" ] }, { - "CategoryName": "DUVIRI_PARADOX", - "Name": "/Lotus/Language/Store/Store_DuviriParadox", - "Icon": "duviriparadox", + "CategoryName": "SEASONAL", + "Name": "/Lotus/Language/Store/SeasonalCategoryTitle", + "Icon": "seasonal", "AddToMenu": true, "Items": [ - "/Lotus/StoreItems/Weapons/Tenno/Melee/SwordsAndBoards/DaxDuviriMaceShieldWeapon", - "/Lotus/Types/StoreItems/Packages/Tattoo/TattooBundleDuviriB", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/PaxDuviricusItemsBundle", - "/Lotus/Types/StoreItems/Packages/HorseCrownBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/GaussDeluxeHorseAccessoriesBundle", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit3ABundle", - "/Lotus/StoreItems/Upgrades/Skins/PaxDuviricus/KullervoTwoHandedSwordSkin", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", - "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle" - ] - }, - { - "CategoryName": "TENNOGEN", - "Name": "/Lotus/Language/Menu/Store_Tennogen", - "Icon": "tennogen", - "Items": [ - "/Lotus/StoreItems/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWKrtrimaKatanaSkin", - "/Lotus/StoreItems/Upgrades/Skins/Necro/SWNekrosAusirylystSkin", - "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorA", - "/Lotus/StoreItems/Upgrades/Skins/Armor/SWVikasaAegisArmor/SWVikasaAegisArmorC", - "/Lotus/StoreItems/Upgrades/Skins/Liset/SWHerulystLisetSkin", - "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorC", - "/Lotus/StoreItems/Upgrades/Skins/Armor/SWZhiviraShoulderArmor/SWZhiviraShoulderArmorA", - "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorL" + "/Lotus/Types/StoreItems/Packages/WaterFightNoggleBundle", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple", + "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerRollers", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFChargerBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFEngineerBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFGruntBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFHealerBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFHeavyBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFHellionBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFSniperBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFTankBobbleHead" ] }, { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "AddToMenu": true, "Items": [] }, @@ -1533,12 +1455,15 @@ "Name": "/Lotus/Language/Store/Store_PremiumBundles", "Icon": "premiumbundles", "Items": [ + "/Lotus/Types/StoreItems/Packages/HeirloomPackC", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB" + "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "/Lotus/Types/StoreItems/Packages/HeirloomPackA", + "/Lotus/Types/StoreItems/Packages/HeirloomPackB" ] }, { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] } @@ -1547,68 +1472,260 @@ }, "Invasions": [ { - "_id": { "$oid": "64cb39014adcfa624e3de76d" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode51", - "Count": -30024, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "64cb14ae25d60b426dad7c30" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 478202, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 969615, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1691040001599" } } - }, - { - "_id": { "$oid": "64cbabd9c4b26082ae03f4b4" }, + "_id": { "$oid": "64ea31e9c944b9f79afe8af2" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode181", - "Count": 6228, - "Goal": 32000, + "Node": "SolNode188", + "Count": 37315, + "Goal": 43000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "64cbabd9c4b26082ae03f4b4" }, + "ChainID": { "$oid": "64ea31e9c944b9f79afe8af2" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 628905, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 988786, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 658384, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1691124923423" } } + "DefenderMissionInfo": { "seed": 909983, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1693153825481" } } }, { - "_id": { "$oid": "64cbfcb50426face6023113f" }, - "Faction": "FC_INFESTATION", + "_id": { "$oid": "64eb616d1f1caf106f5f0879" }, + "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode53", - "Count": -29082, + "Node": "SolNode73", + "Count": 43113, + "Goal": 43000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64eb616d1f1caf106f5f0879" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 979350, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalReceiver", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 154921, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1693191140351" } } + }, + { + "_id": { "$oid": "64edef55e7f66291676fa2c1" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode126", + "Count": 4295, + "Goal": 33000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64eb616d1f1caf106f5f0879" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 80709, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 893882, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1693315443380" } } + }, + { + "_id": { "$oid": "64ed41e54abc51aa3f7efc98" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode144", + "Count": -17821, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "64cbbb15075d362f03094875" }, + "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 511929, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 671039, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1691090101335" } } + "AttackerMissionInfo": { "seed": 334756, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 781674, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1693270501855" } } }, { - "_id": { "$oid": "64cd4f62d05c18f3ae9d3374" }, + "_id": { "$oid": "64ed41e54abc51aa3f7efc99" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode139", + "Count": -39169, + "Goal": 39000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 307514, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 404381, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693270501855" } } + }, + { + "_id": { "$oid": "64ed6c1699099aa830f8c693" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode149", + "Count": -47734, + "Goal": 47000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 189197, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 937555, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693281302033" } } + }, + { + "_id": { "$oid": "64ed7c7d853785fc93689ccc" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode132", + "Count": -35334, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 880615, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 816730, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693285501706" } } + }, + { + "_id": { "$oid": "64ed93edbe37124e18b34e4a" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode131", + "Count": -38559, + "Goal": 38000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 634872, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 158179, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693291501628" } } + }, + { + "_id": { "$oid": "64edb265295e7c19346954b5" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode147", + "Count": -34120, + "Goal": 34000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 796806, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 307767, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693299301632" } } + }, + { + "_id": { "$oid": "64edcb010fcc1714d63a6f90" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode140", + "Count": -34155, + "Goal": 34000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 30379, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 773851, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693305601554" } } + }, + { + "_id": { "$oid": "64ed5cd9690f03a511407149" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode43", + "Count": -46143, + "Goal": 46000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 140157, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 818557, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693281716812" } } + }, + { + "_id": { "$oid": "64ed812d540582dee4f8229c" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode81", - "Count": -392, - "Goal": 42000, + "Count": -49667, + "Goal": 49000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64cd4f62d05c18f3ae9d3374" }, + "Completed": true, + "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 936025, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 205186, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 654676, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693286701444" } } + }, + { + "_id": { "$oid": "64ed812d540582dee4f8229d" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode56", + "Count": -47565, + "Goal": 47000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 747449, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 238348, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693286701444" } } + }, + { + "_id": { "$oid": "64ed9fa5d5aef57c002fbfa5" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode21", + "Count": -34197, + "Goal": 34000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 741649, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 293505, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693294501513" } } + }, + { + "_id": { "$oid": "64edab5ddea8b05af284e236" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode51", + "Count": -13524, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": false, + "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 391512, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 667648, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1693297501248" } } + }, + { + "_id": { "$oid": "64edbf49aa014a460c6b54be" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode76", + "Count": -45288, + "Goal": 45000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 526530, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 183354, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1691182239361" } } + "DefenderMissionInfo": { "seed": 470104, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693302601226" } } } ], "HubEvents": [], @@ -1616,7 +1733,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9592559 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9630267 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1630,16 +1747,381 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } + }, + { + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1692201600000" } }, + "Expiry": { "$date": { "$numberLong": "1693411200000" } }, + "Node": "SolNode129", + "Faction": "FC_CORPUS", + "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] + }, + { + "_id": { "$oid": "64edef55e7f66291676fa2c0" }, + "Node": "SolNode73", + "Faction": "FC_GRINEER", + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerShipyardsA", + "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/GrineerCaptureTargetsMedium", + "Expiry": { "$date": { "$numberLong": "1693366766671" } } } ], "VoidTraders": [ + { + "_id": { "$oid": "64e8fd66ccc036553100eab0" }, + "Activation": { "$date": { "$numberLong": "1693062000000" } }, + "Expiry": { "$date": { "$numberLong": "1693666800000" } }, + "Id": "64e8fd66ccc036553100eab0", + "Character": "Baro'Ki Teel", + "Node": "TennoConHUB2", + "Manifest": [ + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropGrineerCutter", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG", "PrimePrice": 650, "RegularPrice": 550000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/HeartOfDeimosAlbumCoverPoster", "PrimePrice": 80, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionMagNovaVaultBBronze", "PrimePrice": 125, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Event/AmbulasEvent/Expert/SecondaryExplosionRadiusModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GunBlade/GrnGunBlade/GrnGunblade", "PrimePrice": 550, "RegularPrice": 325000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionVoltOdonataPrimeBronze", "PrimePrice": 125, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionVoltOdonataPrimeBronze", "PrimePrice": 125, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2023EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/WeGameNewYearFreeTigerSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2022EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Leverian/IvaraLeverianPovisRecordsDecoration", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodDuviriOperator", "PrimePrice": 550, "RegularPrice": 500000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Melee/CrpTonfa/CrpPrismaTonfa", "PrimePrice": 450, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCleaningDroneDuviri", "PrimePrice": 800, "RegularPrice": 650000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/AshLevarianTiara", "PrimePrice": 550, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/BaroEphemeraB", "PrimePrice": 250, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Promo/Warframe/PromoParis", "PrimePrice": 315, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/ThraxSigil", "PrimePrice": 50, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Bow/Longbow/PrismaLenz/PrismaLenzWeapon", "PrimePrice": 575, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Vignettes/Warframes/ArchwingAFItem", "PrimePrice": 100, "RegularPrice": 330000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/LavosAlchemistWallpaper", "PrimePrice": 275, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GrendelOrokinDishSet", "PrimePrice": 110, "RegularPrice": 130000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemB", "PrimePrice": 200, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NezhaEtchingsTablets", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GaussTowerOfAltraDeco", "PrimePrice": 110, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroPlanter", "PrimePrice": 125, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroPedestal", "PrimePrice": 150, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", "PrimePrice": 350, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BekranZaftBucketBroom", "PrimePrice": 100, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Warfan/TnMoonWarfan/MoonWarfanWeapon", "PrimePrice": 410, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/MoonWarfanSugatraMeleeDangle", "PrimePrice": 250, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OstronHeadStatue", "PrimePrice": 125, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/DomsFinalDrink", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Wisp/WispAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Pacifist/BaruukImmortalSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ErraBobbleHead", "PrimePrice": 75, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OwlOrdisStatue", "PrimePrice": 350, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TNWVesoBobbleHead", "PrimePrice": 75, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TNWTeshinBobbleHead", "PrimePrice": 75, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/CosmeticEnhancers/Peculiars/EvilSpiritMod", "PrimePrice": 250, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", "PrimePrice": 350, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape3Scarf", "PrimePrice": 500, "RegularPrice": 500000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisTiberon", "PrimePrice": 315, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/LotusFlowers", "PrimePrice": 250, "RegularPrice": 450000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/UmbraPedestal", "PrimePrice": 0, "RegularPrice": 1000000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Dragon/ChromaAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Hoverboard/HoverboardStickerBaroB", "PrimePrice": 75, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisLatronPistol", "PrimePrice": 400, "RegularPrice": 215000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveOnKillBuffSecondary", "PrimePrice": 300, "RegularPrice": 115000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConA", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveSecondaryHeadshotKillMod", "PrimePrice": 300, "RegularPrice": 115000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConD", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConB", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponIncreaseRadialExplosionModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Archwing/Primary/ArchwingHeavyPistols/Prisma/PrismaArchHeavyPistols", "PrimePrice": 525, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/TwinSnakesGlyph", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConF", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConE", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveOnSixKillsBuffSecondary", "PrimePrice": 300, "RegularPrice": 115000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/WeGameNewYearOxSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConG", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GarvLatroxPoster", "PrimePrice": 80, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrnBoomerang/HalikarWraithWeapon", "PrimePrice": 450, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConI", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorC", "PrimePrice": 325, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorL", "PrimePrice": 300, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorA", "PrimePrice": 315, "RegularPrice": 215000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponReloadSpeedModExpert", "PrimePrice": 300, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaMachete", "PrimePrice": 400, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MoaPet/BaroMoaPetSkin", "PrimePrice": 500, "RegularPrice": 325000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/Deimos/PlushySunMonsterCommon", "PrimePrice": 150, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/Deimos/PlushyMoonMonsterCommon", "PrimePrice": 150, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/TnShinaiSword/TnShinaiSwordSkin", "PrimePrice": 375, "RegularPrice": 280000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorL", "PrimePrice": 275, "RegularPrice": 115000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorC", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorA", "PrimePrice": 315, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Weapons/DualSword/DualRibbonKamasSkin", "PrimePrice": 350, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Infestation/NidusAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/ActionFigureDioramas/EmpyreanRegionADiorama", "PrimePrice": 155, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropGrineerFlak", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropGrineerTaktis", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/AshLeverianLiosPistol", "PrimePrice": 400, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Glass/GaraAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponSnipersConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EraHypnosisPoster", "PrimePrice": 100, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/NezhaLeverianCape", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Leverian/NezhaLeverian/NezhaLeverianPolearm", "PrimePrice": 350, "RegularPrice": 325000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BoredTennoPoster", "PrimePrice": 90, "RegularPrice": 120000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusBasilisk", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusWeaver", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusHarpi", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Archwing/GrendelArchwingSkin", "PrimePrice": 400, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/JaviExecutionHood", "PrimePrice": 450, "RegularPrice": 450000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/DualStat/ElectEventMeleeMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/DualStat/FireEventMeleeMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/ClawCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/DualStat/FireEventRifleMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/AxeCmbThreeMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/BowMultiShotOnHitMod", "PrimePrice": 300, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/DualStat/ElectEventShotgunMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/FireEventPistolMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/DualStat/FireEventShotgunMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/WeaponEventPistolImpactDamageMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/PrimedWeaponCritDamageMod", "PrimePrice": 400, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageCorruptedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageCorpusExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Archwing/Rifle/Expert/ArchwingRifleDamageAmountModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponRifleConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPrecepts/PrimedRegen", "PrimePrice": 300, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeRangeIncModExpert", "PrimePrice": 300, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponCritDamageModExpert", "PrimePrice": 280, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponReloadSpeedModExpert", "PrimePrice": 375, "RegularPrice": 120000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeDamageModExpert", "PrimePrice": 385, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponDamageAmountModExpert", "PrimePrice": 300, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponCritChanceModBeginnerExpert", "PrimePrice": 400, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Sentinel/Kubrow/Expert/KubrowPackLeaderExpertMod", "PrimePrice": 300, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Archwing/Expert/ArchwingSuitAbilityStrengthModExpert", "PrimePrice": 350, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponImpactDamageModExpert", "PrimePrice": 350, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponFireDamageModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/Expert/AvatarPowerMaxModExpert", "PrimePrice": 350, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponToxinDamageModExpert", "PrimePrice": 350, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponReloadSpeedModExpert", "PrimePrice": 375, "RegularPrice": 120000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageCorruptedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageCorpusExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/Expert/AvatarAbilityDurationModExpert", "PrimePrice": 350, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageCorruptedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageCorpusExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponElectricityDamageModExpert", "PrimePrice": 350, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageInfested", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageGrineer", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageCorrupted", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageCorpus", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Sentinel/SentinelLootRadarEnemyRadarExpertMod", "PrimePrice": 300, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/GlaiveCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponEventMeleeImpactDamageMod", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventRifleImpactDamageMod", "PrimePrice": 330, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/WeaponEventShotgunImpactDamageMod", "PrimePrice": 365, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/DualStat/ElectEventRifleMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/VTDetron", "PrimePrice": 500, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpFreezeRay/Vandal/CrpFreezeRayVandalRifle", "PrimePrice": 475, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/ClanTech/Chemical/FlameThrowerWraith", "PrimePrice": 550, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/WraithMacheteWeapon", "PrimePrice": 410, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Pistols/CrpHandRL/PrismaAngstrum", "PrimePrice": 475, "RegularPrice": 210000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaDualCleavers", "PrimePrice": 490, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/VoidTraderGorgon/VTGorgon", "PrimePrice": 600, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaGrakata", "PrimePrice": 610, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrineerLeverActionRifle/PrismaGrinlokWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Melee/KickAndPunch/PrismaObex", "PrimePrice": 500, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaSkana", "PrimePrice": 510, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CorpusUMP/PrismaCorpusUMP", "PrimePrice": 400, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Pistols/GrineerBulbousSMG/Prisma/PrismaTwinGremlinsWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Archwing/Melee/VoidTraderArchsword/VTArchSwordWeapon", "PrimePrice": 550, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/ClanTech/Energy/VandalElectroProd", "PrimePrice": 410, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpShockRifle/QuantaVandal", "PrimePrice": 450, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/Machinegun/SupraVandal", "PrimePrice": 500, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Pistols/WraithSingleViper/WraithSingleViper", "PrimePrice": 400, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrineerSniperRifle/VulkarWraith", "PrimePrice": 450, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/ConclaveLeverPistol/ConclaveLeverPistol", "PrimePrice": 500, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/FireMeleeDangle", "PrimePrice": 100, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroInarosPolearmSkin", "PrimePrice": 325, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/BaroInarosMeleeDangle", "PrimePrice": 250, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/InfestedMeleeDangle", "PrimePrice": 250, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTHalloweenDarkSword", "PrimePrice": 320, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/SummerSolstice/SummerSolsticeGorgon", "PrimePrice": 300, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/SummerSolstice/SummerIgnisSkin", "PrimePrice": 300, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroArrow", "PrimePrice": 375, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/BaroMeleeDangle", "PrimePrice": 250, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroScytheMacheteSkin", "PrimePrice": 375, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisOdonataSkin", "PrimePrice": 350, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisBallasSword", "PrimePrice": 350, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/PrismaArrow", "PrimePrice": 350, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTRedeemerSkin", "PrimePrice": 325, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisSonicor", "PrimePrice": 315, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisTigris", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTQuanta", "PrimePrice": 300, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisOpticor", "PrimePrice": 325, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Halloween/HalloweenDread", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageBaroKiteer", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKavat", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKubrow", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/LisetScarf", "PrimePrice": 600, "RegularPrice": 400000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorElixis", "PrimePrice": 275, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorElixis", "PrimePrice": 300, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorElixis", "PrimePrice": 325, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerTwitchBItemA", "PrimePrice": 220, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/VTEosArmourBundle", "PrimePrice": 285, "RegularPrice": 260000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosChestArmor", "PrimePrice": 125, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/BaroKavatBadgeItem", "PrimePrice": 50, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/BaroKavatSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesChestArmor", "PrimePrice": 300, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/WraithTurbinesScarf", "PrimePrice": 400, "RegularPrice": 500000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesLegArmor", "PrimePrice": 350, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesArmArmor", "PrimePrice": 350, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Pirate/HydroidAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GrendelTreat", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmour/BaroArmourC", "PrimePrice": 150, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA", "PrimePrice": 150, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/KazBaroCape", "PrimePrice": 325, "RegularPrice": 450000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/BaroEphemeraA", "PrimePrice": 100, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoC", "PrimePrice": 175, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoL", "PrimePrice": 225, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoA", "PrimePrice": 310, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmour/BaroArmourL", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape2Scarf", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/BaroQuantumBadgeItem", "PrimePrice": 400, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmour/BaroArmourA", "PrimePrice": 350, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/SolsticeBaroCape", "PrimePrice": 425, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape", "PrimePrice": 500, "RegularPrice": 500000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroIcon", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosALArmor", "PrimePrice": 50, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLLArmor", "PrimePrice": 65, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegLeftArmor", "PrimePrice": 65, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmLeftArmor", "PrimePrice": 65, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegLeftArmor", "PrimePrice": 100, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmLeftArmor", "PrimePrice": 100, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Magician/LimboImmortalSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Cowgirl/MesaImmortallSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Harlequin/MirageAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/BaroKubrowBadgeItem", "PrimePrice": 50, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/BaroKubrowSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/FurisArmor/PrismaFurisLArmor", "PrimePrice": 225, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/FurisArmor/PrismaFurisCArmor", "PrimePrice": 250, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/FurisArmor/PrismaFurisAArmor", "PrimePrice": 300, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeChestArmor", "PrimePrice": 150, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoChestArmor", "PrimePrice": 225, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTHornSkullScarf", "PrimePrice": 250, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorPrisma", "PrimePrice": 275, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorPrisma", "PrimePrice": 300, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorPrisma", "PrimePrice": 325, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/PrismaLotusEmblem", "PrimePrice": 50, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrismaLotusSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/Halloween2014Wings/PrismaNaberusArmArmor", "PrimePrice": 220, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeTraderSigil", "PrimePrice": 50, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrismaRazorScarf", "PrimePrice": 350, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTDinoSpikeScarf", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageLowPolyKavat", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageLowPolyKubrow", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosARArmor", "PrimePrice": 50, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLRArmor", "PrimePrice": 65, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegRightArmor", "PrimePrice": 65, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmRightArmor", "PrimePrice": 65, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegRightArmor", "PrimePrice": 100, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmRightArmor", "PrimePrice": 100, "RegularPrice": 55000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Tengu/ZephyrAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/KubrowPet/Patterns/KubrowPetPatternPrimeTraderA", "PrimePrice": 150, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Camo/DesertDirigaSkin", "PrimePrice": 225, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/KavatPetMask", "PrimePrice": 500, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/KavatPetTail", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/KavatPetWings", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorVoidTraderA", "PrimePrice": 500, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/KubrowArmorBaro", "PrimePrice": 500, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/BaroPetMask", "PrimePrice": 500, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/BaroPetTail", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/BaroPetWings", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/KavatColorPackNexus", "PrimePrice": 200, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/PrismaJetWings", "PrimePrice": 300, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/PrismaFishTail", "PrimePrice": 200, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/PrismaMechHeadMask", "PrimePrice": 175, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/KubrowArmorPrisma", "PrimePrice": 400, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrismaShadePowerSuit", "PrimePrice": 500, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Skins/DesertTaxonSkin", "PrimePrice": 200, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorHalloweenA", "PrimePrice": 400, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem", "PrimePrice": 450, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/Types/StoreItems/Boosters/CreditBooster3DayStoreItem", "PrimePrice": 350, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/Types/StoreItems/Boosters/ModDropChanceBooster3DayStoreItem", "PrimePrice": 500, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/Types/StoreItems/Boosters/ResourceAmount3DayStoreItem", "PrimePrice": 400, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionPBronze", "PrimePrice": 50, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Types/Recipes/Components/CorruptedBombardBallBlueprint", "PrimePrice": 100, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/CorruptedHeavyGunnerBall", "PrimePrice": 100, "RegularPrice": 40000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OrbiterPictureFrameBaro", "PrimePrice": 100, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/AssassinBaitC", "PrimePrice": 200, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PhotoboothTileInarosTomb", "PrimePrice": 325, "RegularPrice": 1750000 }, + { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/BaroFireWorksCrate", "PrimePrice": 50, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PhotoboothTileOrokinExtraction", "PrimePrice": 325, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, + { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/AssassinBait", "PrimePrice": 200, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/AssassinBaitB", "PrimePrice": 200, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationB", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationE", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCleaningDroneBaro", "PrimePrice": 700, "RegularPrice": 500000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerBobbleHead", "PrimePrice": 70, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Hoverboard/HoverboardStickerBaroA", "PrimePrice": 75, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KavatBust", "PrimePrice": 220, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KubrowBust", "PrimePrice": 220, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyDesertSkate", "PrimePrice": 125, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationD", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ExcaliburArchwingBobbleHead", "PrimePrice": 90, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroTiara", "PrimePrice": 525, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/EarpieceBaroC", "PrimePrice": 500, "RegularPrice": 400000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroMouthPieceA", "PrimePrice": 500, "RegularPrice": 400000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroVisor", "PrimePrice": 525, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroHorn", "PrimePrice": 525, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/EarpieceBaroA", "PrimePrice": 500, "RegularPrice": 400000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/EarpieceBaroB", "PrimePrice": 250, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/BaroWallpaper", "PrimePrice": 250, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/InarosLisetSkin", "PrimePrice": 400, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationA", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetInsectSkinInaros", "PrimePrice": 425, "RegularPrice": 320000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetInsectSkinPrimeTrader", "PrimePrice": 230, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ParazonPoster", "PrimePrice": 100, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KubrowKavatLowPolyPoster", "PrimePrice": 90, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinVoidTrader", "PrimePrice": 120, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetBlueSkySkinPrimeTrader", "PrimePrice": 210, "RegularPrice": 450000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationF", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetBlueSkySkinInaros", "PrimePrice": 375, "RegularPrice": 340000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationG", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropOstRugBaro", "PrimePrice": 225, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationH", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader", "PrimePrice": 220, "RegularPrice": 400000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationC", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/PedistalPrime", "PrimePrice": 0, "RegularPrice": 1000000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/Emotes/BaroEmote", "PrimePrice": 0, "RegularPrice": 1000000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/EventSniperReloadDamageMod", "PrimePrice": 2995, "RegularPrice": 1000000 } + ] + }, { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1691758800000" } }, - "Expiry": { "$date": { "$numberLong": "1691931600000" } }, + "Activation": { "$date": { "$numberLong": "1694178000000" } }, + "Expiry": { "$date": { "$numberLong": "1694350800000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "PlutoHUB" + "Node": "MercuryHUB" } ], "PrimeVaultTraders": [ @@ -1651,8 +2133,26 @@ "Node": "TradeHUB1", "Manifest": [ { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoPrimeSinglePack", "PrimePrice": 6 }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostMagPrimeDualPack", + "PrimePrice": 10, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoNyxPrimeDualPack", "PrimePrice": 10 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNyxPrimeSinglePack", "PrimePrice": 6 }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostPrimeSinglePack", + "PrimePrice": 6, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMagPrimeSinglePack", + "PrimePrice": 6, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, { "ItemType": "/Lotus/StoreItems/Powersuits/Rhino/RhinoPrime", "PrimePrice": 3 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVDistillingExtractorPrimeSet", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/NoruPrimeScarf", "PrimePrice": 2 }, @@ -1663,12 +2163,102 @@ { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ValaPrimeMeleeDangle", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Axe/PrimeScindo/PrimeScindoWeapon", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/ThrowingWeapons/PrimeThrowingStar/PrimeHikou", "PrimePrice": 2 }, + { + "ItemType": "/Lotus/StoreItems/Powersuits/Frost/FrostPrime", + "PrimePrice": 3, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarf", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitanPrimeSet", + "PrimePrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Scythe/ReaperWeapon", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/LatronPrime", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Powersuits/Mag/MagPrime", + "PrimePrice": 3, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Shotgun/PrimeBoar", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/CronusSword/PrimeCronusLongSword", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/RhinoPrimeBobbleHead", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NyxPrimeBobbleHead", "PrimePrice": 1 }, + { + "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/FrostPrimeBobbleHead", + "PrimePrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/MagPrimeBobbleHead", + "PrimePrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 } + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultBBronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionFrostMagVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionFrostMagVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionFrostMagVaultABronze", + "RegularPrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + } ], "Expiry": { "$date": { "$numberLong": "1694109600000" } }, "EvergreenManifest": [ @@ -1736,96 +2326,58 @@ { "Expiry": { "$date": { "$numberLong": "1694109600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1689876000000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoNyxPrimeDualPack" + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostMagPrimeDualPack" + }, + { + "Expiry": { "$date": { "$numberLong": "1696528800000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1692900000000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1696528800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1696532400000" } } }, { "Expiry": { "$date": { "$numberLong": "1698948000000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1698948000000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "64cd622192b5de2f17f8a3a5" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1691184001821" } }, - "Expiry": { "$date": { "$numberLong": "1691189401821" } }, + "_id": { "$oid": "64ee1ab266c48794105e55e4" }, + "Node": "CrewBattleNode518", + "Activation": { "$date": { "$numberLong": "1693329601821" } }, + "Expiry": { "$date": { "$numberLong": "1693335001821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64cd622192b5de2f17f8a3a6" }, - "Node": "CrewBattleNode515", - "Activation": { "$date": { "$numberLong": "1691184001825" } }, - "Expiry": { "$date": { "$numberLong": "1691189401825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64cd622192b5de2f17f8a3a7" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1691184001827" } }, - "Expiry": { "$date": { "$numberLong": "1691189401827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64cd622192b5de2f17f8a3a8" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1691184001829" } }, - "Expiry": { "$date": { "$numberLong": "1691189401829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "64cd622192b5de2f17f8a3a9" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1691184001832" } }, - "Expiry": { "$date": { "$numberLong": "1691189401832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64cd622192b5de2f17f8a3aa" }, - "Node": "CrewBattleNode555", - "Activation": { "$date": { "$numberLong": "1691184001834" } }, - "Expiry": { "$date": { "$numberLong": "1691189401834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64cd7031a35193fc54282cf3" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1691187601821" } }, - "Expiry": { "$date": { "$numberLong": "1691193001821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64cd7031a35193fc54282cf4" }, + "_id": { "$oid": "64ee1ab266c48794105e55e5" }, "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1691187601825" } }, - "Expiry": { "$date": { "$numberLong": "1691193001825" } }, + "Activation": { "$date": { "$numberLong": "1693329601825" } }, + "Expiry": { "$date": { "$numberLong": "1693335001825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64cd7031a35193fc54282cf7" }, - "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1691187601832" } }, - "Expiry": { "$date": { "$numberLong": "1691193001832" } }, + "_id": { "$oid": "64ee1ab266c48794105e55e9" }, + "Node": "CrewBattleNode553", + "Activation": { "$date": { "$numberLong": "1693329601834" } }, + "Expiry": { "$date": { "$numberLong": "1693335001834" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "64cd7031a35193fc54282cf6" }, + "_id": { "$oid": "64ee1ab266c48794105e55e8" }, + "Node": "CrewBattleNode531", + "Activation": { "$date": { "$numberLong": "1693329601832" } }, + "Expiry": { "$date": { "$numberLong": "1693335001832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64ee1ab266c48794105e55e7" }, "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1691187601829" } }, - "Expiry": { "$date": { "$numberLong": "1691193001829" } }, + "Activation": { "$date": { "$numberLong": "1693329601829" } }, + "Expiry": { "$date": { "$numberLong": "1693335001829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "64cd7031a35193fc54282cf8" }, - "Node": "CrewBattleNode554", - "Activation": { "$date": { "$numberLong": "1691187601834" } }, - "Expiry": { "$date": { "$numberLong": "1691193001834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64cd7031a35193fc54282cf5" }, - "Node": "CrewBattleNode533", - "Activation": { "$date": { "$numberLong": "1691187601827" } }, - "Expiry": { "$date": { "$numberLong": "1691193001827" } }, + "_id": { "$oid": "64ee1ab266c48794105e55e6" }, + "Node": "CrewBattleNode535", + "Activation": { "$date": { "$numberLong": "1693329601827" } }, + "Expiry": { "$date": { "$numberLong": "1693335001827" } }, "ActiveMissionTier": "VoidT2" } ], @@ -1834,111 +2386,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Powersuits/Trapper/Trapper", - "Activation": { "$date": { "$numberLong": "1691096400000" } }, - "Expiry": { "$date": { "$numberLong": "1691190000000" } }, - "Discount": 50, - "OriginalPrice": 300, - "SalePrice": 150, - "AmountTotal": 100, - "AmountSold": 100 + "StoreItem": "/Lotus/StoreItems/Weapons/Infested/Melee/Swords/Mire/MireSword", + "Activation": { "$date": { "$numberLong": "1693249200000" } }, + "Expiry": { "$date": { "$numberLong": "1693342800000" } }, + "Discount": 10, + "OriginalPrice": 150, + "SalePrice": 135, + "AmountTotal": 300, + "AmountSold": 15 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "64cd28b5574f7f8b3835e72f" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd28b5574f7f8b3835e733" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryMEDIUM", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd28b5574f7f8b3835e732" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd28b5574f7f8b3835e731" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd28b5574f7f8b3835e730" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd28b5574f7f8b3835e734" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd28b5574f7f8b3835e736" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsHARD", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd28b5574f7f8b3835e735" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", - "startDate": { "$date": { "$numberLong": "1691166901346" } }, - "endDate": { "$date": { "$numberLong": "1691253301346" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64cd4bdd46bf2495a242982f" }, + "_id": { "$oid": "64e8fdb6a358514ec20d6d1f" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1691175901937" } }, - "endDate": { "$date": { "$numberLong": "1691780701937" } }, + "startDate": { "$date": { "$numberLong": "1692990902098" } }, + "endDate": { "$date": { "$numberLong": "1693595702098" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -1946,21 +2410,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "64cd4bdd46bf2495a2429830" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1691175901937" } }, - "endDate": { "$date": { "$numberLong": "1691780701937" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "64cd4bdd46bf2495a242982e" }, + "_id": { "$oid": "64e8fdb6a358514ec20d6d1e" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1691175901937" } }, - "endDate": { "$date": { "$numberLong": "1691780701937" } }, + "startDate": { "$date": { "$numberLong": "1692990902098" } }, + "endDate": { "$date": { "$numberLong": "1693595702098" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -1968,36 +2421,137 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "64cd4bdd46bf2495a2429831" }, + "_id": { "$oid": "64e8fdb6a358514ec20d6d20" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1692990902098" } }, + "endDate": { "$date": { "$numberLong": "1693595702098" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "64e8fdb6a358514ec20d6d21" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1691175901937" } }, - "endDate": { "$date": { "$numberLong": "1691780701937" } }, + "startDate": { "$date": { "$numberLong": "1692990902098" } }, + "endDate": { "$date": { "$numberLong": "1693595702098" } }, "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "64cd4bdd46bf2495a242982e" }, { "$oid": "64cd4bdd46bf2495a242982f" }, { "$oid": "64cd4bdd46bf2495a2429830" }], + "subChallenges": [{ "$oid": "64e8fdb6a358514ec20d6d1e" }, { "$oid": "64e8fdb6a358514ec20d6d1f" }, { "$oid": "64e8fdb6a358514ec20d6d20" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53ed" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53ef" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreak_MEDIUM", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53ee" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53f0" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53f2" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53f4" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53f3" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ee32228a93b03ebcec53f1" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirMEDIUM", + "startDate": { "$date": { "$numberLong": "1693332002081" } }, + "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [9.709278869396325, 54.06043574840911, 0], + "ProjectPct": [32.00466143005307, 79.11658030764144, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Ash", "Frost", "Nyx"] }, - { "Category": "EXC_HARD", "Choices": ["Boar", "Gammacor", "Anku", "Gorgon", "Angstrum"] } + { "Category": "EXC_NORMAL", "Choices": ["Mesa", "Chroma", "Atlas"] }, + { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "5d6e8383a38e4ab3d87910b4" }, "Name": "KHAO SAN ROAD", "Tier": 1, "AllianceId": { "$oid": "62ca246ada801e95e10faef5" }, "Emblem": true }, - { "_id": { "$oid": "56ab8b2407c56fd145c91aa5" }, "Name": "Slayers of Darkness", "Tier": 2, "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, "Emblem": true }, - { "_id": { "$oid": "5ad6ae822183db51113cad5a" }, "Name": "Ascension of Immortals", "Tier": 3, "AllianceId": { "$oid": "5f95b2a34c0af225c816a3ed" }, "Emblem": true }, - { "_id": { "$oid": "5b6961f7283a00373e55937f" }, "Name": "FOREVER SUMMER", "Tier": 4, "AllianceId": { "$oid": "62ef727a50f3d0a965003de2" }, "Emblem": true }, + { "_id": { "$oid": "60c11e85ef0ebd4df85e969b" }, "Name": "Order of Silver Rose", "Tier": 1, "Emblem": true, "AllianceId": { "$oid": "616b8f489469776f487866fd" } }, + { "_id": { "$oid": "57bd5ec906c56f84436a999c" }, "Name": "Survival School", "Tier": 2, "Emblem": true, "AllianceId": { "$oid": "628184e496531170b94f5bc2" } }, + { "_id": { "$oid": "52f63e4806c56f92427b25b2" }, "Name": "Les Black Moon", "Tier": 3, "AllianceId": { "$oid": "5a8068c7be87e42aa27a4c4d" }, "Emblem": true }, + { "_id": { "$oid": "5bb2512c3f8d4aac7532cc79" }, "Name": "Fortress of Lua", "Tier": 4, "AllianceId": { "$oid": "5ec428291fbe6e2e877c8bf8" }, "Emblem": true }, + { "_id": { "$oid": "63b6cea9135de2e01403b579" }, "Name": "Dreadnova Galleon", "Tier": 5, "Emblem": true }, { "_id": { "$oid": "60871578cc2e694df27157a8" }, "Name": "Twelve_Olympians", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "64857275eb6c266f67034392" } }, - { "_id": { "$oid": "53480a9007c56f925e90f861" }, "Name": "The Remnants of the Void", "Tier": 5, "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, "Emblem": true } + { "_id": { "$oid": "5e48bbd784bcf427932d700d" }, "Name": "Animation Tour", "Tier": 2, "AllianceId": { "$oid": "5ca758f43f8d4a0a2b40d7d4" }, "Emblem": true }, + { "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, "Name": "Miau after Tomorrow", "Tier": 2, "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, "Emblem": true } ], "SeasonInfo": { "Activation": { "$date": { "$numberLong": "1684951200000" } }, @@ -2008,69 +2562,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100110000000000000150" }, + "_id": { "$oid": "001100140000000000000196" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1690934400000" } }, - "Expiry": { "$date": { "$numberLong": "1691193600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTwoForOne" + "Activation": { "$date": { "$numberLong": "1693094400000" } }, + "Expiry": { "$date": { "$numberLong": "1693353600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithPrimary" }, { - "_id": { "$oid": "001100110000000000000151" }, + "_id": { "$oid": "001100150000000000000204" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1691020800000" } }, - "Expiry": { "$date": { "$numberLong": "1691280000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyToppingOffTheTank" + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693440000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyDonateLeverian" }, { - "_id": { "$oid": "001100110000000000000152" }, + "_id": { "$oid": "001100150000000000000205" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1691107200000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithRadiation" + "Activation": { "$date": { "$numberLong": "1693267200000" } }, + "Expiry": { "$date": { "$numberLong": "1693526400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFreeze" }, { - "_id": { "$oid": "001100110000000000000141" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteExterminate" + "_id": { "$oid": "001100150000000000000197" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteMobileDefense" }, { - "_id": { "$oid": "001100110000000000000142" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUseForma" + "_id": { "$oid": "001100150000000000000198" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteCapture" }, { - "_id": { "$oid": "001100110000000000000143" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSpy" + "_id": { "$oid": "001100150000000000000199" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSortie" }, { - "_id": { "$oid": "001100110000000000000144" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUnlockDragonVaults" + "_id": { "$oid": "001100150000000000000200" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyMadLab" }, { - "_id": { "$oid": "001100110000000000000145" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklySimarisScan" + "_id": { "$oid": "001100150000000000000201" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSyndicateMissions" }, { - "_id": { "$oid": "001100110000000000000146" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsSurvival" + "_id": { "$oid": "001100150000000000000202" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardLuaPuzzles" }, { - "_id": { "$oid": "001100110000000000000147" }, - "Activation": { "$date": { "$numberLong": "1690761600000" } }, - "Expiry": { "$date": { "$numberLong": "1691366400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardRailjackMissions" + "_id": { "$oid": "001100150000000000000203" }, + "Activation": { "$date": { "$numberLong": "1693180800000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardIndexWinStreak" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":550}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"tl23date\":\"1693067400\",\"tl23CDdate\":\"1692198000\",\"sfn\":550}" } -- 2.47.2 From db0aaffb4491b09b4be476373db287e6f27b8b15 Mon Sep 17 00:00:00 2001 From: Nicat <52883148+holmityd@users.noreply.github.com> Date: Thu, 31 Aug 2023 14:29:09 +0400 Subject: [PATCH 032/522] Mission rewards save (#46) --- .gitignore | 1 + .../api/missionInventoryUpdateController.ts | 57 +++++++++- src/controllers/stats/viewController.ts | 7 ++ src/models/inventoryModel.ts | 12 ++- src/routes/stats.ts | 4 + src/services/inventoryService.ts | 101 +++++++++++++++++- src/services/purchaseService.ts | 39 +++++-- src/types/inventoryTypes/SuitTypes.ts | 8 +- src/types/inventoryTypes/inventoryTypes.ts | 12 ++- src/types/inventoryTypes/weaponTypes.ts | 2 + src/types/missionInventoryUpdateType.ts | 64 +++++++++++ 11 files changed, 292 insertions(+), 15 deletions(-) create mode 100644 src/controllers/stats/viewController.ts create mode 100644 src/types/missionInventoryUpdateType.ts diff --git a/.gitignore b/.gitignore index ee9cbba6..70556674 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /.env /static/data/*.bin yarn.lock +/tmp \ No newline at end of file diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 54b7e548..bde878af 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,6 +1,61 @@ import { RequestHandler } from "express"; +import { missionInventoryUpdate } from "@/src/services/inventoryService"; +import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; +/* +- [ ] crossPlaySetting +- [ ] rewardsMultiplier +- [ ] ActiveBoosters +- [x] LongGuns +- [x] Pistols +- [x] Suits +- [x] Melee +- [x] RawUpgrades +- [x] MiscItems +- [x] RegularCredits +- [ ] RandomUpgradesIdentified +- [ ] MissionFailed +- [ ] MissionStatus +- [ ] CurrentLoadOutIds +- [ ] AliveTime +- [ ] MissionTime +- [ ] Missions +- [ ] CompletedAlerts +- [ ] LastRegionPlayed +- [ ] GameModeId +- [ ] hosts +- [x] ChallengeProgress +- [ ] SeasonChallengeHistory +- [ ] PS +- [ ] ActiveDojoColorResearch +- [ ] RewardInfo +- [ ] ReceivedCeremonyMsg +- [ ] LastCeremonyResetDate +- [ ] MissionPTS +- [ ] RepHash +- [ ] EndOfMatchUpload +- [ ] ObjectiveReached +- [ ] FpsAvg +- [ ] FpsMin +- [ ] FpsMax +- [ ] FpsSamples +*/ -const missionInventoryUpdateController: RequestHandler = (_req, res) => { +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const missionInventoryUpdateController: RequestHandler = async (req, res) => { + const [data] = String(req.body).split("\n"); + const id = req.query.accountId as string; + + // TODO - salt check + + try { + const parsedData = JSON.parse(data) as MissionInventoryUpdate; + if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format"); + await missionInventoryUpdate(parsedData, id); + } catch (err) { + console.error("Error parsing JSON data:", err); + } + + // TODO - get original response res.json({}); }; diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts new file mode 100644 index 00000000..4e988ccc --- /dev/null +++ b/src/controllers/stats/viewController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const viewController: RequestHandler = (_req, res) => { + res.json({}); +}; + +export { viewController }; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index 552cc1f3..f73dd1fb 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,5 +1,5 @@ import { Model, Schema, Types, model } from "mongoose"; -import { FlavourItem, IInventoryDatabase } from "../types/inventoryTypes/inventoryTypes"; +import { FlavourItem, RawUpgrade, MiscItem, IInventoryDatabase, Booster } from "../types/inventoryTypes/inventoryTypes"; import { Oid } from "../types/commonTypes"; import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; @@ -66,6 +66,11 @@ const WeaponSchema = new Schema({ UnlockLevel: Number }); +const BoosterSchema = new Schema({ + ExpiryDate: Number, + ItemType: String +}); + WeaponSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call @@ -213,7 +218,7 @@ const inventorySchema = new Schema({ LoreFragmentScans: [Schema.Types.Mixed], EquippedEmotes: [String], PendingTrades: [Schema.Types.Mixed], - Boosters: [Schema.Types.Mixed], + Boosters: [BoosterSchema], ActiveDojoColorResearch: String, SentientSpawnChanceBoosters: Schema.Types.Mixed, Affiliations: [Schema.Types.Mixed], @@ -334,6 +339,9 @@ type InventoryDocumentProps = { Pistols: Types.DocumentArray; Melee: Types.DocumentArray; FlavourItems: Types.DocumentArray; + RawUpgrades: Types.DocumentArray; + MiscItems: Types.DocumentArray; + Boosters: Types.DocumentArray; }; type InventoryModelType = Model; diff --git a/src/routes/stats.ts b/src/routes/stats.ts index 96b68e13..a0df739f 100644 --- a/src/routes/stats.ts +++ b/src/routes/stats.ts @@ -1,7 +1,11 @@ +import { viewController } from "../controllers/api/viewController"; import { uploadController } from "@/src/controllers/stats/uploadController"; + import express from "express"; const statsRouter = express.Router(); +statsRouter.get("/view.php", viewController); statsRouter.post("/upload.php", uploadController); + export { statsRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 41b22959..19900497 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -5,7 +5,13 @@ import { Types } from "mongoose"; import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; -import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; +import { ChallengeProgress, FlavourItem, IInventoryDatabaseDocument } from "@/src/types/inventoryTypes/inventoryTypes"; +import { + MissionInventoryUpdate, + MissionInventoryUpdateCard, + MissionInventoryUpdateGear, + MissionInventoryUpdateItem +} from "../types/missionInventoryUpdateType"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -106,4 +112,97 @@ export const addCustomization = async (customizatonName: string, accountId: stri return changedInventory.FlavourItems[flavourItemIndex].toJSON(); //mongoose bug forces as FlavourItem }; +const addGearExpByCategory = ( + inventory: IInventoryDatabaseDocument, + gearArray: MissionInventoryUpdateGear[] | undefined, + categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" +) => { + const category = inventory[categoryName]; + + gearArray?.forEach(({ ItemId, XP }) => { + const itemIndex = category.findIndex(i => i._id?.equals(ItemId.$oid)); + const item = category[itemIndex]; + + if (itemIndex !== -1 && item.XP != undefined) { + item.XP += XP; + inventory.markModified(`${categoryName}.${itemIndex}.XP`); + } + }); +}; + +const addItemsByCategory = ( + inventory: IInventoryDatabaseDocument, + itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, + categoryName: "RawUpgrades" | "MiscItems" +) => { + const category = inventory[categoryName]; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = category.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + category[itemIndex].ItemCount += ItemCount; + inventory.markModified(`${categoryName}.${itemIndex}.ItemCount`); + } else { + category.push({ ItemCount, ItemType }); + } + }); +}; + +const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: ChallengeProgress[] | undefined) => { + const category = inventory.ChallengeProgress; + + itemsArray?.forEach(({ Name, Progress }) => { + const itemIndex = category.findIndex(i => i.Name === Name); + + if (itemIndex !== -1) { + category[itemIndex].Progress += Progress; + inventory.markModified(`ChallengeProgress.${itemIndex}.ItemCount`); + } else { + category.push({ Name, Progress }); + } + }); +}; + +const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; +type GearKeysType = (typeof gearKeys)[number]; + +export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accountId: string): Promise => { + const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data; + const inventory = await getInventory(accountId); + + // TODO - multipliers logic + // credits + inventory.RegularCredits += RegularCredits || 0; + + // gear exp + gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); + + // other + addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); // TODO - check mods fusion level + addItemsByCategory(inventory, MiscItems, "MiscItems"); + addChallenges(inventory, ChallengeProgress); + + await inventory.save(); +}; + +export const addBooster = async (ItemType: string, time: number, accountId: string): Promise => { + const currentTime = Math.floor(Date.now() / 1000) - 129600; // booster time getting more without 129600, probably defence logic, idk + + const inventory = await getInventory(accountId); + const { Boosters } = inventory; + + const itemIndex = Boosters.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + const existingBooster = Boosters[itemIndex]; + existingBooster.ExpiryDate = Math.max(existingBooster.ExpiryDate, currentTime) + time; + inventory.markModified(`Boosters.${itemIndex}.ExpiryDate`); + } else { + Boosters.push({ ItemType, ExpiryDate: currentTime + time }) - 1; + } + + await inventory.save(); +}; + export { createInventory, addPowerSuit }; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 16716573..8b88cd86 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,13 +1,7 @@ import { getWeaponType } from "@/src/helpers/purchaseHelpers"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; -import { - addCustomization, - addPowerSuit, - addWeapon, - updateCurrency, - updateSlots -} from "@/src/services/inventoryService"; -import { IPurchaseRequest, IPurchaseResponse, SlotType } from "@/src/types/purchaseTypes"; +import { addBooster, addCustomization, addPowerSuit, addWeapon, updateSlots } from "@/src/services/inventoryService"; +import { IPurchaseRequest, SlotType } from "@/src/types/purchaseTypes"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -41,6 +35,9 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI case "Types": purchaseResponse = await handleTypesPurchase(internalName, accountId); break; + case "Boosters": + purchaseResponse = await handleBoostersPurchase(internalName, accountId); + break; default: throw new Error(`unknown store category: ${storeCategory} not implemented or new`); @@ -114,3 +111,29 @@ const handleSuitCustomizationsPurchase = async (customizationName: string, accou } }; }; + +const boosterCollection = [ + "/Lotus/Types/Boosters/ResourceAmountBooster", + "/Lotus/Types/Boosters/AffinityBooster", + "/Lotus/Types/Boosters/ResourceDropChanceBooster", + "/Lotus/Types/Boosters/CreditBooster" +]; + +const handleBoostersPurchase = async (boosterStoreName: string, accountId: string) => { + const match = boosterStoreName.match(/(\d+)Day/); + if (!match) return; + + const extractedDigit = Number(match[1]); + const ItemType = boosterCollection.find(i => + boosterStoreName.includes(i.split("/").pop()!.replace("Booster", "")) + )!; + const ExpiryDate = extractedDigit * 86400; + + await addBooster(ItemType, ExpiryDate, accountId); + + return { + InventoryChanges: { + Boosters: [{ ItemType, ExpiryDate }] + } + }; +}; diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 187d5ab1..7dc8ca5f 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -1,8 +1,11 @@ import { Oid } from "@/src/types/commonTypes"; import { AbilityOverride, Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { Document } from "mongoose"; +import { Document, Types } from "mongoose"; -export interface ISuitDocument extends ISuitResponse, Document {} +// export interface ISuitDocument extends ISuitResponse, Document {} +export interface ISuitDocument extends Document, ISuitResponse { + _id: Types.ObjectId; +} export interface ISuitResponse extends ISuitDatabase { ItemId: Oid; @@ -20,6 +23,7 @@ export interface ISuitDatabase { ModSlotPurchases?: number; FocusLens?: string; UnlockLevel?: number; + _id: Types.ObjectId; } export interface SuitConfig { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 938ac651..b175dc64 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -377,6 +377,16 @@ export interface FlavourItem { ItemType: string; } +export interface RawUpgrade { + ItemCount: number; + ItemType: string; +} + +export interface MiscItem { + ItemCount: number; + ItemType: string; +} + export interface CrewshipWeapon { PILOT: Pilot; PORT_GUNS: PortGuns; @@ -919,7 +929,7 @@ export interface Progress { export interface RawUpgrade { ItemCount: number; - LastAdded: Oid; + LastAdded?: Oid; ItemType: string; } diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 3c561e2d..7fe6bf40 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -1,5 +1,6 @@ import { Oid } from "@/src/types/commonTypes"; import { Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { Types } from "mongoose"; export interface IWeaponResponse extends IWeaponDatabase { ItemId: Oid; @@ -20,6 +21,7 @@ export interface IWeaponDatabase { ItemName?: string; ModularParts?: string[]; UnlockLevel?: number; + _id?: Types.ObjectId; } export interface WeaponConfig { diff --git a/src/types/missionInventoryUpdateType.ts b/src/types/missionInventoryUpdateType.ts new file mode 100644 index 00000000..dcc88da0 --- /dev/null +++ b/src/types/missionInventoryUpdateType.ts @@ -0,0 +1,64 @@ +interface MongooseId{ + $oid: string; +} + +interface ExpireDate{ + $date: { + $numberLong: string; + } +} + +export interface MissionInventoryUpdateGear{ + ItemType: string; + ItemName: string; + ItemId: MongooseId; + XP: number; + UpgradeVer: number; + Features: number; + Polarized: number; + CustomizationSlotPurchases: number; + ModSlotPurchases: number; + FocusLens: string; + Expiry: ExpireDate; + Polarity: any[]; + Configs: any[]; + ModularParts: any[]; + SkillTree: string; + UpgradeType: string; + UpgradeFingerprint: string; + OffensiveUpgrade: string; + DefensiveUpgrade: string; + UpgradesExpiry: ExpireDate; + ArchonCrystalUpgrades: any[]; +} + +export interface MissionInventoryUpdateItem{ + ItemCount: number; + ItemType: string; +} + +export interface MissionInventoryUpdateCard extends MissionInventoryUpdateItem{ + ItemId: MongooseId; + UpgradeFingerprint: string; + PendingRerollFingerprint: string; + LastAdded: MongooseId; +} + +interface MissionInventoryUpdateChallange{ + Name: string; + Progress: number; + Completed: any[]; +} + +export interface MissionInventoryUpdate{ + rewardsMultiplier?: number; + ActiveBoosters?: any[]; + LongGuns?: MissionInventoryUpdateGear[]; + Pistols?: MissionInventoryUpdateGear[]; + Suits?: MissionInventoryUpdateGear[]; + Melee?: MissionInventoryUpdateGear[]; + RawUpgrades?: MissionInventoryUpdateCard[]; + MiscItems?: MissionInventoryUpdateItem[]; + RegularCredits?: number; + ChallengeProgress?: MissionInventoryUpdateChallange[]; +} \ No newline at end of file -- 2.47.2 From 2a1bc4c252ae4e182f6720467c94607cbb3c4755 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Fri, 1 Sep 2023 17:54:20 +0200 Subject: [PATCH 033/522] update 33.6.7 (#48) --- config.json | 8 +- static/fixed_responses/worldState.json | 1620 ++++++++++++------------ 2 files changed, 797 insertions(+), 831 deletions(-) diff --git a/config.json b/config.json index 4a3528d4..a05a3e89 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.08.22.13.10/sNbi6ap4s+Bi3+bWHbbR-A", - "matchmakingBuildId": "8456758659036605129", - "version": "33.6.6", - "worldSeed": "amwSB56Gk/0ZYTpQ+9idAK7hqsbE0NoQtFQOTOmsdaDXD+hbhsl5cqwAEqN6l739CmDapHz8JAUgYwV+q/9Sdc681a3hvuA6rRoFkk+M+GrRjeB1A13QQb2tVSHx0eVeTvFwut3PfsYM3dbTV+ilyJgwwSQ68n7bO0OB9sJ7Ry50lmCbhx6LZH6Xc2uSCFtliqiEHMN/X+977KDR6hZEv7Us+XtTVwCOlv8GtUm4mRGbkxtmlXqpw9PZ1JGyyBIoOrkXYFOiiILF5Knd10bkT/mVFdnzbVvQZqXw6x+Cg9V5grrrYYkDYE9Jt4XT7chIUhhyLmibFG4q2nKRzlJxIw==", + "buildLabel": "2023.08.31.08.49/GF1WtVJD8oH48xuIF4Cm-A", + "matchmakingBuildId": "2303555329115379348", + "version": "33.6.7", + "worldSeed": "Y7nz7/N46OXUuG0UFBiaQhuY59a8IR8fIpwPJu3Uw0y0WGqS1BTISQ3FiQ4RV2Q4L19X7rr9864tDFU2xklR+PvdayCI+/+07iHK2LzxoaSRysylW/3U5rINPDLA4akw5LwsMltL3VuEyxvn9MXKamUO27i+lP5Bsg6Fbmx4UwgqOjQaYMjAqPn0yy+VY6vZsQJFCCLM5wDghhpcwDuTFzakKiq4N5nKPc7+VPNDRKE6qlMzPRt9DCzrtpakn6/WdFecmt9Gzl/HFe1fmZSYE1bEbvL93d1Nvi391YZNLIlRqSg/h+Hirbw8pT7xxbgsXVyJo/TbyivwyQt/ay70Vw==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 93d7baf7..e8ce33a3 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "amwSB56Gk/0ZYTpQ+9idAK7hqsbE0NoQtFQOTOmsdaDXD+hbhsl5cqwAEqN6l739CmDapHz8JAUgYwV+q/9Sdc681a3hvuA6rRoFkk+M+GrRjeB1A13QQb2tVSHx0eVeTvFwut3PfsYM3dbTV+ilyJgwwSQ68n7bO0OB9sJ7Ry50lmCbhx6LZH6Xc2uSCFtliqiEHMN/X+977KDR6hZEv7Us+XtTVwCOlv8GtUm4mRGbkxtmlXqpw9PZ1JGyyBIoOrkXYFOiiILF5Knd10bkT/mVFdnzbVvQZqXw6x+Cg9V5grrrYYkDYE9Jt4XT7chIUhhyLmibFG4q2nKRzlJxIw==", + "WorldSeed": "Y7nz7/N46OXUuG0UFBiaQhuY59a8IR8fIpwPJu3Uw0y0WGqS1BTISQ3FiQ4RV2Q4L19X7rr9864tDFU2xklR+PvdayCI+/+07iHK2LzxoaSRysylW/3U5rINPDLA4akw5LwsMltL3VuEyxvn9MXKamUO27i+lP5Bsg6Fbmx4UwgqOjQaYMjAqPn0yy+VY6vZsQJFCCLM5wDghhpcwDuTFzakKiq4N5nKPc7+VPNDRKE6qlMzPRt9DCzrtpakn6/WdFecmt9Gzl/HFe1fmZSYE1bEbvL93d1Nvi391YZNLIlRqSg/h+Hirbw8pT7xxbgsXVyJo/TbyivwyQt/ay70Vw==", "Version": 10, "MobileVersion": "4.15.16.0", - "BuildLabel": "2023.08.22.13.10/sNbi6ap4s+Bi3+bWHbbR-A", - "Time": 1693332073, + "BuildLabel": "2023.08.31.08.49/GF1WtVJD8oH48xuIF4Cm-A", + "Time": 1693582905, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -247,46 +247,61 @@ "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/2b90772068288612d6e81acbca5076c0_1600x900.png", "Priority": false, "MobileOnly": false + }, + { + "_id": { "$oid": "64ee4238f44c6eb2880e9a5b" }, + "Messages": [{ "LanguageCode": "ja", "Message": "金曜コミュニティDrops! - 日本時間9月2日" }], + "Prop": "https://bit.ly/3QVMQFv", + "Date": { "$date": { "$numberLong": "1693336080000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64ef93d6d8ca7f26c910082d" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Heirloom Collection Platinum Changes & Lessons" }], + "Prop": "https://forums.warframe.com/topic/1364919-psa-heirloom-collection-platinum-changes-lessons/", + "Date": { "$date": { "$numberLong": "1693422480000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64f0a98ef1c991e5fe0c9a82" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Stream du vendredi : 1er sept." }], + "Prop": "https://forums.warframe.com/topic/1365008-stream-communautaire-du-vendredi-1er-septembre/", + "Date": { "$date": { "$numberLong": "1693493580000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64f0b4415d1e1abcf10c5d05" }, + "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.7" }], + "Prop": "https://www.warframe.com/updates/pc/33-6-7", + "Date": { "$date": { "$numberLong": "1693495800000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "64f0cc64e65af842c407f41d" }, + "Messages": [{ "LanguageCode": "ko", "Message": "텐노콘 2023 요약" }], + "Prop": "", + "Links": [{ "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/news/tennocon-2023-recap-ko" }], + "Date": { "$date": { "$numberLong": "1693502520000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64f0d95ea55363453207c52f" }, + "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.7" }], + "Prop": "https://forums.warframe.com/topic/1365031-ecos-de-duviri-revisi%C3%B3n-3367/", + "Date": { "$date": { "$numberLong": "1693502220000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true } ], "Goals": [ - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1692201600000" } }, - "Expiry": { "$date": { "$numberLong": "1693411200000" } }, - "Node": "SolNode129", - "ScoreVar": "FissuresClosed", - "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", - "Count": 20, - "HealthPct": 0.2, - "Regions": [1], - "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", - "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", - "OptionalInMission": true, - "Tag": "HeatFissure", - "UpgradeIds": [{ "$oid": "64dbcd89a52b0821bd62d4ff" }, { "$oid": "64dbcd89a52b0821bd62d500" }], - "Personal": true, - "Community": true, - "Goal": 100, - "Reward": { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], "countedItems": [] }, - "InterimGoals": [5, 25, 50, 75], - "InterimRewards": [ - { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], "countedItems": [] }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], - "countedItems": [] - }, - { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], "countedItems": [] } - ] - }, { "_id": { "$oid": "64c40eb98d92df18906c172f" }, "Activation": { "$date": { "$numberLong": "1693062000000" } }, @@ -348,17 +363,17 @@ "Alerts": [], "Sorties": [ { - "_id": { "$oid": "64ee127d4dcb8f9d635af5ee" }, - "Activation": { "$date": { "$numberLong": "1693324800000" } }, - "Expiry": { "$date": { "$numberLong": "1693411200000" } }, + "_id": { "$oid": "64f0b57d96c16ce392b36c97" }, + "Activation": { "$date": { "$numberLong": "1693497600000" } }, + "Expiry": { "$date": { "$numberLong": "1693584000000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 50763, - "Boss": "SORTIE_BOSS_ALAD", + "Seed": 55647, + "Boss": "SORTIE_BOSS_LEPHANTIS", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_DEFENSE", "modifierType": "SORTIE_MODIFIER_SHIELDS", "node": "SolNode51", "tileset": "CorpusOutpostTileset" }, - { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_FIRE", "node": "SolNode104", "tileset": "CorpusShipTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_SECONDARY_ONLY", "node": "SolNode53", "tileset": "CorpusGasCityTileset" } + { "missionType": "MT_SURVIVAL", "modifierType": "SORTIE_MODIFIER_IMPACT", "node": "SolNode708", "tileset": "OrokinDerelictTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode88", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_HIVE", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode166", "tileset": "InfestedCorpusShipTileset" } ], "Twitter": true } @@ -380,199 +395,199 @@ ], "SyndicateMissions": [ { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb3e" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c58121407d1631c9e8" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "ArbitersSyndicate", - "Seed": 50763, - "Nodes": ["SolNode15", "SolNode224", "SettlementNode12", "SolNode128", "SolNode132", "SolNode404", "SolNode189"] + "Seed": 55647, + "Nodes": ["SolNode58", "SolNode23", "SolNode125", "SolNode19", "SolNode118", "SettlementNode14", "SolNode103"] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb3f" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9e9" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 13269, - "Nodes": ["SolNode23", "SolNode85", "SolNode225", "SolNode73", "SolNode1", "SolNode171", "SolNode76"] + "Seed": 22320, + "Nodes": ["SolNode130", "SolNode109", "SolNode27", "SolNode709", "SolNode220", "SolNode172", "SettlementNode15"] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb40" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9ea" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "NecraloidSyndicate", - "Seed": 75544, + "Seed": 38762, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb42" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, - "Tag": "KahlSyndicate", - "Seed": 22875, - "Nodes": [] - }, - { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb41" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9eb" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "EventSyndicate", - "Seed": 55704, + "Seed": 42533, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb43" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9ec" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, + "Tag": "KahlSyndicate", + "Seed": 16649, + "Nodes": [] + }, + { + "_id": { "$oid": "64f0b8c68121407d1631c9ed" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "NewLokaSyndicate", - "Seed": 82304, - "Nodes": ["SolNode66", "SolNode223", "SettlementNode1", "SolNode93", "SolNode63", "SolNode64", "SolNode214"] + "Seed": 66355, + "Nodes": ["SolNode113", "SolNode22", "SolNode214", "SolNode711", "SolNode135", "SolNode59", "SolNode164"] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb44" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9ee" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "QuillsSyndicate", - "Seed": 79301, + "Seed": 17520, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb47" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 45775, - "Nodes": [] - }, - { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb45" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9ef" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "PerrinSyndicate", - "Seed": 6221, - "Nodes": ["SolNode68", "SolNode12", "SolNode135", "SolNode75", "SolNode72", "SolNode205", "SolNode410"] + "Seed": 68049, + "Nodes": ["SolNode39", "SolNode2", "SolNode12", "SolNode139", "SolNode184", "SolNode79", "SettlementNode1"] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb46" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f0" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 82230, + "Seed": 98225, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb49" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 48405, + "_id": { "$oid": "64f0b8c68121407d1631c9f1" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 18715, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb48" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f2" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 74726, + "Seed": 87943, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4a" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f3" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 85233, + "Nodes": [] + }, + { + "_id": { "$oid": "64f0b8c68121407d1631c9f4" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 31317, + "Seed": 75089, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4b" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f5" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 95375, + "Seed": 29427, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4c" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f6" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 8792, + "Seed": 16454, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4d" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f7" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 91626, + "Seed": 56233, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4e" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f8" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 38016, + "Seed": 42900, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb50" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 68371, - "Nodes": [] - }, - { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb4f" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9f9" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 5059, + "Seed": 33554, "Nodes": [] }, { - "_id": { "$oid": "64ee15c5d03b3df1ccf9bb51" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9fa" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 3812, + "Nodes": [] + }, + { + "_id": { "$oid": "64f0b8c68121407d1631c9fb" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "RedVeilSyndicate", - "Seed": 44313, - "Nodes": ["SolNode14", "SolNode107", "SolNode67", "SolNode39", "SolNode57", "SolNode167", "SolNode191"] + "Seed": 70031, + "Nodes": ["SolNode106", "SolNode107", "SettlementNode2", "SolNode89", "SolNode707", "SolNode408", "SolNode62"] }, { - "_id": { "$oid": "64ee15c6d03b3df1ccf9bb53" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, - "Tag": "VoxSyndicate", - "Seed": 69464, - "Nodes": [] - }, - { - "_id": { "$oid": "64ee15c6d03b3df1ccf9bb52" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9fc" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, "Tag": "VentKidsSyndicate", - "Seed": 88995, + "Seed": 68880, "Nodes": [] }, { - "_id": { "$oid": "64ee15c6d03b3df1ccf9bb54" }, - "Activation": { "$date": { "$numberLong": "1693324741593" } }, - "Expiry": { "$date": { "$numberLong": "1693411140000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 7315, - "Nodes": ["SolNode26", "SolNode2", "SettlementNode14", "SolNode711", "SolNode56", "SolNode119", "SolNode172"] + "_id": { "$oid": "64f0b8c68121407d1631c9fd" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, + "Tag": "VoxSyndicate", + "Seed": 72959, + "Nodes": [] }, { - "_id": { "$oid": "64ee264b0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1693328971379" } }, - "Expiry": { "$date": { "$numberLong": "1693337970253" } }, + "_id": { "$oid": "64f0b8c68121407d1631c9fe" }, + "Activation": { "$date": { "$numberLong": "1693497541973" } }, + "Expiry": { "$date": { "$numberLong": "1693583940000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 17755, + "Nodes": ["SolNode15", "SolNode46", "SolNode212", "SolNode140", "SolNode402", "SolNode187", "SolNode101"] + }, + { + "_id": { "$oid": "64f1fe8b0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1693580939873" } }, + "Expiry": { "$date": { "$numberLong": "1693589938747" } }, "Tag": "EntratiSyndicate", - "Seed": 21261, + "Seed": 57403, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, @@ -580,15 +595,15 @@ "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableCRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [9, 9, 9] + "xpAmounts": [11, 11, 11] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", "masteryReq": 5, "minEnemyLevel": 25, @@ -598,23 +613,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [18, 18, 18, 28] + "xpAmounts": [19, 19, 19, 29] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 41] + "xpAmounts": [21, 21, 21, 21, 42] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -622,7 +637,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -631,7 +646,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -640,7 +655,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -651,20 +666,94 @@ ] }, { - "_id": { "$oid": "64ee264b0000000000000007" }, - "Activation": { "$date": { "$numberLong": "1693328971379" } }, - "Expiry": { "$date": { "$numberLong": "1693337970253" } }, - "Tag": "CetusSyndicate", - "Seed": 21261, + "_id": { "$oid": "64f1fe8b0000000000000026" }, + "Activation": { "$date": { "$numberLong": "1693580939873" } }, + "Expiry": { "$date": { "$numberLong": "1693589938747" } }, + "Tag": "ZarimanSyndicate", + "Seed": 57404, + "Nodes": [] + }, + { + "_id": { "$oid": "64f1fe8b0000000000000022" }, + "Activation": { "$date": { "$numberLong": "1693580939873" } }, + "Expiry": { "$date": { "$numberLong": "1693589938747" } }, + "Tag": "SolarisSyndicate", + "Seed": 57403, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [360, 360, 360] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [720, 720, 720] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [580, 580, 580, 860] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [580, 580, 580, 580, 1140] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [700, 700, 700, 700, 1380] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [820, 820, 820, 820, 1610] + } + ] + }, + { + "_id": { "$oid": "64f1fe8b0000000000000007" }, + "Activation": { "$date": { "$numberLong": "1693580939873" } }, + "Expiry": { "$date": { "$numberLong": "1693589938747" } }, + "Tag": "CetusSyndicate", + "Seed": 57403, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [440, 440, 440] + "xpAmounts": [480, 480, 480] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", @@ -672,34 +761,34 @@ "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [690, 690, 690] + "xpAmounts": [660, 660, 660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 900] + "xpAmounts": [580, 580, 580, 860] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [590, 590, 590, 590, 1160] + "xpAmounts": [560, 560, 560, 560, 1090] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [720, 720, 720, 720, 1420] + "xpAmounts": [730, 730, 730, 730, 1430] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -712,283 +801,231 @@ "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [830, 830, 830, 830, 1630] - } - ] - }, - { - "_id": { "$oid": "64ee264b0000000000000026" }, - "Activation": { "$date": { "$numberLong": "1693328971379" } }, - "Expiry": { "$date": { "$numberLong": "1693337970253" } }, - "Tag": "ZarimanSyndicate", - "Seed": 21262, - "Nodes": [] - }, - { - "_id": { "$oid": "64ee264b0000000000000022" }, - "Activation": { "$date": { "$numberLong": "1693328971379" } }, - "Expiry": { "$date": { "$numberLong": "1693337970253" } }, - "Tag": "SolarisSyndicate", - "Seed": 21261, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [470, 470, 470] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [690, 690, 690] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [660, 660, 660, 980] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [630, 630, 630, 630, 1240] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [740, 740, 740, 740, 1450] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1610] + "xpAmounts": [770, 770, 770, 770, 1500] } ] } ], "ActiveMissions": [ { - "_id": { "$oid": "64ee172d646a0d83af89fbe6" }, - "Region": 5, - "Seed": 76652, - "Activation": { "$date": { "$numberLong": "1693325101616" } }, - "Expiry": { "$date": { "$numberLong": "1693332229056" } }, - "Node": "SolNode10", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "64ee1c9264053283836c5e0d" }, - "Region": 9, - "Seed": 65359, - "Activation": { "$date": { "$numberLong": "1693326481956" } }, - "Expiry": { "$date": { "$numberLong": "1693333572769" } }, - "Node": "SolNode72", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "64ee1c9264053283836c5e0e" }, - "Region": 11, - "Seed": 36461, - "Activation": { "$date": { "$numberLong": "1693326481956" } }, - "Expiry": { "$date": { "$numberLong": "1693332210801" } }, - "Node": "SolNode164", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "64ee1c9264053283836c5e0f" }, - "Region": 6, - "Seed": 85505, - "Activation": { "$date": { "$numberLong": "1693326481956" } }, - "Expiry": { "$date": { "$numberLong": "1693333286871" } }, - "Node": "SolNode50", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64ee1c9264053283836c5e11" }, - "Region": 10, - "Seed": 2403, - "Activation": { "$date": { "$numberLong": "1693326481956" } }, - "Expiry": { "$date": { "$numberLong": "1693332398077" } }, - "Node": "SolNode135", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64ee1e35f83b0f35592f0b97" }, - "Region": 4, - "Seed": 88015, - "Activation": { "$date": { "$numberLong": "1693326901464" } }, - "Expiry": { "$date": { "$numberLong": "1693333987686" } }, - "Node": "SolNode106", - "MissionType": "MT_TERRITORY", + "_id": { "$oid": "64f1ee261dc114bcd392ba9b" }, + "Region": 3, + "Seed": 6557, + "Activation": { "$date": { "$numberLong": "1693576742069" } }, + "Expiry": { "$date": { "$numberLong": "1693583604338" } }, + "Node": "SolNode89", + "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "64ee2015742e1b8188735f4e" }, - "Region": 8, - "Seed": 22277, - "Activation": { "$date": { "$numberLong": "1693327381359" } }, - "Expiry": { "$date": { "$numberLong": "1693332151268" } }, - "Node": "SolNode17", + "_id": { "$oid": "64f1fb09f72174e6178ccd0f" }, + "Region": 12, + "Seed": 36790, + "Activation": { "$date": { "$numberLong": "1693580041416" } }, + "Expiry": { "$date": { "$numberLong": "1693584011295" } }, + "Node": "SolNode195", "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3", - "Hard": true + "Modifier": "VoidT4" }, { - "_id": { "$oid": "64ee2015742e1b8188735f4f" }, + "_id": { "$oid": "64f1fb09f72174e6178ccd10" }, + "Region": 15, + "Seed": 81760, + "Activation": { "$date": { "$numberLong": "1693580041416" } }, + "Expiry": { "$date": { "$numberLong": "1693586977245" } }, + "Node": "SolNode400", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "64f1fb45ad7c0add5ecd8a7d" }, + "Region": 19, + "Seed": 17170, + "Activation": { "$date": { "$numberLong": "1693580101597" } }, + "Expiry": { "$date": { "$numberLong": "1693584036244" } }, + "Node": "SolNode747", + "MissionType": "MT_INTEL", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "64f1fb45ad7c0add5ecd8a7e" }, + "Region": 19, + "Seed": 66446, + "Activation": { "$date": { "$numberLong": "1693580101597" } }, + "Expiry": { "$date": { "$numberLong": "1693584818608" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "64f1fb45ad7c0add5ecd8a7f" }, + "Region": 19, + "Seed": 51601, + "Activation": { "$date": { "$numberLong": "1693580101597" } }, + "Expiry": { "$date": { "$numberLong": "1693584717416" } }, + "Node": "SolNode743", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "64f1fb81043a1b2f8b45c128" }, + "Region": 10, + "Seed": 3484, + "Activation": { "$date": { "$numberLong": "1693580161488" } }, + "Expiry": { "$date": { "$numberLong": "1693584590278" } }, + "Node": "SolNode131", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "64f1fb81043a1b2f8b45c129" }, + "Region": 5, + "Seed": 24587, + "Activation": { "$date": { "$numberLong": "1693580161488" } }, + "Expiry": { "$date": { "$numberLong": "1693584109787" } }, + "Node": "SolNode25", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "64f1fb81043a1b2f8b45c12a" }, "Region": 13, - "Seed": 93585, - "Activation": { "$date": { "$numberLong": "1693327381359" } }, - "Expiry": { "$date": { "$numberLong": "1693333425807" } }, + "Seed": 48981, + "Activation": { "$date": { "$numberLong": "1693580161488" } }, + "Expiry": { "$date": { "$numberLong": "1693587023534" } }, "Node": "SolNode211", "MissionType": "MT_TERRITORY", "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "64ee262e3e33a6de824157ab" }, - "Region": 2, - "Seed": 28971, - "Activation": { "$date": { "$numberLong": "1693328941990" } }, - "Expiry": { "$date": { "$numberLong": "1693335730615" } }, - "Node": "SolNode61", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "64ee26a5b3cf7338de535ae7" }, - "Region": 19, - "Seed": 70997, - "Activation": { "$date": { "$numberLong": "1693329061711" } }, - "Expiry": { "$date": { "$numberLong": "1693336051054" } }, - "Node": "SolNode747", - "MissionType": "MT_INTEL", - "Modifier": "VoidT5", + "_id": { "$oid": "64f1fb81043a1b2f8b45c12b" }, + "Region": 15, + "Seed": 8526, + "Activation": { "$date": { "$numberLong": "1693580161488" } }, + "Expiry": { "$date": { "$numberLong": "1693585249728" } }, + "Node": "SolNode402", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "64ee2a2a1d079534c49d905e" }, + "_id": { "$oid": "64f1fc72ed53353aa405d6ca" }, + "Region": 4, + "Seed": 84471, + "Activation": { "$date": { "$numberLong": "1693580402049" } }, + "Expiry": { "$date": { "$numberLong": "1693584563374" } }, + "Node": "SolNode68", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "64f200e5c8ef1e4aaed9c253" }, + "Region": 12, + "Seed": 75335, + "Activation": { "$date": { "$numberLong": "1693581541517" } }, + "Expiry": { "$date": { "$numberLong": "1693588648503" } }, + "Node": "SolNode188", + "MissionType": "MT_INTEL", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "64f200e5c8ef1e4aaed9c254" }, + "Region": 11, + "Seed": 85327, + "Activation": { "$date": { "$numberLong": "1693581541517" } }, + "Expiry": { "$date": { "$numberLong": "1693585862332" } }, + "Node": "SolNode173", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "64f20211dadb77bae62726e6" }, + "Region": 8, + "Seed": 24417, + "Activation": { "$date": { "$numberLong": "1693581841553" } }, + "Expiry": { "$date": { "$numberLong": "1693586236105" } }, + "Node": "SolNode62", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64f20211dadb77bae62726e7" }, + "Region": 13, + "Seed": 33997, + "Activation": { "$date": { "$numberLong": "1693581841553" } }, + "Expiry": { "$date": { "$numberLong": "1693587945249" } }, + "Node": "SolNode205", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64f20211dadb77bae62726e8" }, "Region": 7, - "Seed": 86337, - "Activation": { "$date": { "$numberLong": "1693329962030" } }, - "Expiry": { "$date": { "$numberLong": "1693336381875" } }, + "Seed": 71560, + "Activation": { "$date": { "$numberLong": "1693581841553" } }, + "Expiry": { "$date": { "$numberLong": "1693586277339" } }, "Node": "SolNode122", "MissionType": "MT_DEFENSE", "Modifier": "VoidT3" }, { - "_id": { "$oid": "64ee2a2a1d079534c49d905f" }, - "Region": 8, - "Seed": 25135, - "Activation": { "$date": { "$numberLong": "1693329962030" } }, - "Expiry": { "$date": { "$numberLong": "1693335949457" } }, - "Node": "SolNode78", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "64ee2a2a1d079534c49d9060" }, - "Region": 13, - "Seed": 72163, - "Activation": { "$date": { "$numberLong": "1693329962030" } }, - "Expiry": { "$date": { "$numberLong": "1693335717022" } }, - "Node": "SolNode215", - "MissionType": "MT_INTEL", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "64ee2add4a3adecda4bf43fd" }, - "Region": 12, - "Seed": 5514, - "Activation": { "$date": { "$numberLong": "1693330141547" } }, - "Expiry": { "$date": { "$numberLong": "1693335805688" } }, - "Node": "SolNode196", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "64ee2add4a3adecda4bf43fe" }, - "Region": 15, - "Seed": 60361, - "Activation": { "$date": { "$numberLong": "1693330141547" } }, - "Expiry": { "$date": { "$numberLong": "1693334972375" } }, - "Node": "SolNode403", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "64ee2add4a3adecda4bf43ff" }, - "Region": 11, - "Seed": 60476, - "Activation": { "$date": { "$numberLong": "1693330141547" } }, - "Expiry": { "$date": { "$numberLong": "1693333921298" } }, - "Node": "SolNode175", - "MissionType": "MT_HIVE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "64ee2e9daccfecb03be6144a" }, - "Region": 19, - "Seed": 47046, - "Activation": { "$date": { "$numberLong": "1693331101524" } }, - "Expiry": { "$date": { "$numberLong": "1693335381776" } }, - "Node": "SolNode742", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "64ee2e9daccfecb03be6144b" }, - "Region": 19, - "Seed": 85211, - "Activation": { "$date": { "$numberLong": "1693331101524" } }, - "Expiry": { "$date": { "$numberLong": "1693336667973" } }, - "Node": "SolNode745", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "64ee31e526218cbaeb8e049f" }, + "_id": { "$oid": "64f2030118a0d776d84edfbe" }, "Region": 5, - "Seed": 31714, - "Activation": { "$date": { "$numberLong": "1693331941889" } }, - "Expiry": { "$date": { "$numberLong": "1693338473398" } }, - "Node": "SolNode25", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT2" + "Seed": 88806, + "Activation": { "$date": { "$numberLong": "1693582081142" } }, + "Expiry": { "$date": { "$numberLong": "1693586830481" } }, + "Node": "SolNode10", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64f2030118a0d776d84edfbf" }, + "Region": 10, + "Seed": 79456, + "Activation": { "$date": { "$numberLong": "1693582081142" } }, + "Expiry": { "$date": { "$numberLong": "1693589128882" } }, + "Node": "SolNode146", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64f2030118a0d776d84edfc0" }, + "Region": 16, + "Seed": 67225, + "Activation": { "$date": { "$numberLong": "1693582081142" } }, + "Expiry": { "$date": { "$numberLong": "1693585833283" } }, + "Node": "SettlementNode11", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64f2051df167e8313a7bde72" }, + "Region": 19, + "Seed": 17115, + "Activation": { "$date": { "$numberLong": "1693582621887" } }, + "Expiry": { "$date": { "$numberLong": "1693589781128" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "64f2051df167e8313a7bde73" }, + "Region": 19, + "Seed": 83675, + "Activation": { "$date": { "$numberLong": "1693582621887" } }, + "Expiry": { "$date": { "$numberLong": "1693587804737" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", + "Modifier": "VoidT5", + "Hard": true } ], "GlobalUpgrades": [], @@ -1119,47 +1156,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693494000000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693440000000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1684432800000" } }, - "EndDate": { "$date": { "$numberLong": "1693504800000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, @@ -1472,260 +1468,196 @@ }, "Invasions": [ { - "_id": { "$oid": "64ea31e9c944b9f79afe8af2" }, + "_id": { "$oid": "64f0a76d9956f6ec157c88f9" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode188", - "Count": 37315, - "Goal": 43000, + "Node": "SolNode181", + "Count": 17738, + "Goal": 42000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, "ChainID": { "$oid": "64ea31e9c944b9f79afe8af2" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 988786, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 375432, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 909983, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1693153825481" } } + "DefenderMissionInfo": { "seed": 113245, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1693493544125" } } }, { - "_id": { "$oid": "64eb616d1f1caf106f5f0879" }, + "_id": { "$oid": "64f0a76d9956f6ec157c88f8" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode181", + "Count": 0, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64ea31e9c944b9f79afe8af2" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 611818, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 734405, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1693494120248" } } + }, + { + "_id": { "$oid": "64efebed168659aa78f59af5" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode74", + "Count": -20777, + "Goal": 43000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64eb616d1f1caf106f5f0879" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 725252, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 788683, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1693445687184" } } + }, + { + "_id": { "$oid": "64f138bd21878eed35d87f57" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", "Node": "SolNode73", - "Count": 43113, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64eb616d1f1caf106f5f0879" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithBarrel", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 979350, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalReceiver", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 154921, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1693191140351" } } - }, - { - "_id": { "$oid": "64edef55e7f66291676fa2c1" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode126", - "Count": 4295, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64eb616d1f1caf106f5f0879" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 80709, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 893882, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1693315443380" } } - }, - { - "_id": { "$oid": "64ed41e54abc51aa3f7efc98" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode144", - "Count": -17821, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 334756, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 781674, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1693270501855" } } - }, - { - "_id": { "$oid": "64ed41e54abc51aa3f7efc99" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode139", - "Count": -39169, - "Goal": 39000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 307514, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 404381, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693270501855" } } - }, - { - "_id": { "$oid": "64ed6c1699099aa830f8c693" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode149", - "Count": -47734, - "Goal": 47000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 189197, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 937555, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693281302033" } } - }, - { - "_id": { "$oid": "64ed7c7d853785fc93689ccc" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode132", - "Count": -35334, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 880615, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 816730, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693285501706" } } - }, - { - "_id": { "$oid": "64ed93edbe37124e18b34e4a" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode131", - "Count": -38559, + "Count": -5329, "Goal": 38000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 634872, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 158179, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693291501628" } } - }, - { - "_id": { "$oid": "64edb265295e7c19346954b5" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode147", - "Count": -34120, - "Goal": 34000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 796806, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 307767, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693299301632" } } - }, - { - "_id": { "$oid": "64edcb010fcc1714d63a6f90" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode140", - "Count": -34155, - "Goal": 34000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed1ebdf25b7c8f99fb0b79" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 30379, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 773851, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693305601554" } } - }, - { - "_id": { "$oid": "64ed5cd9690f03a511407149" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode43", - "Count": -46143, - "Goal": 46000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 140157, "faction": "FC_CORPUS" }, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64edef55e7f66291676fa2c2" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 812740, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 818557, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693281716812" } } + "DefenderMissionInfo": { "seed": 506571, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1693531302770" } } }, { - "_id": { "$oid": "64ed812d540582dee4f8229c" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode81", - "Count": -49667, - "Goal": 49000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 205186, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 654676, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693286701444" } } - }, - { - "_id": { "$oid": "64ed812d540582dee4f8229d" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode56", - "Count": -47565, - "Goal": 47000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 747449, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 238348, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693286701444" } } - }, - { - "_id": { "$oid": "64ed9fa5d5aef57c002fbfa5" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode21", - "Count": -34197, - "Goal": 34000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 741649, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 293505, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693294501513" } } - }, - { - "_id": { "$oid": "64edab5ddea8b05af284e236" }, + "_id": { "$oid": "64f0e0d95da45afafcb32da1" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode51", - "Count": -13524, + "Count": -16540, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, + "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 391512, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 667648, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1693297501248" } } + "AttackerMissionInfo": { "seed": 951333, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 561059, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1693507801811" } } }, { - "_id": { "$oid": "64edbf49aa014a460c6b54be" }, + "_id": { "$oid": "64f11212edc4ab1f3e89508a" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode21", + "Count": -41599, + "Goal": 41000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 412817, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 824241, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693520402095" } } + }, + { + "_id": { "$oid": "64f122794bb265063ba0c5f8" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode76", - "Count": -45288, - "Goal": 45000, + "Count": -41651, + "Goal": 41000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "64ed5cd9690f03a511407149" }, + "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 526530, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 638198, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 97719, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693524601399" } } + }, + { + "_id": { "$oid": "64f122794bb265063ba0c5f9" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode72", + "Count": -39396, + "Goal": 39000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 514921, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 500677, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693524601399" } } + }, + { + "_id": { "$oid": "64f145a13e71536bba4d0226" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode102", + "Count": -36189, + "Goal": 36000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 242146, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 470104, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693302601226" } } + "DefenderMissionInfo": { "seed": 418488, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693533601301" } } + }, + { + "_id": { "$oid": "64f1560a02474f8956f2c0da" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode4", + "Count": -41176, + "Goal": 41000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 184473, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 218, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693537801955" } } + }, + { + "_id": { "$oid": "64f1560a02474f8956f2c0db" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode48", + "Count": -44197, + "Goal": 44000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 78172, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 290522, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1693537801955" } } + }, + { + "_id": { "$oid": "64f0e45e8ac08b5f126d6637" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode99", + "Count": -21114, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": false, + "ChainID": { "$oid": "64f0bdb153f5b9ae0b3db5ac" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 919272, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 369277, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1693508702086" } } } ], "HubEvents": [], @@ -1749,23 +1681,23 @@ "Activation": { "$date": { "$numberLong": "1563030000000" } } }, { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1692201600000" } }, - "Expiry": { "$date": { "$numberLong": "1693411200000" } }, - "Node": "SolNode129", - "Faction": "FC_CORPUS", - "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] - }, - { - "_id": { "$oid": "64edef55e7f66291676fa2c0" }, - "Node": "SolNode73", + "_id": { "$oid": "64f138bd21878eed35d87f56" }, + "Node": "SolNode25", "Faction": "FC_GRINEER", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerShipyardsA", - "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/GrineerCaptureTargetsMedium", - "Expiry": { "$date": { "$numberLong": "1693366766671" } } + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerDefenseForest", + "ExtraEnemySpec": "", + "Expiry": { "$date": { "$numberLong": "1693583614801" } } } ], "VoidTraders": [ + { + "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, + "Activation": { "$date": { "$numberLong": "1694178000000" } }, + "Expiry": { "$date": { "$numberLong": "1694350800000" } }, + "Id": "5d1e07a0a38e4a4fdd7cefca", + "Character": "Baro'Ki Teel", + "Node": "MercuryHUB" + }, { "_id": { "$oid": "64e8fd66ccc036553100eab0" }, "Activation": { "$date": { "$numberLong": "1693062000000" } }, @@ -2114,14 +2046,6 @@ { "ItemType": "/Lotus/StoreItems/Types/Items/Emotes/BaroEmote", "PrimePrice": 0, "RegularPrice": 1000000 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/EventSniperReloadDamageMod", "PrimePrice": 2995, "RegularPrice": 1000000 } ] - }, - { - "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1694178000000" } }, - "Expiry": { "$date": { "$numberLong": "1694350800000" } }, - "Id": "5d1e07a0a38e4a4fdd7cefca", - "Character": "Baro'Ki Teel", - "Node": "MercuryHUB" } ], "PrimeVaultTraders": [ @@ -2339,46 +2263,88 @@ ], "VoidStorms": [ { - "_id": { "$oid": "64ee1ab266c48794105e55e4" }, - "Node": "CrewBattleNode518", - "Activation": { "$date": { "$numberLong": "1693329601821" } }, - "Expiry": { "$date": { "$numberLong": "1693335001821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64ee1ab266c48794105e55e5" }, + "_id": { "$oid": "64f1e9b1d77b0e08d0b54703" }, "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1693329601825" } }, - "Expiry": { "$date": { "$numberLong": "1693335001825" } }, + "Activation": { "$date": { "$numberLong": "1693578001825" } }, + "Expiry": { "$date": { "$numberLong": "1693583401825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64ee1ab266c48794105e55e9" }, - "Node": "CrewBattleNode553", - "Activation": { "$date": { "$numberLong": "1693329601834" } }, - "Expiry": { "$date": { "$numberLong": "1693335001834" } }, + "_id": { "$oid": "64f1e9b1d77b0e08d0b54702" }, + "Node": "CrewBattleNode522", + "Activation": { "$date": { "$numberLong": "1693578001821" } }, + "Expiry": { "$date": { "$numberLong": "1693583401821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64f1e9b1d77b0e08d0b54704" }, + "Node": "CrewBattleNode501", + "Activation": { "$date": { "$numberLong": "1693578001827" } }, + "Expiry": { "$date": { "$numberLong": "1693583401827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "64f1e9b1d77b0e08d0b54707" }, + "Node": "CrewBattleNode550", + "Activation": { "$date": { "$numberLong": "1693578001834" } }, + "Expiry": { "$date": { "$numberLong": "1693583401834" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "64ee1ab266c48794105e55e8" }, - "Node": "CrewBattleNode531", - "Activation": { "$date": { "$numberLong": "1693329601832" } }, - "Expiry": { "$date": { "$numberLong": "1693335001832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64ee1ab266c48794105e55e7" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1693329601829" } }, - "Expiry": { "$date": { "$numberLong": "1693335001829" } }, + "_id": { "$oid": "64f1e9b1d77b0e08d0b54705" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1693578001829" } }, + "Expiry": { "$date": { "$numberLong": "1693583401829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "64ee1ab266c48794105e55e6" }, - "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1693329601827" } }, - "Expiry": { "$date": { "$numberLong": "1693335001827" } }, + "_id": { "$oid": "64f1e9b1d77b0e08d0b54706" }, + "Node": "CrewBattleNode531", + "Activation": { "$date": { "$numberLong": "1693578001832" } }, + "Expiry": { "$date": { "$numberLong": "1693583401832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0a" }, + "Node": "CrewBattleNode518", + "Activation": { "$date": { "$numberLong": "1693581601821" } }, + "Expiry": { "$date": { "$numberLong": "1693587001821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0b" }, + "Node": "CrewBattleNode511", + "Activation": { "$date": { "$numberLong": "1693581601825" } }, + "Expiry": { "$date": { "$numberLong": "1693587001825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0c" }, + "Node": "CrewBattleNode534", + "Activation": { "$date": { "$numberLong": "1693581601827" } }, + "Expiry": { "$date": { "$numberLong": "1693587001827" } }, "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0e" }, + "Node": "CrewBattleNode529", + "Activation": { "$date": { "$numberLong": "1693581601832" } }, + "Expiry": { "$date": { "$numberLong": "1693587001832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0d" }, + "Node": "CrewBattleNode525", + "Activation": { "$date": { "$numberLong": "1693581601829" } }, + "Expiry": { "$date": { "$numberLong": "1693587001829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0f" }, + "Node": "CrewBattleNode554", + "Activation": { "$date": { "$numberLong": "1693581601834" } }, + "Expiry": { "$date": { "$numberLong": "1693587001834" } }, + "ActiveMissionTier": "VoidT4" } ], "PrimeAccessAvailability": { "State": "PRIME2" }, @@ -2386,14 +2352,14 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Infested/Melee/Swords/Mire/MireSword", - "Activation": { "$date": { "$numberLong": "1693249200000" } }, - "Expiry": { "$date": { "$numberLong": "1693342800000" } }, - "Discount": 10, - "OriginalPrice": 150, - "SalePrice": 135, - "AmountTotal": 300, - "AmountSold": 15 + "StoreItem": "/Lotus/StoreItems/Powersuits/Trapper/Trapper", + "Activation": { "$date": { "$numberLong": "1693530000000" } }, + "Expiry": { "$date": { "$numberLong": "1693623600000" } }, + "Discount": 40, + "OriginalPrice": 300, + "SalePrice": 180, + "AmountTotal": 150, + "AmountSold": 71 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, @@ -2443,10 +2409,43 @@ "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "64ee32228a93b03ebcec53ed" }, + "_id": { "$oid": "64f0d64d834ccd93e3703594" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64f0d64d834ccd93e3703596" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64f0d64d834ccd93e3703598" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsEASY", + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64f0d64d834ccd93e3703595" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2454,10 +2453,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ee32228a93b03ebcec53ef" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreak_MEDIUM", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "_id": { "$oid": "64f0d64d834ccd93e3703597" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryHARD", + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2465,43 +2464,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ee32228a93b03ebcec53ee" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64ee32228a93b03ebcec53f0" }, + "_id": { "$oid": "64f0d64d834ccd93e3703599" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64ee32228a93b03ebcec53f2" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ee32228a93b03ebcec53f4" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "_id": { "$oid": "64f0d64d834ccd93e370359b" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsEASY", + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", @@ -2509,32 +2486,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64ee32228a93b03ebcec53f3" }, + "_id": { "$oid": "64f0d64d834ccd93e370359a" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, + "startDate": { "$date": { "$numberLong": "1693505101823" } }, + "endDate": { "$date": { "$numberLong": "1693591501823" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64ee32228a93b03ebcec53f1" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirMEDIUM", - "startDate": { "$date": { "$numberLong": "1693332002081" } }, - "endDate": { "$date": { "$numberLong": "1693418402081" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [32.00466143005307, 79.11658030764144, 0], + "ProjectPct": [37.17026556218807, 85.81030372418421, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], @@ -2562,25 +2528,25 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100140000000000000196" }, + "_id": { "$oid": "001100150000000000000206" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1693094400000" } }, - "Expiry": { "$date": { "$numberLong": "1693353600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithPrimary" + "Activation": { "$date": { "$numberLong": "1693353600000" } }, + "Expiry": { "$date": { "$numberLong": "1693612800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithBlast" }, { - "_id": { "$oid": "001100150000000000000204" }, + "_id": { "$oid": "001100150000000000000207" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693440000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyDonateLeverian" + "Activation": { "$date": { "$numberLong": "1693440000000" } }, + "Expiry": { "$date": { "$numberLong": "1693699200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCollectCredits" }, { - "_id": { "$oid": "001100150000000000000205" }, + "_id": { "$oid": "001100150000000000000208" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1693267200000" } }, - "Expiry": { "$date": { "$numberLong": "1693526400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFreeze" + "Activation": { "$date": { "$numberLong": "1693526400000" } }, + "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyAugmentation" }, { "_id": { "$oid": "001100150000000000000197" }, @@ -2626,5 +2592,5 @@ } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"tl23date\":\"1693067400\",\"tl23CDdate\":\"1692198000\",\"sfn\":550}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":555}" } -- 2.47.2 From ca9fc6608b61881de0edb6f92a940737a08e75a4 Mon Sep 17 00:00:00 2001 From: 7f8ddd <141754874+7f8ddd@users.noreply.github.com> Date: Sun, 3 Sep 2023 09:23:55 -0500 Subject: [PATCH 034/522] =?UTF-8?q?Add=20skills=20to=20skills=20list=20of?= =?UTF-8?q?=20skills=20with=20skills=20in=20a=20list=20of=20skills=20a?= =?UTF-8?q?=E2=80=A6=20(#50)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> --- src/types/inventoryTypes/inventoryTypes.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index b175dc64..aacfdc15 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -905,11 +905,17 @@ export interface PersonalTechProject { export interface PlayerSkills { LPP_SPACE: number; - LPS_GUNNERY: number; + LPP_DRIFTER: number; + LPS_NONE: number; LPS_PILOTING: number; - LPS_ENGINEERING: number; + LPS_GUNNERY: number; LPS_TACTICAL: number; + LPS_ENGINEERING: number; LPS_COMMAND: number; + LPS_DRIFT_COMBAT: number; + LPS_DRIFT_RIDING: number; + LPS_DRIFT_OPPORTUNITY: number; + LPS_DRIFT_ENDURANCE: number; } export interface QuestKey { -- 2.47.2 From f71ede4016376772a108d1cdeddbf0c7a5fed057 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Sep 2023 19:38:53 +0200 Subject: [PATCH 035/522] Bump warframe-items from 1.1260.79 to 1.1260.121 (#44) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ce96b3cb..eb3bf701 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.79" + "warframe-items": "1.1260.121" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -3597,9 +3597,9 @@ } }, "node_modules/warframe-items": { - "version": "1.1260.79", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.79.tgz", - "integrity": "sha512-Xp/nt++v5V3ghEZNhE56Mge2jeBjjr+ua6PC/7ZHYTMsO8x1xheOMuVxl7v7IjscO1rHFdYEQnSU9Gw1uipYsQ==" + "version": "1.1260.121", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.121.tgz", + "integrity": "sha512-C/te9WSsc3HzeSAgziAGKs6sKnYqCO41QDov8E6RUfl3D06C7ko8mHsJ2j65zF515IatJl/xelVtp0aAnQcWiQ==" }, "node_modules/webidl-conversions": { "version": "7.0.0", diff --git a/package.json b/package.json index ba9a9b62..c334e370 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.79" + "warframe-items": "1.1260.121" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", -- 2.47.2 From a9318632498efaf9df7c17eaafe1e995701bbab8 Mon Sep 17 00:00:00 2001 From: 7f8ddd <141754874+7f8ddd@users.noreply.github.com> Date: Tue, 5 Sep 2023 07:37:30 -0500 Subject: [PATCH 036/522] Fix interface names, +genericUpdate (#51) Co-authored-by: nk Co-authored-by: Ordis <134585663+OrdisPrime@users.noreply.github.com> --- .../api/genericUpdateController.ts | 27 +- .../api/missionInventoryUpdateController.ts | 17 +- src/managers/sessionManager.ts | 20 +- src/models/inventoryModel.ts | 22 +- src/models/shipModel.ts | 4 +- src/services/inventoryService.ts | 59 +- src/types/commonTypes.ts | 2 +- src/types/genericUpdate.ts | 4 + src/types/inventoryTypes/SuitTypes.ts | 18 +- .../inventoryTypes/commonInventoryTypes.ts | 11 +- src/types/inventoryTypes/inventoryTypes.ts | 757 +++++++++--------- src/types/inventoryTypes/weaponTypes.ts | 16 +- src/types/loginTypes.ts | 2 +- src/types/missionInventoryUpdateType.ts | 47 +- src/types/purchaseTypes.ts | 5 +- src/types/session.ts | 4 +- src/types/shipTypes.ts | 7 +- 17 files changed, 534 insertions(+), 488 deletions(-) create mode 100644 src/types/genericUpdate.ts diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index ce541ada..63453c94 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -1,7 +1,30 @@ +import { updateGeneric } from "@/src/services/inventoryService"; +import { IGenericUpdate } from "@/src/types/genericUpdate"; import { RequestHandler } from "express"; -const genericUpdateController: RequestHandler = (_req, res) => { - res.json({}); +// TODO: Nightwave evidence submission support is the only thing missing. +// TODO: Also, you might want to test this, because I definitely didn't. +const genericUpdateController: RequestHandler = async (request, response) => { + const accountId = request.query.accountId as string; + + const [body] = String(request.body).split("\n"); + + let reply = {}; + try { + const update = JSON.parse(body) as IGenericUpdate; + if (typeof update !== "object") { + throw new Error("Invalid data format"); + } + + reply = await updateGeneric(update, accountId); + } catch (err) { + console.error("Error parsing JSON data:", err); + } + + // Response support added for when Nightwave is supported below. + // response.json(reply); + + response.json({}); }; export { genericUpdateController }; diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index bde878af..16eeb0e4 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; -import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; +import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; /* - [ ] crossPlaySetting - [ ] rewardsMultiplier @@ -25,13 +25,13 @@ import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; - [ ] hosts - [x] ChallengeProgress - [ ] SeasonChallengeHistory -- [ ] PS +- [ ] PS (Passive anti-cheat data which includes your username, module list, process list, and system name.) - [ ] ActiveDojoColorResearch - [ ] RewardInfo - [ ] ReceivedCeremonyMsg - [ ] LastCeremonyResetDate -- [ ] MissionPTS -- [ ] RepHash +- [ ] MissionPTS (Used to validate the mission/alive time above.) +- [ ] RepHash (A hash from the replication manager/RepMgr Unknown what it does.) - [ ] EndOfMatchUpload - [ ] ObjectiveReached - [ ] FpsAvg @@ -42,20 +42,19 @@ import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const missionInventoryUpdateController: RequestHandler = async (req, res) => { - const [data] = String(req.body).split("\n"); const id = req.query.accountId as string; - // TODO - salt check + const [data] = String(req.body).split("\n"); try { - const parsedData = JSON.parse(data) as MissionInventoryUpdate; - if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format"); + const parsedData = JSON.parse(data) as IMissionInventoryUpdate; + if (typeof parsedData !== "object") throw new Error("Invalid data format"); await missionInventoryUpdate(parsedData, id); } catch (err) { console.error("Error parsing JSON data:", err); } - // TODO - get original response + // TODO - Return the updated inventory the way the game does it. res.json({}); }; diff --git a/src/managers/sessionManager.ts b/src/managers/sessionManager.ts index de990f9e..e6558d57 100644 --- a/src/managers/sessionManager.ts +++ b/src/managers/sessionManager.ts @@ -1,10 +1,10 @@ -import { Session, FindSessionRequest } from "@/src/types/session"; +import { ISession, IFindSessionRequest } from "@/src/types/session"; -const sessions: Session[] = []; +const sessions: ISession[] = []; -function createNewSession(sessionData: Session, Creator: string): Session { +function createNewSession(sessionData: ISession, Creator: string): ISession { const sessionId = getNewSessionID(); - const newSession: Session = { + const newSession: ISession = { sessionId, creatorId: Creator, maxPlayers: sessionData.maxPlayers || 4, @@ -35,15 +35,15 @@ function createNewSession(sessionData: Session, Creator: string): Session { return newSession; } -function getAllSessions(): Session[] { +function getAllSessions(): ISession[] { return sessions; } -function getSessionByID(sessionId: string): Session | undefined { +function getSessionByID(sessionId: string): ISession | undefined { return sessions.find(session => session.sessionId === sessionId); } -function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { +function getSession(sessionIdOrRequest: string | IFindSessionRequest): any[] { if (typeof sessionIdOrRequest === "string") { const session = sessions.find(session => session.sessionId === sessionIdOrRequest); if (session) { @@ -58,10 +58,10 @@ function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { return []; } - const request = sessionIdOrRequest as FindSessionRequest; + const request = sessionIdOrRequest as IFindSessionRequest; const matchingSessions = sessions.filter(session => { for (const key in request) { - if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof Session]) { + if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof ISession]) { return false; } } @@ -74,7 +74,7 @@ function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { })); } -function getSessionByCreatorID(creatorId: string): Session | undefined { +function getSessionByCreatorID(creatorId: string): ISession | undefined { return sessions.find(session => session.creatorId === creatorId); } diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index f73dd1fb..9578d314 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,6 +1,12 @@ import { Model, Schema, Types, model } from "mongoose"; -import { FlavourItem, RawUpgrade, MiscItem, IInventoryDatabase, Booster } from "../types/inventoryTypes/inventoryTypes"; -import { Oid } from "../types/commonTypes"; +import { + IFlavourItem, + IRawUpgrade, + IMiscItem, + IInventoryDatabase, + IBooster +} from "../types/inventoryTypes/inventoryTypes"; +import { IOid } from "../types/commonTypes"; import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; @@ -74,7 +80,7 @@ const BoosterSchema = new Schema({ WeaponSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } @@ -130,7 +136,7 @@ const suitSchema = new Schema({ suitSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } @@ -338,10 +344,10 @@ type InventoryDocumentProps = { LongGuns: Types.DocumentArray; Pistols: Types.DocumentArray; Melee: Types.DocumentArray; - FlavourItems: Types.DocumentArray; - RawUpgrades: Types.DocumentArray; - MiscItems: Types.DocumentArray; - Boosters: Types.DocumentArray; + FlavourItems: Types.DocumentArray; + RawUpgrades: Types.DocumentArray; + MiscItems: Types.DocumentArray; + Boosters: Types.DocumentArray; }; type InventoryModelType = Model; diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index 463a95c2..bd56d933 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,6 +1,6 @@ import { Schema, model } from "mongoose"; import { IShip } from "../types/shipTypes"; -import { Oid } from "../types/commonTypes"; +import { IOid } from "../types/commonTypes"; const roomSchema = new Schema( { @@ -19,7 +19,7 @@ const shipSchema = new Schema({ shipSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; } }); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 19900497..565dd910 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -5,13 +5,18 @@ import { Types } from "mongoose"; import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; -import { ChallengeProgress, FlavourItem, IInventoryDatabaseDocument } from "@/src/types/inventoryTypes/inventoryTypes"; import { - MissionInventoryUpdate, - MissionInventoryUpdateCard, - MissionInventoryUpdateGear, - MissionInventoryUpdateItem + IChallengeProgress, + IFlavourItem, + IInventoryDatabaseDocument +} from "@/src/types/inventoryTypes/inventoryTypes"; +import { + IMissionInventoryUpdate, + IMissionInventoryUpdateCard, + IMissionInventoryUpdateGear, + IMissionInventoryUpdateItem } from "../types/missionInventoryUpdateType"; +import { IGenericUpdate } from "../types/genericUpdate"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -76,6 +81,27 @@ export const updateCurrency = async (price: number, usePremium: boolean, account return { [currencyName]: -price }; }; +// TODO: AffiliationMods support (Nightwave). +export const updateGeneric = async (data: IGenericUpdate, accountId: string) => { + const inventory = await getInventory(accountId); + + // Make it an array for easier parsing. + if (typeof data.NodeIntrosCompleted === "string") { + data.NodeIntrosCompleted = [data.NodeIntrosCompleted]; + } + + // Combine the two arrays into one. + data.NodeIntrosCompleted = inventory.NodeIntrosCompleted.concat(data.NodeIntrosCompleted); + + // Remove duplicate entries. + const nodes = [...new Set(data.NodeIntrosCompleted)]; + + inventory.NodeIntrosCompleted = nodes; + await inventory.save(); + + return data; +}; + export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; export const addWeapon = async ( @@ -104,7 +130,7 @@ export const addWeapon = async ( return changedInventory[weaponType][weaponIndex - 1].toJSON(); }; -export const addCustomization = async (customizatonName: string, accountId: string): Promise => { +export const addCustomization = async (customizatonName: string, accountId: string): Promise => { const inventory = await getInventory(accountId); const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; @@ -114,7 +140,7 @@ export const addCustomization = async (customizatonName: string, accountId: stri const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, - gearArray: MissionInventoryUpdateGear[] | undefined, + gearArray: IMissionInventoryUpdateGear[] | undefined, categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" ) => { const category = inventory[categoryName]; @@ -132,7 +158,7 @@ const addGearExpByCategory = ( const addItemsByCategory = ( inventory: IInventoryDatabaseDocument, - itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, + itemsArray: (IMissionInventoryUpdateItem | IMissionInventoryUpdateCard)[] | undefined, categoryName: "RawUpgrades" | "MiscItems" ) => { const category = inventory[categoryName]; @@ -149,7 +175,7 @@ const addItemsByCategory = ( }); }; -const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: ChallengeProgress[] | undefined) => { +const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { const category = inventory.ChallengeProgress; itemsArray?.forEach(({ Name, Progress }) => { @@ -167,19 +193,16 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: Challe const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; type GearKeysType = (typeof gearKeys)[number]; -export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accountId: string): Promise => { +export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string): Promise => { const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data; const inventory = await getInventory(accountId); - // TODO - multipliers logic - // credits - inventory.RegularCredits += RegularCredits || 0; - - // gear exp + // Gear XP gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); - // other - addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); // TODO - check mods fusion level + // Other + // TODO: Ensure mods have a valid fusion level and items have a valid quantity, preferably inside of the functions themselves. + addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); addItemsByCategory(inventory, MiscItems, "MiscItems"); addChallenges(inventory, ChallengeProgress); @@ -187,7 +210,7 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou }; export const addBooster = async (ItemType: string, time: number, accountId: string): Promise => { - const currentTime = Math.floor(Date.now() / 1000) - 129600; // booster time getting more without 129600, probably defence logic, idk + const currentTime = Math.floor(Date.now() / 1000) - 129600; // Value is wrong without 129600. Figure out why, please. :) const inventory = await getInventory(accountId); const { Boosters } = inventory; diff --git a/src/types/commonTypes.ts b/src/types/commonTypes.ts index 4c1a7bf7..8b7f30b9 100644 --- a/src/types/commonTypes.ts +++ b/src/types/commonTypes.ts @@ -1,3 +1,3 @@ -export interface Oid { +export interface IOid { $oid: string; } diff --git a/src/types/genericUpdate.ts b/src/types/genericUpdate.ts new file mode 100644 index 00000000..3f61f671 --- /dev/null +++ b/src/types/genericUpdate.ts @@ -0,0 +1,4 @@ +export interface IGenericUpdate { + NodeIntrosCompleted: string | string[]; + // AffiliationMods: any[]; +} \ No newline at end of file diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 7dc8ca5f..033b1967 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -1,5 +1,5 @@ -import { Oid } from "@/src/types/commonTypes"; -import { AbilityOverride, Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "@/src/types/commonTypes"; +import { IAbilityOverride, IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Document, Types } from "mongoose"; // export interface ISuitDocument extends ISuitResponse, Document {} @@ -8,7 +8,7 @@ export interface ISuitDocument extends Document, ISuitResponse { } export interface ISuitResponse extends ISuitDatabase { - ItemId: Oid; + ItemId: IOid; } export interface ISuitDatabase { @@ -18,7 +18,7 @@ export interface ISuitDatabase { XP?: number; InfestationDate?: Date; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; ModSlotPurchases?: number; FocusLens?: string; @@ -28,14 +28,14 @@ export interface ISuitDatabase { export interface SuitConfig { Skins?: string[]; - pricol?: Color; - attcol?: Color; - eyecol?: Color; - sigcol?: Color; + pricol?: IColor; + attcol?: IColor; + eyecol?: IColor; + sigcol?: IColor; Upgrades?: string[]; Songs?: Song[]; Name?: string; - AbilityOverride?: AbilityOverride; + AbilityOverride?: IAbilityOverride; PvpUpgrades?: string[]; ugly?: boolean; } diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index fd59073c..0664407f 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -1,4 +1,4 @@ -export interface Polarity { +export interface IPolarity { Slot: number; Value: FocusSchool; } @@ -15,7 +15,7 @@ export enum FocusSchool { ApWard = "AP_WARD" } -export interface Color { +export interface IColor { t0?: number; t1?: number; t2?: number; @@ -26,16 +26,17 @@ export interface Color { m1?: number; } -export interface AbilityOverride { +export interface IAbilityOverride { Ability: string; Index: number; } -export interface SlotsBin { +export interface ISlotsBin { Slots: number; } -export interface sigcol { +// ISigCol? IsIgCoL? ISIGCOL! +export interface Isigcol { t0: number; t1: number; en: number; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index aacfdc15..9fef903d 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,10 +1,8 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - import { Document, Types } from "mongoose"; -import { Oid } from "../commonTypes"; -import { AbilityOverride, Color, FocusSchool, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "../commonTypes"; +import { IAbilityOverride, IColor, FocusSchool, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; -import { OperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; +import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; export interface IInventoryDatabase extends IInventoryResponse { accountOwnerId: Types.ObjectId; @@ -20,14 +18,14 @@ export interface IInventoryResponse { PremiumCredits: number; PremiumCreditsFree: number; FusionPoints: number; - SuitBin: CrewShipSalvageBinClass; - WeaponBin: CrewShipSalvageBinClass; - SentinelBin: CrewShipSalvageBinClass; - SpaceSuitBin: CrewShipSalvageBinClass; - SpaceWeaponBin: CrewShipSalvageBinClass; - PvpBonusLoadoutBin: CrewMemberBinClass; - PveBonusLoadoutBin: CrewShipSalvageBinClass; - RandomModBin: CrewShipSalvageBinClass; + SuitBin: ICrewShipSalvageBinClass; + WeaponBin: ICrewShipSalvageBinClass; + SentinelBin: ICrewShipSalvageBinClass; + SpaceSuitBin: ICrewShipSalvageBinClass; + SpaceWeaponBin: ICrewShipSalvageBinClass; + PvpBonusLoadoutBin: ICrewMemberBinClass; + PveBonusLoadoutBin: ICrewShipSalvageBinClass; + RandomModBin: ICrewShipSalvageBinClass; TradesRemaining: number; DailyAffiliation: number; DailyAffiliationPvp: number; @@ -35,137 +33,137 @@ export interface IInventoryResponse { DailyFocus: number; GiftsRemaining: number; HandlerPoints: number; - MiscItems: Consumable[]; + MiscItems: IConsumable[]; ChallengesFixVersion: number; - ChallengeProgress: ChallengeProgress[]; - RawUpgrades: RawUpgrade[]; + ChallengeProgress: IChallengeProgress[]; + RawUpgrades: IRawUpgrade[]; ReceivedStartingGear: boolean; Suits: ISuitDatabase[]; LongGuns: IWeaponDatabase[]; Pistols: IWeaponDatabase[]; Melee: IWeaponDatabase[]; - Ships: Ship[]; - QuestKeys: QuestKey[]; - FlavourItems: FlavourItem[]; - Scoops: Scoop[]; + Ships: IShip[]; + QuestKeys: IQuestKey[]; + FlavourItems: IFlavourItem[]; + Scoops: IScoop[]; TrainingRetriesLeft: number; - LoadOutPresets: LoadOutPresets; - CurrentLoadOutIds: Array; - Missions: Mission[]; + LoadOutPresets: ILoadOutPresets; + CurrentLoadOutIds: Array; + Missions: IMission[]; RandomUpgradesIdentified: number; LastRegionPlayed: string; - XPInfo: EmailItem[]; - Recipes: Consumable[]; - WeaponSkins: WeaponSkin[]; - PendingRecipes: PendingRecipe[]; + XPInfo: IEmailItem[]; + Recipes: IConsumable[]; + WeaponSkins: IWeaponSkin[]; + PendingRecipes: IPendingRecipe[]; TrainingDate: Date; PlayerLevel: number; - Upgrades: CrewShipSalvagedWeaponSkin[]; + Upgrades: ICrewShipSalvagedWeaponSkin[]; EquippedGear: string[]; DeathMarks: string[]; - FusionTreasures: FusionTreasure[]; - WebFlags: WebFlags; + FusionTreasures: IFusionTreasure[]; + WebFlags: IWebFlags; CompletedAlerts: string[]; - Consumables: Consumable[]; - LevelKeys: Consumable[]; - TauntHistory: TauntHistory[]; + Consumables: IConsumable[]; + LevelKeys: IConsumable[]; + TauntHistory: ITauntHistory[]; StoryModeChoice: string; - PeriodicMissionCompletions: PeriodicMissionCompletion[]; - KubrowPetEggs: KubrowPetEgg[]; - LoreFragmentScans: LoreFragmentScan[]; + PeriodicMissionCompletions: IPeriodicMissionCompletion[]; + KubrowPetEggs: IKubrowPetEgg[]; + LoreFragmentScans: ILoreFragmentScan[]; EquippedEmotes: string[]; - PendingTrades: PendingTrade[]; - Boosters: Booster[]; + PendingTrades: IPendingTrade[]; + Boosters: IBooster[]; ActiveDojoColorResearch: string; - SentientSpawnChanceBoosters: SentientSpawnChanceBoosters; - Affiliations: Affiliation[]; + SentientSpawnChanceBoosters: ISentientSpawnChanceBoosters; + Affiliations: IAffiliation[]; QualifyingInvasions: any[]; FactionScores: number[]; - SpaceSuits: Space[]; - SpaceMelee: Space[]; - SpaceGuns: SpaceGun[]; + SpaceSuits: ISpace[]; + SpaceMelee: ISpace[]; + SpaceGuns: ISpaceGun[]; ArchwingEnabled: boolean; PendingSpectreLoadouts: any[]; - SpectreLoadouts: SpectreLoadout[]; - SentinelWeapons: SentinelWeapon[]; - Sentinels: Sentinel[]; - EmailItems: EmailItem[]; + SpectreLoadouts: ISpectreLoadout[]; + SentinelWeapons: ISentinelWeapon[]; + Sentinels: ISentinel[]; + EmailItems: IEmailItem[]; CompletedSyndicates: string[]; - FocusXP: FocusXP; + FocusXP: IFocusXP; Wishlist: string[]; - Alignment: Alignment; + Alignment: IAlignment; CompletedSorties: string[]; - LastSortieReward: LastSortieReward[]; - Drones: Drone[]; - StepSequencers: StepSequencer[]; + LastSortieReward: ILastSortieReward[]; + Drones: IDrone[]; + StepSequencers: IStepSequencer[]; ActiveAvatarImageType: string; - KubrowPets: KubrowPet[]; - ShipDecorations: Consumable[]; - OperatorAmpBin: CrewShipSalvageBinClass; + KubrowPets: IKubrowPet[]; + ShipDecorations: IConsumable[]; + OperatorAmpBin: ICrewShipSalvageBinClass; DailyAffiliationCetus: number; DailyAffiliationQuills: number; - DiscoveredMarkers: DiscoveredMarker[]; - CompletedJobs: CompletedJob[]; + DiscoveredMarkers: IDiscoveredMarker[]; + CompletedJobs: ICompletedJob[]; FocusAbility: string; - FocusUpgrades: FocusUpgrade[]; - OperatorAmps: OperatorAmp[]; + FocusUpgrades: IFocusUpgrade[]; + OperatorAmps: IOperatorAmp[]; HasContributedToDojo: boolean; HWIDProtectEnabled: boolean; - KubrowPetPrints: KubrowPetPrint[]; - AlignmentReplay: Alignment; - PersonalGoalProgress: PersonalGoalProgress[]; + KubrowPetPrints: IKubrowPetPrint[]; + AlignmentReplay: IAlignment; + PersonalGoalProgress: IPersonalGoalProgress[]; DailyAffiliationSolaris: number; - SpecialItems: SpecialItem[]; + SpecialItems: ISpecialItem[]; ThemeStyle: string; ThemeBackground: string; ThemeSounds: string; BountyScore: number; - ChallengeInstanceStates: ChallengeInstanceState[]; + ChallengeInstanceStates: IChallengeInstanceState[]; LoginMilestoneRewards: string[]; - OperatorLoadOuts: OperatorLoadOut[]; + OperatorLoadOuts: IOperatorLoadOut[]; DailyAffiliationVentkids: number; DailyAffiliationVox: number; RecentVendorPurchases: Array; - Hoverboards: Hoverboard[]; + Hoverboards: IHoverboard[]; NodeIntrosCompleted: string[]; - CompletedJobChains: CompletedJobChain[]; - SeasonChallengeHistory: SeasonChallengeHistory[]; - MoaPets: MoaPet[]; + CompletedJobChains: ICompletedJobChain[]; + SeasonChallengeHistory: ISeasonChallengeHistory[]; + MoaPets: IMoaPet[]; EquippedInstrument: string; - InvasionChainProgress: InvasionChainProgress[]; - DataKnives: DataKnife[]; - NemesisHistory: NemesisHistory[]; + InvasionChainProgress: IInvasionChainProgress[]; + DataKnives: IDataKnife[]; + NemesisHistory: INemesisHistory[]; LastNemesisAllySpawnTime: Date; - Settings: Settings; - PersonalTechProjects: PersonalTechProject[]; - CrewShips: CrewShip[]; - CrewShipSalvageBin: CrewShipSalvageBinClass; - PlayerSkills: PlayerSkills; - CrewShipAmmo: Consumable[]; - CrewShipSalvagedWeaponSkins: CrewShipSalvagedWeaponSkin[]; - CrewShipWeapons: CrewShipWeapon[]; - CrewShipSalvagedWeapons: CrewShipWeapon[]; - CrewShipWeaponSkins: CrewShipSalvagedWeaponSkin[]; + Settings: ISettings; + PersonalTechProjects: IPersonalTechProject[]; + CrewShips: ICrewShip[]; + CrewShipSalvageBin: ICrewShipSalvageBinClass; + PlayerSkills: IPlayerSkills; + CrewShipAmmo: IConsumable[]; + CrewShipSalvagedWeaponSkins: ICrewShipSalvagedWeaponSkin[]; + CrewShipWeapons: ICrewShipWeapon[]; + CrewShipSalvagedWeapons: ICrewShipWeapon[]; + CrewShipWeaponSkins: ICrewShipSalvagedWeaponSkin[]; TradeBannedUntil: Date; PlayedParkourTutorial: boolean; SubscribedToEmailsPersonalized: number; - MechBin: CrewMemberBinClass; + MechBin: ICrewMemberBinClass; DailyAffiliationEntrati: number; DailyAffiliationNecraloid: number; - MechSuits: MechSuit[]; - InfestedFoundry: InfestedFoundry; + MechSuits: IMechSuit[]; + InfestedFoundry: IInfestedFoundry; BlessingCooldown: Date; - CrewMemberBin: CrewMemberBinClass; - CrewShipHarnesses: CrewShipHarness[]; - CrewShipRawSalvage: Consumable[]; - CrewMembers: CrewMember[]; - AdultOperatorLoadOuts: AdultOperatorLoadOut[]; - LotusCustomization: LotusCustomization; + CrewMemberBin: ICrewMemberBinClass; + CrewShipHarnesses: ICrewShipHarness[]; + CrewShipRawSalvage: IConsumable[]; + CrewMembers: ICrewMember[]; + AdultOperatorLoadOuts: IAdultOperatorLoadOut[]; + LotusCustomization: ILotusCustomization; UseAdultOperatorLoadout: boolean; DailyAffiliationZariman: number; NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; - LastInventorySync: Oid; + LastInventorySync: IOid; NextRefill: Date; ActiveLandscapeTraps: any[]; EvolutionProgress: any[]; @@ -174,26 +172,26 @@ export interface IInventoryResponse { Quests: any[]; Robotics: any[]; UsedDailyDeals: any[]; - LibraryPersonalProgress: LibraryPersonalProgress[]; - CollectibleSeries: CollectibleSery[]; - LibraryAvailableDailyTaskInfo: LibraryAvailableDailyTaskInfo; + LibraryPersonalProgress: ILibraryPersonalProgress[]; + CollectibleSeries: ICollectibleSery[]; + LibraryAvailableDailyTaskInfo: ILibraryAvailableDailyTaskInfo; HasResetAccount: boolean; - PendingCoupon: PendingCoupon; + PendingCoupon: IPendingCoupon; Harvestable: boolean; DeathSquadable: boolean; } -export interface AdultOperatorLoadOut { +export interface IAdultOperatorLoadOut { Skins: string[]; - attcol: Color; - eyecol: Color; - facial: Color; - pricol: Color; + attcol: IColor; + eyecol: IColor; + facial: IColor; + pricol: IColor; Upgrades?: string[]; - ItemId: Oid; + ItemId: IOid; } -export interface Affiliation { +export interface IAffiliation { Initiated?: boolean; Standing: number; Title?: number; @@ -202,253 +200,254 @@ export interface Affiliation { Tag: string; } -export interface Alignment { +export interface IAlignment { Wisdom: number; Alignment: number; } -export interface Date { +export interface IDate { $date: { $numberLong: string }; } -export interface Booster { +export interface IBooster { ExpiryDate: number; ItemType: string; } -export interface ChallengeInstanceState { - id: Oid; +export interface IChallengeInstanceState { + id: IOid; Progress: number; - params: Param[]; + params: IParam[]; IsRewardCollected: boolean; } -export interface Param { +export interface IParam { n: string; v: string; } -export interface ChallengeProgress { +export interface IChallengeProgress { Progress: number; Name: string; Completed?: string[]; } -export interface CollectibleSery { +export interface ICollectibleSery { CollectibleType: string; Count: number; Tracking: string; ReqScans: number; - IncentiveStates: IncentiveState[]; + IncentiveStates: IIncentiveState[]; } -export interface IncentiveState { +export interface IIncentiveState { threshold: number; complete: boolean; sent: boolean; } -export interface CompletedJobChain { +export interface ICompletedJobChain { LocationTag: string; Jobs: string[]; } -export interface CompletedJob { +export interface ICompletedJob { JobId: string; StageCompletions: number[]; } -export interface Consumable { +export interface IConsumable { ItemCount: number; ItemType: string; } -export interface CrewMemberBinClass { +export interface ICrewMemberBinClass { Slots: number; } -export interface CrewMember { +export interface ICrewMember { ItemType: string; NemesisFingerprint: number; Seed: number; HireDate: Date; AssignedRole: number; - SkillEfficiency: SkillEfficiency; + SkillEfficiency: ISkillEfficiency; WeaponConfigIdx: number; - WeaponId: Oid; + WeaponId: IOid; XP: number; PowersuitType: string; - Configs: CrewMemberConfig[]; + Configs: ICrewMemberConfig[]; SecondInCommand: boolean; - ItemId: Oid; + ItemId: IOid; } // eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface CrewMemberConfig {} +export interface ICrewMemberConfig {} -export interface SkillEfficiency { - PILOTING: Combat; - GUNNERY: Combat; - ENGINEERING: Combat; - COMBAT: Combat; - SURVIVABILITY: Combat; +export interface ISkillEfficiency { + PILOTING: ICombat; + GUNNERY: ICombat; + ENGINEERING: ICombat; + COMBAT: ICombat; + SURVIVABILITY: ICombat; } -export interface Combat { +export interface ICombat { Assigned: number; } -export interface CrewShipHarness { +export interface ICrewShipHarness { ItemType: string; - Configs: CrewShipHarnessConfig[]; + Configs: ICrewShipHarnessConfig[]; Features: number; UpgradeVer: number; XP: number; - Polarity: Polarity[]; + Polarity: IPolarity[]; Polarized: number; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShipHarnessConfig { +export interface ICrewShipHarnessConfig { Upgrades?: string[]; } -export interface CrewShipSalvageBinClass { +export interface ICrewShipSalvageBinClass { Extra: number; Slots: number; } -export interface CrewShipSalvagedWeaponSkin { +export interface ICrewShipSalvagedWeaponSkin { ItemType: string; UpgradeFingerprint?: string; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShipWeapon { +export interface ICrewShipWeapon { ItemType: string; UpgradeType?: string; UpgradeFingerprint?: string; - Configs?: CrewShipHarnessConfig[]; + Configs?: ICrewShipHarnessConfig[]; UpgradeVer?: number; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShip { +export interface ICrewShip { ItemType: string; - Configs: CrewShipConfig[]; - Weapon: CrewshipWeapon; - Customization: Customization; + Configs: ICrewShipConfig[]; + Weapon: ICrewshipWeapon; + Customization: ICustomization; ItemName: string; - RailjackImage: FlavourItem; - CrewMembers: CrewMembers; - ItemId: Oid; + RailjackImage: IFlavourItem; + CrewMembers: ICrewMembers; + ItemId: IOid; } -export interface CrewShipConfig { +export interface ICrewShipConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; } -export interface CrewMembers { - SLOT_A: Slot; - SLOT_B: Slot; - SLOT_C: Slot; +export interface ICrewMembers { + SLOT_A: ISlot; + SLOT_B: ISlot; + SLOT_C: ISlot; } -export interface Slot { - ItemId: Oid; +export interface ISlot { + ItemId: IOid; } -export interface Customization { - CrewshipInterior: Terior; +export interface ICustomization { + CrewshipInterior: ITerior; } -export interface Terior { +export interface ITerior { SkinFlavourItem: string; - Colors: Color; - ShipAttachments?: ShipAttachments; + Colors: IColor; + ShipAttachments?: IShipAttachments; } -export interface ShipAttachments { +export interface IShipAttachments { HOOD_ORNAMENT: string; } -export interface FlavourItem { +export interface IFlavourItem { ItemType: string; } -export interface RawUpgrade { +export interface IRawUpgrade { ItemCount: number; ItemType: string; } -export interface MiscItem { +export interface IMiscItem { ItemCount: number; ItemType: string; } -export interface CrewshipWeapon { - PILOT: Pilot; - PORT_GUNS: PortGuns; +export interface ICrewshipWeapon { + PILOT: IPilot; + PORT_GUNS: IPortGuns; } -export interface Pilot { - PRIMARY_A: L; - SECONDARY_A: L; +export interface IPilot { + PRIMARY_A: IL; + SECONDARY_A: IL; } -export interface L { - ItemId?: Oid; +// L? Bozo. +export interface IL { + ItemId?: IOid; mod?: number; cus?: number; ItemType?: string; hide?: boolean; } -export interface PortGuns { - PRIMARY_A: L; +export interface IPortGuns { + PRIMARY_A: IL; } -export interface DataKnife { +export interface IDataKnife { ItemType: string; XP: number; - Configs: DataKnifeConfig[]; + Configs: IDataKnifeConfig[]; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; } -export interface DataKnifeConfig { +export interface IDataKnifeConfig { Upgrades?: string[]; - pricol?: Color; + pricol?: IColor; Skins: string[]; - attcol?: Color; - sigcol?: Color; + attcol?: IColor; + sigcol?: IColor; } -export interface DiscoveredMarker { +export interface IDiscoveredMarker { tag: string; discoveryState: number[]; } -export interface Drone { +export interface IDrone { ItemType: string; CurrentHP: number; - ItemId: Oid; + ItemId: IOid; RepairStart?: Date; } -export interface EmailItem { +export interface IEmailItem { ItemType: string; XP: number; } -export interface FocusUpgrade { +export interface IFocusUpgrade { ItemType: string; Level?: number; IsUniversal?: boolean; } -export interface FocusXP { +export interface IFocusXP { AP_POWER: number; AP_TACTIC: number; AP_DEFENSE: number; @@ -456,33 +455,33 @@ export interface FocusXP { AP_WARD: number; } -export interface FusionTreasure { +export interface IFusionTreasure { ItemCount: number; ItemType: string; Sockets: number; } -export interface Hoverboard { +export interface IHoverboard { ItemType: string; - Configs: HoverboardConfig[]; + Configs: IHoverboardConfig[]; ModularParts: string[]; ItemName?: string; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; UpgradeVer: number; XP: number; Features: number; - ItemId: Oid; + ItemId: IOid; } -export interface HoverboardConfig { +export interface IHoverboardConfig { Upgrades?: string[]; - Skins?: PurpleSkin[]; - pricol?: Color; - sigcol?: Sigcol; - attcol?: Color; + Skins?: IPurpleSkin[]; + pricol?: IColor; + sigcol?: ISigcol; + attcol?: IColor; } -export enum PurpleSkin { +export enum IPurpleSkin { Empty = "", The5Be4Af71A38E4A9306040E15 = "5be4af71a38e4a9306040e15", The5C930Ac3A38E4A24Bc3Ad5De = "5c930ac3a38e4a24bc3ad5de", @@ -490,58 +489,58 @@ export enum PurpleSkin { The5Dd8A8E3A38E4A321A45E6A0 = "5dd8a8e3a38e4a321a45e6a0" } -export interface Sigcol { +export interface ISigcol { t3: number; } -export interface InfestedFoundry { +export interface IInfestedFoundry { Name: string; - Resources: Resource[]; + Resources: IResource[]; Slots: number; XP: number; - ConsumedSuits: ConsumedSuit[]; + ConsumedSuits: IConsumedSuit[]; InvigorationIndex: number; InvigorationSuitOfferings: string[]; InvigorationsApplied: number; } -export interface ConsumedSuit { +export interface IConsumedSuit { s: string; - c?: Color; + c?: IColor; } -export interface Resource { +export interface IResource { ItemType: string; Count: number; } -export interface InvasionChainProgress { - id: Oid; +export interface IInvasionChainProgress { + id: IOid; count: number; } -export interface KubrowPetEgg { +export interface IKubrowPetEgg { ItemType: KubrowPetEggItemType; ExpirationDate: Date; - ItemId: Oid; + ItemId: IOid; } export enum KubrowPetEggItemType { LotusTypesGameKubrowPetEggsKubrowEgg = "/Lotus/Types/Game/KubrowPet/Eggs/KubrowEgg" } -export interface KubrowPetPrint { +export interface IKubrowPetPrint { ItemType: KubrowPetPrintItemType; Name: string; IsMale: boolean; Size: number; - DominantTraits: Traits; - RecessiveTraits: Traits; - ItemId: Oid; + DominantTraits: ITraits; + RecessiveTraits: ITraits; + ItemId: IOid; InheritedModularParts?: any[]; } -export interface Traits { +export interface ITraits { BaseColor: string; SecondaryColor: string; TertiaryColor: string; @@ -566,38 +565,38 @@ export enum KubrowPetPrintItemType { LotusTypesGameKubrowPetImprintedTraitPrint = "/Lotus/Types/Game/KubrowPet/ImprintedTraitPrint" } -export interface KubrowPet { +export interface IKubrowPet { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; - Details: Details; + Details: IDetails; XP?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Features?: number; InfestationDate?: Date; InfestationDays?: number; InfestationType?: string; - ItemId: Oid; + ItemId: IOid; ModularParts?: string[]; } -export interface KubrowPetConfig { +export interface IKubrowPetConfig { Skins?: string[]; - pricol?: Color; - attcol?: Color; + pricol?: IColor; + attcol?: IColor; Upgrades?: string[]; } -export interface Details { +export interface IDetails { Name: string; IsPuppy: boolean; HasCollar: boolean; PrintsRemaining: number; Status: Status; HatchDate: Date; - DominantTraits: Traits; - RecessiveTraits: Traits; + DominantTraits: ITraits; + RecessiveTraits: ITraits; IsMale: boolean; Size: number; } @@ -607,13 +606,13 @@ export enum Status { StatusStasis = "STATUS_STASIS" } -export interface LastSortieReward { - SortieId: Oid; +export interface ILastSortieReward { + SortieId: IOid; StoreItem: string; Manifest: string; } -export interface LibraryAvailableDailyTaskInfo { +export interface ILibraryAvailableDailyTaskInfo { EnemyTypes: string[]; EnemyLocTag: string; EnemyIcon: string; @@ -623,98 +622,98 @@ export interface LibraryAvailableDailyTaskInfo { RewardStanding: number; } -export interface LibraryPersonalProgress { +export interface ILibraryPersonalProgress { TargetType: string; Scans: number; Completed: boolean; } -export interface LoadOutPresets { - NORMAL: Normal[]; - NORMAL_PVP: Archwing[]; - LUNARO: Lunaro[]; - ARCHWING: Archwing[]; - SENTINEL: Archwing[]; - OPERATOR: Archwing[]; - GEAR: Gear[]; - KDRIVE: Kdrive[]; - DATAKNIFE: Archwing[]; - MECH: Mech[]; - OPERATOR_ADULT: Archwing[]; +export interface ILoadOutPresets { + NORMAL: INormal[]; + NORMAL_PVP: IArchwing[]; + LUNARO: ILunaro[]; + ARCHWING: IArchwing[]; + SENTINEL: IArchwing[]; + OPERATOR: IArchwing[]; + GEAR: IGear[]; + KDRIVE: IKdrive[]; + DATAKNIFE: IArchwing[]; + MECH: IMech[]; + OPERATOR_ADULT: IArchwing[]; } -export interface Archwing { +export interface IArchwing { PresetIcon: string; Favorite: boolean; n?: string; - s: L; - l?: L; - m?: L; - ItemId: Oid; - p?: L; + s: IL; + l?: IL; + m?: IL; + ItemId: IOid; + p?: IL; } -export interface Gear { +export interface IGear { n: string; - s: L; - p: L; - l: L; - m: L; - ItemId: Oid; + s: IL; + p: IL; + l: IL; + m: IL; + ItemId: IOid; } -export interface Kdrive { +export interface IKdrive { PresetIcon: string; Favorite: boolean; - s: L; - ItemId: Oid; + s: IL; + ItemId: IOid; } -export interface Lunaro { +export interface ILunaro { n: string; - s: L; - m: L; - ItemId: Oid; + s: IL; + m: IL; + ItemId: IOid; } -export interface Mech { +export interface IMech { PresetIcon: string; Favorite: boolean; - s: L; - h: L; - a: L; - ItemId: Oid; + s: IL; + h: IL; + a: IL; + ItemId: IOid; } -export interface Normal { +export interface INormal { FocusSchool: FocusSchool; PresetIcon: string; Favorite: boolean; n: string; - s: L; - p: L; - l: L; - m: L; - h: L; - a?: L; - ItemId: Oid; + s: IL; + p: IL; + l: IL; + m: IL; + h: IL; + a?: IL; + ItemId: IOid; } export enum UpgradeType { LotusWeaponsGrineerKuvaLichUpgradesInnateDamageRandomMod = "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" } -export interface LoreFragmentScan { +export interface ILoreFragmentScan { Progress: number; Region?: string; ItemType: string; } -export interface LotusCustomization { +export interface ILotusCustomization { Upgrades: any[]; PvpUpgrades: any[]; Skins: string[]; - pricol: Color; + pricol: IColor; attcol: any[]; sigcol: any[]; eyecol: any[]; @@ -723,37 +722,37 @@ export interface LotusCustomization { Persona: string; } -export interface MechSuit { +export interface IMechSuit { ItemType: string; - Configs: DataKnifeConfig[]; + Configs: IDataKnifeConfig[]; Features: number; UpgradeVer: number; XP: number; - Polarity: Polarity[]; + Polarity: IPolarity[]; Polarized: number; - ItemId: Oid; + ItemId: IOid; } -export interface Mission { +export interface IMission { Completes: number; Tier?: number; Tag: string; RewardsCooldownTime?: Date; } -export interface MoaPet { +export interface IMoaPet { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; ModularParts: string[]; XP?: number; Features?: number; ItemName: string; - Polarity?: Polarity[]; - ItemId: Oid; + Polarity?: IPolarity[]; + ItemId: IOid; } -export interface NemesisHistory { +export interface INemesisHistory { fp: number; manifest: Manifest; KillingSuit: string; @@ -787,74 +786,74 @@ export enum Manifest { LotusTypesGameNemesisKuvaLichKuvaLichManifestVersionTwo = "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionTwo" } -export interface OperatorAmp { +export interface IOperatorAmp { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; ModularParts?: string[]; XP?: number; UpgradeVer?: number; ItemName?: string; Features?: number; - ItemId: Oid; + ItemId: IOid; } -export interface OperatorLoadOut { +export interface IOperatorLoadOut { Skins: string[]; - pricol?: Color; - attcol?: Color; - eyecol: Color; - facial?: Color; - sigcol?: OperatorLoadOutSigcol; - OperatorAmp?: Oid; + pricol?: IColor; + attcol?: IColor; + eyecol: IColor; + facial?: IColor; + sigcol?: IOperatorLoadOutSigcol; + OperatorAmp?: IOid; Upgrades?: string[]; - AbilityOverride: AbilityOverride; - ItemId: Oid; + AbilityOverride: IAbilityOverride; + ItemId: IOid; } -export interface PendingCoupon { +export interface IPendingCoupon { Expiry: Date; Discount: number; } -export interface PendingRecipe { +export interface IPendingRecipe { ItemType: string; CompletionDate: Date; - ItemId: Oid; + ItemId: IOid; } -export interface PendingTrade { +export interface IPendingTrade { State: number; SelfReady: boolean; BuddyReady: boolean; - Giving?: Giving; + Giving?: IGiving; Revision: number; - Getting: Getting; - ItemId: Oid; + Getting: IGetting; + ItemId: IOid; ClanTax?: number; } -export interface Getting { - RandomUpgrades?: RandomUpgrade[]; +export interface IGetting { + RandomUpgrades?: IRandomUpgrade[]; _SlotOrderInfo: GettingSlotOrderInfo[]; PremiumCredits?: number; } -export interface RandomUpgrade { - UpgradeFingerprint: UpgradeFingerprint; +export interface IRandomUpgrade { + UpgradeFingerprint: IUpgradeFingerprint; ItemType: string; - ItemId: Oid; + ItemId: IOid; } -export interface UpgradeFingerprint { +export interface IUpgradeFingerprint { compat: string; lim: number; lvlReq: number; pol: FocusSchool; - buffs: Buff[]; - curses: Buff[]; + buffs: IBuff[]; + curses: IBuff[]; } -export interface Buff { +export interface IBuff { Tag: string; Value: number; } @@ -865,8 +864,8 @@ export enum GettingSlotOrderInfo { P = "P" } -export interface Giving { - RawUpgrades: Consumable[]; +export interface IGiving { + RawUpgrades: IConsumable[]; _SlotOrderInfo: GivingSlotOrderInfo[]; } @@ -876,34 +875,34 @@ export enum GivingSlotOrderInfo { LotusUpgradesModsPistolDualStatElectEventPistolMod = "/Lotus/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod" } -export interface PeriodicMissionCompletion { +export interface IPeriodicMissionCompletion { date: Date; tag: string; count?: number; } -export interface PersonalGoalProgress { +export interface IPersonalGoalProgress { Count: number; Tag: string; Best?: number; - _id: Oid; + _id: IOid; ReceivedClanReward0?: boolean; ReceivedClanReward1?: boolean; } -export interface PersonalTechProject { +export interface IPersonalTechProject { State: number; ReqCredits: number; ItemType: string; - ReqItems: Consumable[]; + ReqItems: IConsumable[]; CompletionDate?: Date; - ItemId: Oid; + ItemId: IOid; ProductCategory?: string; - CategoryItemId?: Oid; + CategoryItemId?: IOid; HasContributions?: boolean; } -export interface PlayerSkills { +export interface IPlayerSkills { LPP_SPACE: number; LPP_DRIFTER: number; LPS_NONE: number; @@ -918,59 +917,59 @@ export interface PlayerSkills { LPS_DRIFT_ENDURANCE: number; } -export interface QuestKey { - Progress?: Progress[]; +export interface IQuestKey { + Progress?: IProgress[]; unlock?: boolean; Completed?: boolean; ItemType: string; CompletionDate?: Date; } -export interface Progress { +export interface IProgress { c: number; i: boolean; m: boolean; b?: any[]; } -export interface RawUpgrade { +export interface IRawUpgrade { ItemCount: number; - LastAdded?: Oid; + LastAdded?: IOid; ItemType: string; } -export interface Scoop { +export interface IScoop { ItemType: string; - Configs: ScoopConfig[]; + Configs: IScoopConfig[]; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; } -export interface ScoopConfig { - pricol?: Color; +export interface IScoopConfig { + pricol?: IColor; } -export interface SeasonChallengeHistory { +export interface ISeasonChallengeHistory { challenge: string; id: string; } -export interface SentientSpawnChanceBoosters { +export interface ISentientSpawnChanceBoosters { numOceanMissionsCompleted: number; } -export interface SentinelWeapon { +export interface ISentinelWeapon { ItemType: string; - Configs: SentinelWeaponConfig[]; + Configs: ISentinelWeaponConfig[]; UpgradeVer?: number; XP?: number; - ItemId: Oid; + ItemId: IOid; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; } -export interface SentinelWeaponConfig { +export interface ISentinelWeaponConfig { Skins?: FluffySkin[]; Upgrades?: string[]; } @@ -982,18 +981,18 @@ export enum FluffySkin { LotusUpgradesSkinsHolsterCustomizationsRifleUpperBack = "/Lotus/Upgrades/Skins/HolsterCustomizations/RifleUpperBack" } -export interface Sentinel { +export interface ISentinel { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; XP: number; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; - ItemId: Oid; + ItemId: IOid; } -export interface Settings { +export interface ISettings { FriendInvRestriction: string; GiftMode: string; GuildInvRestriction: string; @@ -1001,69 +1000,69 @@ export interface Settings { TradingRulesConfirmed: boolean; } -export interface Ship { +export interface IShip { ItemType: string; - ShipExterior: Terior; + ShipExterior: ITerior; AirSupportPower: string; - ItemId: Oid; + ItemId: IOid; } -export interface SpaceGun { +export interface ISpaceGun { ItemType: string; - Configs: SpaceGunConfig[]; + Configs: ISpaceGunConfig[]; XP?: number; UpgradeVer?: number; - ItemId: Oid; + ItemId: IOid; Features?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; UpgradeType?: UpgradeType; UpgradeFingerprint?: string; ItemName?: string; } -export interface SpaceGunConfig { +export interface ISpaceGunConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; Upgrades?: string[]; } -export interface Space { +export interface ISpace { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; XP: number; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; Features?: number; } -export interface SpecialItem { +export interface ISpecialItem { ItemType: string; - Configs: SpecialItemConfig[]; + Configs: ISpecialItemConfig[]; XP?: number; UpgradeVer?: number; Features: number; - ItemId: Oid; + ItemId: IOid; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; ModSlotPurchases?: number; } -export interface SpecialItemConfig { +export interface ISpecialItemConfig { Upgrades?: string[]; - pricol?: Color; + pricol?: IColor; Skins?: string[]; - attcol?: Color; - eyecol?: PurpleCol; - sigcol?: PurpleCol; + attcol?: IColor; + eyecol?: IPurpleCol; + sigcol?: IPurpleCol; Name?: string; } -export interface PurpleCol { +export interface IPurpleCol { en: number; } -export interface SpectreLoadout { +export interface ISpectreLoadout { LongGuns: string; Melee: string; Pistols: string; @@ -1073,30 +1072,30 @@ export interface SpectreLoadout { ItemType: string; } -export interface StepSequencer { - NotePacks: NotePacks; +export interface IStepSequencer { + NotePacks: INotePacks; FingerPrint: string; Name: string; - ItemId: Oid; + ItemId: IOid; } -export interface NotePacks { +export interface INotePacks { MELODY: string; BASS: string; PERCUSSION: string; } -export interface TauntHistory { +export interface ITauntHistory { node: string; state: string; } -export interface WeaponSkin { +export interface IWeaponSkin { ItemType: string; - ItemId: Oid; + ItemId: IOid; } -export interface WebFlags { +export interface IWebFlags { activeBuyPlat: number; noShow2FA: boolean; Tennocon2018Digital: boolean; diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 7fe6bf40..032becba 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -1,9 +1,9 @@ -import { Oid } from "@/src/types/commonTypes"; -import { Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "@/src/types/commonTypes"; +import { IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Types } from "mongoose"; export interface IWeaponResponse extends IWeaponDatabase { - ItemId: Oid; + ItemId: IOid; } export interface IWeaponDatabase { @@ -13,7 +13,7 @@ export interface IWeaponDatabase { XP?: number; Features?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; FocusLens?: string; ModSlotPurchases?: number; UpgradeType?: string; @@ -26,15 +26,15 @@ export interface IWeaponDatabase { export interface WeaponConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; Upgrades?: string[]; - attcol?: Color; - eyecol?: OperatorLoadOutSigcol; + attcol?: IColor; + eyecol?: IOperatorLoadOutSigcol; Name?: string; PvpUpgrades?: string[]; } -export interface OperatorLoadOutSigcol { +export interface IOperatorLoadOutSigcol { t0?: number; t1?: number; en?: number; diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index 1d53de43..472a5d5f 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -10,7 +10,7 @@ export interface ILoginResponse extends Omit Date: Wed, 6 Sep 2023 14:02:54 +0400 Subject: [PATCH 037/522] MissionInventoryUpdate(not completed), Mod upgrade, Booster purchase (#49) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Co-authored-by: Ângelo Tadeucci --- config.json | 2 +- src/controllers/api/artifactsController.ts | 23 ++ .../api/missionInventoryUpdateController.ts | 45 +++- src/models/inventoryModel.ts | 36 ++- src/routes/api.ts | 2 + src/services/inventoryService.ts | 157 +++++++++-- .../missionInventoryUpdateService .ts | 249 ++++++++++++++++++ src/types/genericUpdate.ts | 2 +- src/types/inventoryTypes/inventoryTypes.ts | 13 +- src/types/missionInventoryUpdateType.ts | 39 ++- src/types/session.ts | 1 + static/data/items.ts | 44 +++- static/json/missions-drop-table.json | 1 + .../scripts/missions-drop-table-get-script.js | 30 +++ 14 files changed, 593 insertions(+), 51 deletions(-) create mode 100644 src/controllers/api/artifactsController.ts create mode 100644 src/services/missionInventoryUpdateService .ts create mode 100644 static/json/missions-drop-table.json create mode 100644 static/json/scripts/missions-drop-table-get-script.js diff --git a/config.json b/config.json index a05a3e89..e59dd984 100644 --- a/config.json +++ b/config.json @@ -8,4 +8,4 @@ "skipTutorial": true, "testMission": true, "testQuestKey": true -} +} \ No newline at end of file diff --git a/src/controllers/api/artifactsController.ts b/src/controllers/api/artifactsController.ts new file mode 100644 index 00000000..93aa47af --- /dev/null +++ b/src/controllers/api/artifactsController.ts @@ -0,0 +1,23 @@ +import { upgradeMod } from "@/src/services/inventoryService"; +import { RequestHandler } from "express"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const artifactsController: RequestHandler = async (req, res) => { + const [data] = String(req.body).split("\n"); + const id = req.query.accountId as string; + + // TODO - salt check + + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const parsedData = JSON.parse(data); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const upgradeModId = await upgradeMod(parsedData, id); + res.send(upgradeModId); + } catch (err) { + console.error("Error parsing JSON data:", err); + } +}; + +export { artifactsController }; diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 16eeb0e4..3d8fcaff 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,7 +1,9 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; +import { combineRewardAndLootInventory, getRewards } from "@/src/services/missionInventoryUpdateService "; import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; /* +**** INPUT **** - [ ] crossPlaySetting - [ ] rewardsMultiplier - [ ] ActiveBoosters @@ -27,7 +29,7 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" - [ ] SeasonChallengeHistory - [ ] PS (Passive anti-cheat data which includes your username, module list, process list, and system name.) - [ ] ActiveDojoColorResearch -- [ ] RewardInfo +- [x] RewardInfo - [ ] ReceivedCeremonyMsg - [ ] LastCeremonyResetDate - [ ] MissionPTS (Used to validate the mission/alive time above.) @@ -42,20 +44,45 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" // eslint-disable-next-line @typescript-eslint/no-misused-promises const missionInventoryUpdateController: RequestHandler = async (req, res) => { + const [data] = String(req.body).split("\n"); const id = req.query.accountId as string; - const [data] = String(req.body).split("\n"); - try { - const parsedData = JSON.parse(data) as IMissionInventoryUpdate; - if (typeof parsedData !== "object") throw new Error("Invalid data format"); - await missionInventoryUpdate(parsedData, id); + const lootInventory = JSON.parse(data) as IMissionInventoryUpdate; + if (typeof lootInventory !== "object" || lootInventory === null) { + throw new Error("Invalid data format"); + } + + const { InventoryChanges, MissionRewards } = getRewards(lootInventory.RewardInfo); + + const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } = + combineRewardAndLootInventory(InventoryChanges, lootInventory); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, id)); + res.json({ + // InventoryJson, // this part will reset game data and missions will be locked + MissionRewards, + InventoryChanges, + TotalCredits, + CreditsBonus, + MissionCredits, + ...(FusionPoints !== undefined && { FusionPoints }) + }); } catch (err) { console.error("Error parsing JSON data:", err); } - - // TODO - Return the updated inventory the way the game does it. - res.json({}); }; +/* +**** OUTPUT **** +- [x] InventoryJson +- [x] MissionRewards +- [x] TotalCredits +- [x] CreditsBonus +- [x] MissionCredits +- [x] InventoryChanges +- [x] FusionPoints +*/ + export { missionInventoryUpdateController }; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index 9578d314..3e663eb4 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -7,7 +7,7 @@ import { IBooster } from "../types/inventoryTypes/inventoryTypes"; import { IOid } from "../types/commonTypes"; -import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; +import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; const abilityOverrideSchema = new Schema({ @@ -77,6 +77,34 @@ const BoosterSchema = new Schema({ ItemType: String }); +const RawUpgrades = new Schema({ + ItemType: String, + ItemCount: Number +}); + +RawUpgrades.set("toJSON", { + transform(_document, returnedObject) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.LastAdded = { $oid: returnedObject._id.toString() } satisfies IOid; + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const Upgrade = new Schema({ + UpgradeFingerprint: String, + ItemType: String +}); + +Upgrade.set("toJSON", { + transform(_document, returnedObject) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; + delete returnedObject._id; + delete returnedObject.__v; + } +}); + WeaponSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call @@ -187,7 +215,7 @@ const inventorySchema = new Schema({ MiscItems: [Schema.Types.Mixed], ChallengesFixVersion: Number, ChallengeProgress: [Schema.Types.Mixed], - RawUpgrades: [Schema.Types.Mixed], + RawUpgrades: [RawUpgrades], ReceivedStartingGear: Boolean, Suits: [suitSchema], LongGuns: [WeaponSchema], @@ -209,7 +237,7 @@ const inventorySchema = new Schema({ PendingRecipes: [Schema.Types.Mixed], TrainingDate: Schema.Types.Mixed, PlayerLevel: Number, - Upgrades: [Schema.Types.Mixed], + Upgrades: [Upgrade], EquippedGear: [String], DeathMarks: [String], FusionTreasures: [Schema.Types.Mixed], @@ -350,7 +378,7 @@ type InventoryDocumentProps = { Boosters: Types.DocumentArray; }; -type InventoryModelType = Model; +type InventoryModelType = Model; const Inventory = model("Inventory", inventorySchema); diff --git a/src/routes/api.ts b/src/routes/api.ts index c52a8056..3308b6d6 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -29,6 +29,7 @@ import { updateSessionGetController, updateSessionPostController } from "@/src/c import { viewController } from "@/src/controllers/api/viewController"; import { joinSessionController } from "@/src/controllers/api/joinSessionController"; import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; +import { artifactsController } from "../controllers/api/artifactsController"; import express from "express"; @@ -58,6 +59,7 @@ apiRouter.get("/deleteSession.php", deleteSessionController); apiRouter.get("/logout.php", logoutController); // post +apiRouter.post("/artifacts.php", artifactsController); apiRouter.post("/findSessions.php", findSessionsController); // eslint-disable-next-line @typescript-eslint/no-misused-promises apiRouter.post("/purchase.php", purchaseController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 565dd910..58b678c6 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -7,15 +7,14 @@ import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; import { IChallengeProgress, + IConsumable, + ICrewShipSalvagedWeaponSkin, IFlavourItem, - IInventoryDatabaseDocument + IInventoryDatabaseDocument, + IMiscItem, + IRawUpgrade } from "@/src/types/inventoryTypes/inventoryTypes"; -import { - IMissionInventoryUpdate, - IMissionInventoryUpdateCard, - IMissionInventoryUpdateGear, - IMissionInventoryUpdateItem -} from "../types/missionInventoryUpdateType"; +import { IMissionInventoryUpdate, IMissionInventoryUpdateGear } from "../types/missionInventoryUpdateType"; import { IGenericUpdate } from "../types/genericUpdate"; const createInventory = async (accountOwnerId: Types.ObjectId) => { @@ -146,7 +145,7 @@ const addGearExpByCategory = ( const category = inventory[categoryName]; gearArray?.forEach(({ ItemId, XP }) => { - const itemIndex = category.findIndex(i => i._id?.equals(ItemId.$oid)); + const itemIndex = category.findIndex(item => item._id?.equals(ItemId.$oid)); const item = category[itemIndex]; if (itemIndex !== -1 && item.XP != undefined) { @@ -156,21 +155,61 @@ const addGearExpByCategory = ( }); }; -const addItemsByCategory = ( - inventory: IInventoryDatabaseDocument, - itemsArray: (IMissionInventoryUpdateItem | IMissionInventoryUpdateCard)[] | undefined, - categoryName: "RawUpgrades" | "MiscItems" -) => { - const category = inventory[categoryName]; +const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined) => { + const { MiscItems } = inventory; itemsArray?.forEach(({ ItemCount, ItemType }) => { - const itemIndex = category.findIndex(i => i.ItemType === ItemType); + const itemIndex = MiscItems.findIndex(miscItem => miscItem.ItemType === ItemType); if (itemIndex !== -1) { - category[itemIndex].ItemCount += ItemCount; - inventory.markModified(`${categoryName}.${itemIndex}.ItemCount`); + MiscItems[itemIndex].ItemCount += ItemCount; + inventory.markModified(`MiscItems.${itemIndex}.ItemCount`); } else { - category.push({ ItemCount, ItemType }); + MiscItems.push({ ItemCount, ItemType }); + } + }); +}; + +const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { + const { Consumables } = inventory; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = Consumables.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + Consumables[itemIndex].ItemCount += ItemCount; + inventory.markModified(`Consumables.${itemIndex}.ItemCount`); + } else { + Consumables.push({ ItemCount, ItemType }); + } + }); +}; + +const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { + const { Recipes } = inventory; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = Recipes.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + Recipes[itemIndex].ItemCount += ItemCount; + inventory.markModified(`Recipes.${itemIndex}.ItemCount`); + } else { + Recipes.push({ ItemCount, ItemType }); + } + }); +}; + +const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => { + const { RawUpgrades } = inventory; + itemsArray?.forEach(({ ItemType, ItemCount }) => { + const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + RawUpgrades[itemIndex].ItemCount += ItemCount; + inventory.markModified(`RawUpgrades.${itemIndex}.ItemCount`); + } else { + RawUpgrades.push({ ItemCount, ItemType }); } }); }; @@ -193,20 +232,28 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChall const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; type GearKeysType = (typeof gearKeys)[number]; -export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string): Promise => { - const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data; +export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string) => { + const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, FusionPoints, Consumables, Recipes } = data; const inventory = await getInventory(accountId); + // credits + inventory.RegularCredits += RegularCredits || 0; + + // endo + inventory.FusionPoints += FusionPoints || 0; + // Gear XP gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); - // Other - // TODO: Ensure mods have a valid fusion level and items have a valid quantity, preferably inside of the functions themselves. - addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); - addItemsByCategory(inventory, MiscItems, "MiscItems"); + // other + addMods(inventory, RawUpgrades); + addMiscItems(inventory, MiscItems); + addConsumables(inventory, Consumables); + addRecipes(inventory, Recipes); addChallenges(inventory, ChallengeProgress); - await inventory.save(); + const changedInventory = await inventory.save(); + return changedInventory.toJSON(); }; export const addBooster = async (ItemType: string, time: number, accountId: string): Promise => { @@ -215,7 +262,7 @@ export const addBooster = async (ItemType: string, time: number, accountId: stri const inventory = await getInventory(accountId); const { Boosters } = inventory; - const itemIndex = Boosters.findIndex(i => i.ItemType === ItemType); + const itemIndex = Boosters.findIndex(booster => booster.ItemType === ItemType); if (itemIndex !== -1) { const existingBooster = Boosters[itemIndex]; @@ -228,4 +275,62 @@ export const addBooster = async (ItemType: string, time: number, accountId: stri await inventory.save(); }; +export const upgradeMod = async ( + { + Upgrade, + LevelDiff, + Cost, + FusionPointCost + }: { Upgrade: ICrewShipSalvagedWeaponSkin; LevelDiff: number; Cost: number; FusionPointCost: number }, + accountId: string +): Promise => { + try { + const inventory = await getInventory(accountId); + const { Upgrades, RawUpgrades } = inventory; + const { ItemType, UpgradeFingerprint, ItemId } = Upgrade; + + const safeUpgradeFingerprint = UpgradeFingerprint || '{"lvl":0}'; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const parsedUpgradeFingerprint = JSON.parse(safeUpgradeFingerprint); + parsedUpgradeFingerprint.lvl += LevelDiff; + const stringifiedUpgradeFingerprint = JSON.stringify(parsedUpgradeFingerprint); + + let itemIndex = Upgrades.findIndex(upgrade => upgrade._id?.equals(ItemId!.$oid)); + + if (itemIndex !== -1) { + Upgrades[itemIndex].UpgradeFingerprint = stringifiedUpgradeFingerprint; + inventory.markModified(`Upgrades.${itemIndex}.UpgradeFingerprint`); + } else { + itemIndex = + Upgrades.push({ + UpgradeFingerprint: stringifiedUpgradeFingerprint, + ItemType + }) - 1; + + const rawItemIndex = RawUpgrades.findIndex(rawUpgrade => rawUpgrade.ItemType === ItemType); + RawUpgrades[rawItemIndex].ItemCount--; + if (RawUpgrades[rawItemIndex].ItemCount > 0) { + inventory.markModified(`RawUpgrades.${rawItemIndex}.UpgradeFingerprint`); + } else { + RawUpgrades.splice(rawItemIndex, 1); + } + } + + inventory.RegularCredits -= Cost; + inventory.FusionPoints -= FusionPointCost; + + const changedInventory = await inventory.save(); + const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$oid; + + if (!itemId) { + throw new Error("Item Id not found in upgradeMod"); + } + + return itemId; + } catch (error) { + console.error("Error in upgradeMod:", error); + throw error; + } +}; + export { createInventory, addPowerSuit }; diff --git a/src/services/missionInventoryUpdateService .ts b/src/services/missionInventoryUpdateService .ts new file mode 100644 index 00000000..a3cbb9b3 --- /dev/null +++ b/src/services/missionInventoryUpdateService .ts @@ -0,0 +1,249 @@ +import { + IMissionInventoryUpdate, + IMissionInventoryUpdateRewardInfo, + IMissionRewardResponse, + IReward, + IInventoryFieldType, + inventoryFields +} from "@/src/types/missionInventoryUpdateType"; + +import missionsDropTable from "@/static/json/missions-drop-table.json"; +import { modNames, relicNames, miscNames, resourceNames, gearNames, blueprintNames } from "@/static/data/items"; + +// need reverse engineer rewardSeed, otherwise ingame displayed rotation reward will be different than added to db or displayed on mission end +const getRewards = ( + rewardInfo: IMissionInventoryUpdateRewardInfo | undefined +): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { + if (!rewardInfo) { + return { InventoryChanges: {}, MissionRewards: [] }; + } + + const rewards = (missionsDropTable as { [key: string]: IReward[] })[rewardInfo.node]; + if (!rewards) { + return { InventoryChanges: {}, MissionRewards: [] }; + } + + const rotationCount = rewardInfo.rewardQualifications?.length || 0; + const rotations = getRotations(rotationCount); + const drops: IReward[] = []; + for (const rotation of rotations) { + const rotationRewards = rewards.filter(reward => reward.rotation === rotation); + + // Separate guaranteed and chance drops + const guaranteedDrops: IReward[] = []; + const chanceDrops: IReward[] = []; + for (const reward of rotationRewards) { + if (reward.chance === 100) { + guaranteedDrops.push(reward); + } else { + chanceDrops.push(reward); + } + } + + const randomDrop = getRandomRewardByChance(chanceDrops); + if (randomDrop) { + guaranteedDrops.push(randomDrop); + } + + drops.push(...guaranteedDrops); + } + + // const testDrops = [ + // { chance: 7.69, name: "Lith W3 Relic", rotation: "B" }, + // { chance: 7.69, name: "Lith W3 Relic", rotation: "B" }, + // { chance: 10.82, name: "2X Orokin Cell", rotation: "C" }, + // { chance: 10.82, name: "Arrow Mutation", rotation: "C" }, + // { chance: 10.82, name: "200 Endo", rotation: "C" }, + // { chance: 10.82, name: "2,000,000 Credits Cache", rotation: "C" }, + // { chance: 7.69, name: "Health Restore (Large)", rotation: "C" }, + // { chance: 7.69, name: "Vapor Specter Blueprint", rotation: "C" } + // ]; + // console.log("Mission rewards:", testDrops); + // return formatRewardsToInventoryType(testDrops); + + console.log("Mission rewards:", drops); + return formatRewardsToInventoryType(drops); +}; + +const combineRewardAndLootInventory = ( + rewardInventory: IMissionInventoryUpdate, + lootInventory: IMissionInventoryUpdate +) => { + const missionCredits = lootInventory.RegularCredits || 0; + const creditsBonus = rewardInventory.RegularCredits || 0; + const totalCredits = missionCredits + creditsBonus; + const FusionPoints = (lootInventory.FusionPoints || 0) + (rewardInventory.FusionPoints || 0) || undefined; + + lootInventory.RegularCredits = totalCredits; + if (FusionPoints) { + lootInventory.FusionPoints = FusionPoints; + } + inventoryFields.forEach((field: IInventoryFieldType) => { + if (rewardInventory[field] && !lootInventory[field]) { + lootInventory[field] = []; + } + rewardInventory[field]?.forEach(item => lootInventory[field]!.push(item)); + }); + + return { + combinedInventoryChanges: lootInventory, + TotalCredits: [totalCredits, totalCredits], + CreditsBonus: [creditsBonus, creditsBonus], + MissionCredits: [missionCredits, missionCredits], + ...(FusionPoints !== undefined && { FusionPoints }) + }; +}; + +const getRotations = (rotationCount: number): (string | undefined)[] => { + if (rotationCount === 0) return [undefined]; + + const rotationPattern = ["A", "A", "B", "C"]; + let rotationIndex = 0; + const rotatedValues = []; + + for (let i = 1; i <= rotationCount; i++) { + rotatedValues.push(rotationPattern[rotationIndex]); + rotationIndex = (rotationIndex + 1) % 3; + } + + return rotatedValues; +}; + +const getRandomRewardByChance = (data: IReward[] | undefined): IReward | undefined => { + if (!data || data.length == 0) return; + + const totalChance = data.reduce((sum, item) => sum + item.chance, 0); + const randomValue = Math.random() * totalChance; + + let cumulativeChance = 0; + for (const item of data) { + cumulativeChance += item.chance; + if (randomValue <= cumulativeChance) { + return item; + } + } + + return; +}; + +const formatRewardsToInventoryType = ( + rewards: IReward[] +): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { + const InventoryChanges: IMissionInventoryUpdate = {}; + const MissionRewards: IMissionRewardResponse[] = []; + for (const reward of rewards) { + if (itemCheck(InventoryChanges, MissionRewards, reward.name)) { + continue; + } + + if (reward.name.includes(" Endo")) { + if (!InventoryChanges.FusionPoints) { + InventoryChanges.FusionPoints = 0; + } + InventoryChanges.FusionPoints += getCountFromName(reward.name); + } else if (reward.name.includes(" Credits Cache") || reward.name.includes("Return: ")) { + if (!InventoryChanges.RegularCredits) { + InventoryChanges.RegularCredits = 0; + } + InventoryChanges.RegularCredits += getCountFromName(reward.name); + } + } + return { InventoryChanges, MissionRewards }; +}; + +const itemCheck = ( + InventoryChanges: IMissionInventoryUpdate, + MissionRewards: IMissionRewardResponse[], + name: string +) => { + const rewardCheck = { + RawUpgrades: modNames[name], + Consumables: gearNames[name], + MiscItems: + miscNames[name] || + miscNames[name.replace(/\d+X\s*/, "")] || + resourceNames[name] || + resourceNames[name.replace(/\d+X\s*/, "")] || + relicNames[name.replace("Relic", "Intact")] || + relicNames[name.replace("Relic (Radiant)", "Radiant")], + Recipes: blueprintNames[name] + }; + for (const key of Object.keys(rewardCheck) as IInventoryFieldType[]) { + if (rewardCheck[key]) { + addRewardResponse(InventoryChanges, MissionRewards, name, rewardCheck[key]!, key); + return true; + } + } + return false; +}; + +const getCountFromName = (name: string) => { + const regex = /(^(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?)(\s|X))|(\s(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?)$)/; + const countMatches = name.match(regex); + return countMatches ? parseInt(countMatches[0].replace(/,/g, ""), 10) : 1; +}; + +const addRewardResponse = ( + InventoryChanges: IMissionInventoryUpdate, + MissionRewards: IMissionRewardResponse[], + ItemName: string, + ItemType: string, + InventoryCategory: IInventoryFieldType +) => { + if (!ItemType) return; + + if (!InventoryChanges[InventoryCategory]) { + InventoryChanges[InventoryCategory] = []; + } + + const ItemCount = getCountFromName(ItemName); + const TweetText = `${ItemName}`; + + const existReward = InventoryChanges[InventoryCategory]!.find(item => item.ItemType === ItemType); + if (existReward) { + existReward.ItemCount += ItemCount; + const missionReward = MissionRewards.find(missionReward => missionReward.TypeName === ItemType); + if (missionReward) { + missionReward.ItemCount += ItemCount; + } + } else { + InventoryChanges[InventoryCategory]!.push({ ItemType, ItemCount }); + MissionRewards.push({ + ItemCount, + TweetText, + ProductCategory: InventoryCategory, + StoreItem: ItemType.replace("/Lotus/", "/Lotus/StoreItems/"), + TypeName: ItemType + }); + } +}; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const _missionRewardsCheckAllNamings = () => { + let tempRewards: IReward[] = []; + Object.values(missionsDropTable as { [key: string]: IReward[] }).forEach(rewards => { + rewards.forEach(reward => { + tempRewards.push(reward); + }); + }); + tempRewards = tempRewards + .filter(reward => !modNames[reward.name]) + .filter(reward => !miscNames[reward.name]) + .filter(reward => !miscNames[reward.name.replace(/\d+X\s*/, "")]) + .filter(reward => !resourceNames[reward.name]) + .filter(reward => !resourceNames[reward.name.replace(/\d+X\s*/, "")]) + .filter(reward => !gearNames[reward.name]) + .filter(reward => { + return ( + !relicNames[reward.name.replace("Relic", "Intact")] && + !relicNames[reward.name.replace("Relic (Radiant)", "Radiant")] + ); + }) + .filter(reward => !blueprintNames[reward.name]) + .filter(reward => !reward.name.includes(" Endo")) + .filter(reward => !reward.name.includes(" Credits Cache") && !reward.name.includes("Return: ")); + console.log(tempRewards); +}; +// _missionRewardsCheckAllNamings(); + +export { getRewards, combineRewardAndLootInventory }; diff --git a/src/types/genericUpdate.ts b/src/types/genericUpdate.ts index 3f61f671..fa231be9 100644 --- a/src/types/genericUpdate.ts +++ b/src/types/genericUpdate.ts @@ -1,4 +1,4 @@ export interface IGenericUpdate { NodeIntrosCompleted: string | string[]; // AffiliationMods: any[]; -} \ No newline at end of file +} diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 9fef903d..f1a30e11 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; import { IOid } from "../commonTypes"; import { IAbilityOverride, IColor, FocusSchool, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; @@ -33,7 +34,7 @@ export interface IInventoryResponse { DailyFocus: number; GiftsRemaining: number; HandlerPoints: number; - MiscItems: IConsumable[]; + MiscItems: IMiscItem[]; ChallengesFixVersion: number; ChallengeProgress: IChallengeProgress[]; RawUpgrades: IRawUpgrade[]; @@ -319,7 +320,8 @@ export interface ICrewShipSalvageBinClass { export interface ICrewShipSalvagedWeaponSkin { ItemType: string; UpgradeFingerprint?: string; - ItemId: IOid; + ItemId?: IOid; + _id?: Types.ObjectId; } export interface ICrewShipWeapon { @@ -375,11 +377,6 @@ export interface IFlavourItem { ItemType: string; } -export interface IRawUpgrade { - ItemCount: number; - ItemType: string; -} - export interface IMiscItem { ItemCount: number; ItemType: string; @@ -933,9 +930,9 @@ export interface IProgress { } export interface IRawUpgrade { + ItemType: string; ItemCount: number; LastAdded?: IOid; - ItemType: string; } export interface IScoop { diff --git a/src/types/missionInventoryUpdateType.ts b/src/types/missionInventoryUpdateType.ts index 609adb3b..9268810b 100644 --- a/src/types/missionInventoryUpdateType.ts +++ b/src/types/missionInventoryUpdateType.ts @@ -1,6 +1,9 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { IOid } from "./commonTypes"; import { IDate } from "./inventoryTypes/inventoryTypes"; +export const inventoryFields = ["RawUpgrades", "MiscItems", "Consumables", "Recipes"] as const; +export type IInventoryFieldType = (typeof inventoryFields)[number]; export interface IMissionInventoryUpdateGear { ItemType: string; ItemName: string; @@ -43,6 +46,21 @@ export interface IMissionInventoryUpdateChallange { Completed: any[]; } +export interface IMissionInventoryUpdateRewardInfo { + node: string; + rewardTier?: number; + nightmareMode?: boolean; + useVaultManifest?: boolean; + EnemyCachesFound?: number; + toxinOk?: boolean; + lostTargetWave?: number; + defenseTargetCount?: number; + EOM_AFK?: number; + rewardQualifications?: string; + PurgatoryRewardQualifications?: string; + rewardSeed?: number; +} + export interface IMissionInventoryUpdate { rewardsMultiplier?: number; ActiveBoosters?: any[]; @@ -50,8 +68,27 @@ export interface IMissionInventoryUpdate { Pistols?: IMissionInventoryUpdateGear[]; Suits?: IMissionInventoryUpdateGear[]; Melee?: IMissionInventoryUpdateGear[]; - RawUpgrades?: IMissionInventoryUpdateCard[]; + RawUpgrades?: IMissionInventoryUpdateItem[]; MiscItems?: IMissionInventoryUpdateItem[]; + Consumables?: IMissionInventoryUpdateItem[]; + Recipes?: IMissionInventoryUpdateItem[]; RegularCredits?: number; ChallengeProgress?: IMissionInventoryUpdateChallange[]; + RewardInfo?: IMissionInventoryUpdateRewardInfo; + FusionPoints?: number; +} + +export interface IMissionRewardResponse { + StoreItem?: string; + TypeName: string; + UpgradeLevel?: number; + ItemCount: number; + TweetText: string; + ProductCategory: string; +} + +export interface IReward { + name: string; + chance: number; + rotation?: string; } diff --git a/src/types/session.ts b/src/types/session.ts index 66408991..222ccdf5 100644 --- a/src/types/session.ts +++ b/src/types/session.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export interface ISession { sessionId: string; creatorId: string; diff --git a/static/data/items.ts b/static/data/items.ts index dd4c6622..f2718a2f 100644 --- a/static/data/items.ts +++ b/static/data/items.ts @@ -1,4 +1,4 @@ -import Items, { Item, Weapon } from "warframe-items"; +import Items, { Category, Item, Warframe, Weapon } from "warframe-items"; type MinWeapon = Omit; type MinItem = Omit; @@ -16,3 +16,45 @@ export const items: MinItem[] = new Items({ category: ["All"] }).map(item => { delete next.patchlogs; return next; }); + +const getNamesObj = (category: Category) => + new Items({ category: [category] }).reduce((acc, item) => { + acc[item.name!.replace("'S", "'s")] = item.uniqueName!; + return acc; + }, {} as ImportAssertions); + +export const modNames = getNamesObj("Mods"); +export const resourceNames = getNamesObj("Resources"); +export const miscNames = getNamesObj("Misc"); +export const relicNames = getNamesObj("Relics"); +export const skinNames = getNamesObj("Skins"); +export const arcaneNames = getNamesObj("Arcanes"); +export const gearNames = getNamesObj("Gear"); + +export const craftNames: ImportAssertions = Object.fromEntries( + ( + new Items({ + category: [ + "Warframes", + "Gear", + "Melee", + "Primary", + "Secondary", + "Sentinels", + "Misc", + "Arch-Gun", + "Arch-Melee" + ] + }) as Warframe[] + ) + .flatMap(item => item.components || []) + .filter(item => item.drops && item.drops[0]) + .map(item => [item.drops![0].type, item.uniqueName]) +); +craftNames["Forma Blueprint"] = "/Lotus/Types/Recipes/Components/FormaBlueprint"; + +export const blueprintNames: ImportAssertions = Object.fromEntries( + Object.keys(craftNames) + .filter(name => name.includes("Blueprint")) + .map(name => [name, craftNames[name]]) +); diff --git a/static/json/missions-drop-table.json b/static/json/missions-drop-table.json new file mode 100644 index 00000000..f720ca1c --- /dev/null +++ b/static/json/missions-drop-table.json @@ -0,0 +1 @@ +{"SolNode94":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode130":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode119":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode12":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode28":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"SolNode108":[{"chance":38.72,"name":"Seer Blueprint"},{"chance":38.72,"name":"Seer Barrel"},{"chance":22.56,"name":"Seer Receiver"}],"SolNode224":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode225":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode123":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode61":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"SolNode23":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode109":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode104":[{"chance":38.72,"name":"Rhino Neuroptics Blueprint"},{"chance":38.72,"name":"Rhino Chassis Blueprint"},{"chance":22.56,"name":"Rhino Systems Blueprint"}],"SolNode66":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"ClanNode1":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.28,"name":"True Punishment","rotation":"C"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode107":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode22":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode101":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"ClanNode0":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode902":[{"chance":5.64,"name":"Morphic Transformer"},{"chance":38.72,"name":"Automatic Trigger"},{"chance":5.64,"name":"Phaedra Receiver"},{"chance":38.72,"name":"Extend"},{"chance":5.64,"name":"Shell Rush"},{"chance":5.64,"name":"Shell Rush"}],"SolNode63":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode79":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode39":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode15":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode26":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode85":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode75":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.18,"name":"300X Ferrite","rotation":"B"},{"chance":12.18,"name":"150X Rubedo","rotation":"B"},{"chance":12.18,"name":"Detonite Ampule","rotation":"B"},{"chance":12.18,"name":"100 Endo","rotation":"B"},{"chance":12.18,"name":"100 Endo","rotation":"B"},{"chance":12.18,"name":"3,000 Credits Cache","rotation":"B"},{"chance":12.18,"name":"3,000 Credits Cache","rotation":"B"},{"chance":12.18,"name":"Neurodes","rotation":"B"},{"chance":2.58,"name":"Kubrow Egg","rotation":"B"},{"chance":15.1,"name":"Health Restore (Large)","rotation":"C"},{"chance":15.1,"name":"Health Restore (Large)","rotation":"C"},{"chance":15.1,"name":"200 Endo","rotation":"C"},{"chance":15.1,"name":"200 Endo","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"Bite","rotation":"C"},{"chance":3.67,"name":"Link Armor","rotation":"C"},{"chance":3.67,"name":"Link Health","rotation":"C"},{"chance":3.67,"name":"Link Shields","rotation":"C"},{"chance":3.67,"name":"Maul","rotation":"C"},{"chance":3.67,"name":"Hastened Deflection","rotation":"C"},{"chance":2,"name":"Forma Blueprint","rotation":"C"},{"chance":0.5,"name":"Forma","rotation":"C"}],"SolNode24":[{"chance":38.72,"name":"Hydroid Neuroptics Blueprint"},{"chance":38.72,"name":"Hydroid Chassis Blueprint"},{"chance":22.56,"name":"Hydroid Systems Blueprint"}],"ClanNode2":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode903":[{"chance":38.72,"name":"Polar Magazine"},{"chance":38.72,"name":"Superior Defenses"},{"chance":3.76,"name":"Meteor Crash"},{"chance":3.76,"name":"Nebula Bore"},{"chance":3.76,"name":"Astral Slash"},{"chance":3.76,"name":"Comet Blast"},{"chance":3.76,"name":"Quasar Drill"},{"chance":3.76,"name":"Zodiac Shred"}],"ClanNode3":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode30":[{"chance":14.29,"name":"Lith G6 Relic","rotation":"A"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"A"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"A"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"A"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"A"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"A"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":14.29,"name":"Meso P11 Relic","rotation":"C"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"C"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"C"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"C"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"C"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"C"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"C"}],"SolNode46":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode106":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode41":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode16":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode45":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode36":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"ClanNode8":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode99":[{"chance":38.72,"name":"Excalibur Neuroptics Blueprint"},{"chance":38.72,"name":"Excalibur Chassis Blueprint"},{"chance":22.56,"name":"Excalibur Systems Blueprint"}],"SolNode65":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"ClanNode9":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode904":[{"chance":5.64,"name":"Morphic Transformer"},{"chance":38.72,"name":"Automatic Trigger"},{"chance":5.64,"name":"Phaedra Receiver"},{"chance":38.72,"name":"Extend"},{"chance":5.64,"name":"Shell Rush"},{"chance":5.64,"name":"Shell Rush"}],"SolNode87":[{"chance":27.78,"name":"5X Hexenon","rotation":"A"},{"chance":5.56,"name":"Meso P11 Relic","rotation":"A"},{"chance":5.56,"name":"Meso G5 Relic","rotation":"A"},{"chance":5.56,"name":"Meso K6 Relic","rotation":"A"},{"chance":5.56,"name":"Meso P13 Relic","rotation":"A"},{"chance":11.11,"name":"Proton Pulse","rotation":"A"},{"chance":11.11,"name":"Motus Signal","rotation":"A"},{"chance":11.11,"name":"Aero Periphery","rotation":"A"},{"chance":5.56,"name":"Meso C8 Relic","rotation":"A"},{"chance":5.56,"name":"Meso K4 Relic","rotation":"A"},{"chance":5.56,"name":"Meso S12 Relic","rotation":"A"},{"chance":27.78,"name":"10X Hexenon","rotation":"B"},{"chance":5.56,"name":"Neo F2 Relic","rotation":"B"},{"chance":5.56,"name":"Neo T7 Relic","rotation":"B"},{"chance":5.56,"name":"Neo K5 Relic","rotation":"B"},{"chance":11.11,"name":"Proton Jet","rotation":"B"},{"chance":11.11,"name":"Motus Impact","rotation":"B"},{"chance":11.11,"name":"Aero Vantage","rotation":"B"},{"chance":5.56,"name":"Neo D7 Relic","rotation":"B"},{"chance":5.56,"name":"Neo C4 Relic","rotation":"B"},{"chance":5.56,"name":"Neo L3 Relic","rotation":"B"},{"chance":5.56,"name":"Neo N23 Relic","rotation":"B"},{"chance":30,"name":"15X Hexenon","rotation":"C"},{"chance":5,"name":"Axi H6 Relic","rotation":"C"},{"chance":5,"name":"Axi A16 Relic","rotation":"C"},{"chance":5,"name":"Axi G10 Relic","rotation":"C"},{"chance":10,"name":"Proton Snap","rotation":"C"},{"chance":10,"name":"Motus Setup","rotation":"C"},{"chance":10,"name":"Aero Agility","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"},{"chance":5,"name":"Axi B6 Relic","rotation":"C"},{"chance":5,"name":"Axi K11 Relic","rotation":"C"},{"chance":5,"name":"Axi W3 Relic","rotation":"C"},{"chance":5,"name":"Axi H7 Relic","rotation":"C"}],"SolNode88":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode97":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode126":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"SolNode125":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode100":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode25":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode121":[{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode53":[{"chance":38.72,"name":"Valkyr Neuroptics Blueprint"},{"chance":38.72,"name":"Valkyr Chassis Blueprint"},{"chance":22.56,"name":"Valkyr Systems Blueprint"}],"SolNode740":[{"chance":22.56,"name":"Wisp Blueprint"},{"chance":25.81,"name":"Wisp Chassis Blueprint"},{"chance":25.81,"name":"Wisp Neuroptics Blueprint"},{"chance":25.81,"name":"Wisp Systems Blueprint"}],"ClanNode4":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode73":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode905":[{"chance":25.81,"name":"Glacial Edge"},{"chance":25.81,"name":"Conductive Blade"},{"chance":25.81,"name":"Tempered Blade"},{"chance":3.76,"name":"Meteor Crash"},{"chance":3.76,"name":"Nebula Bore"},{"chance":3.76,"name":"Astral Slash"},{"chance":3.76,"name":"Comet Blast"},{"chance":3.76,"name":"Quasar Drill"},{"chance":3.76,"name":"Zodiac Shred"}],"ClanNode5":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode42":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode96":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode67":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode32":[{"chance":38.72,"name":"Ember Neuroptics Blueprint"},{"chance":38.72,"name":"Ember Chassis Blueprint"},{"chance":22.56,"name":"Ember Systems Blueprint"}],"SolNode18":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode70":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode31":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode50":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"SolNode82":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode906":[{"chance":5.06,"name":"400 Endo"},{"chance":3.16,"name":"400 Endo"},{"chance":1.01,"name":"400 Endo"},{"chance":1.01,"name":"400 Endo"},{"chance":5.06,"name":"400 Endo"},{"chance":5.06,"name":"Tempered Blade"},{"chance":5.06,"name":"Sudden Impact"},{"chance":5.06,"name":"Poisonous Sting"},{"chance":5.06,"name":"Glacial Edge"},{"chance":5.06,"name":"Conductive Blade"},{"chance":5.06,"name":"Furor"},{"chance":3.16,"name":"Extend"},{"chance":3.16,"name":"Superior Defenses"},{"chance":3.16,"name":"Cutting Edge"},{"chance":3.16,"name":"System Reroute"},{"chance":3.16,"name":"Efficient Transferral"},{"chance":3.16,"name":"Blazing Steel"},{"chance":5.06,"name":"Meso P11 Relic"},{"chance":5.06,"name":"Meso G5 Relic"},{"chance":5.06,"name":"Meso K6 Relic"},{"chance":5.06,"name":"Meso P13 Relic"},{"chance":5.06,"name":"Meso C8 Relic"},{"chance":5.06,"name":"Meso K4 Relic"},{"chance":5.06,"name":"Meso S12 Relic"}],"ClanNode13":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode12":[{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":2.58,"name":"Expel Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Smite Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Meso P11 Relic","rotation":"B"},{"chance":10,"name":"Meso G5 Relic","rotation":"B"},{"chance":10,"name":"Meso K6 Relic","rotation":"B"},{"chance":10,"name":"Meso P13 Relic","rotation":"B"},{"chance":10,"name":"Meso C8 Relic","rotation":"B"},{"chance":10,"name":"Meso K4 Relic","rotation":"B"},{"chance":10,"name":"Meso S12 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Enduring Strike","rotation":"C"},{"chance":10,"name":"Neo F2 Relic","rotation":"C"},{"chance":10,"name":"Neo T7 Relic","rotation":"C"},{"chance":10,"name":"Neo K5 Relic","rotation":"C"},{"chance":10,"name":"Neo D7 Relic","rotation":"C"},{"chance":10,"name":"Neo C4 Relic","rotation":"C"},{"chance":10,"name":"Neo L3 Relic","rotation":"C"},{"chance":10,"name":"Neo N23 Relic","rotation":"C"}],"SolNode33":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode105":[{"chance":11.28,"name":"Equinox Night Aspect Blueprint"},{"chance":12.91,"name":"Equinox Night Chassis Blueprint"},{"chance":12.91,"name":"Equinox Night Neuroptics Blueprint"},{"chance":12.91,"name":"Equinox Night Systems Blueprint"},{"chance":11.28,"name":"Equinox Day Aspect Blueprint"},{"chance":12.91,"name":"Equinox Day Chassis Blueprint"},{"chance":12.91,"name":"Equinox Day Neuroptics Blueprint"},{"chance":12.91,"name":"Equinox Day Systems Blueprint"}],"SolNode64":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode69":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode98":[{"chance":20,"name":"3,000 Credits Cache","rotation":"A"},{"chance":20,"name":"3,000 Credits Cache","rotation":"A"},{"chance":20,"name":"300X Polymer Bundle","rotation":"A"},{"chance":20,"name":"200 Endo","rotation":"A"},{"chance":20,"name":"200 Endo","rotation":"A"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"200 Endo","rotation":"B"},{"chance":15.49,"name":"200 Endo","rotation":"B"},{"chance":15.49,"name":"300X Plastids","rotation":"B"},{"chance":4.51,"name":"Battering Maneuver","rotation":"B"},{"chance":4.51,"name":"Mobilize","rotation":"B"},{"chance":4.51,"name":"Piercing Step","rotation":"B"},{"chance":4.51,"name":"Rending Turn","rotation":"B"},{"chance":4.51,"name":"Patagium","rotation":"B"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":4.51,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"2X Gallium","rotation":"C"},{"chance":15.49,"name":"3X Gallium","rotation":"C"},{"chance":15.49,"name":"250X Oxium","rotation":"C"},{"chance":15.49,"name":"Tellurium","rotation":"C"},{"chance":4.51,"name":"Lightning Dash","rotation":"C"},{"chance":4.51,"name":"Firewalker","rotation":"C"},{"chance":4.51,"name":"Ice Spring","rotation":"C"},{"chance":4.51,"name":"Toxic Flight","rotation":"C"}],"SolNode9":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"SolNode60":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"ClanNode16":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":13.56,"name":"Neo F2 Relic","rotation":"C"},{"chance":13.56,"name":"Neo T7 Relic","rotation":"C"},{"chance":13.56,"name":"Neo K5 Relic","rotation":"C"},{"chance":5.08,"name":"Universal Medallion","rotation":"C"},{"chance":13.56,"name":"Neo D7 Relic","rotation":"C"},{"chance":13.56,"name":"Neo C4 Relic","rotation":"C"},{"chance":13.56,"name":"Neo L3 Relic","rotation":"C"},{"chance":13.56,"name":"Neo N23 Relic","rotation":"C"}],"SolNode122":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode907":[{"chance":2.51,"name":"Automatic Trigger","rotation":"A"},{"chance":2.51,"name":"Combustion Rounds","rotation":"A"},{"chance":2.51,"name":"Dual Rounds","rotation":"A"},{"chance":2.51,"name":"Hollowed Bullets","rotation":"A"},{"chance":2.51,"name":"Magazine Extension","rotation":"A"},{"chance":2.51,"name":"Modified Munitions","rotation":"A"},{"chance":2.51,"name":"Parallax Scope","rotation":"A"},{"chance":2.51,"name":"Rubedo-Lined Barrel","rotation":"A"},{"chance":2.51,"name":"Venomous Clip","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"A"},{"chance":10,"name":"Superior Defenses","rotation":"B"},{"chance":10,"name":"Bleeding Edge","rotation":"B"},{"chance":10,"name":"Superior Defenses","rotation":"B"},{"chance":10,"name":"Argon Plating","rotation":"B"},{"chance":10,"name":"Furor","rotation":"B"},{"chance":10,"name":"Glacial Edge","rotation":"B"},{"chance":10,"name":"Electrified Barrel","rotation":"B"},{"chance":10,"name":"Energy Inversion","rotation":"B"},{"chance":10,"name":"250 Endo","rotation":"B"},{"chance":10,"name":"250 Endo","rotation":"B"},{"chance":22.56,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"Axi H6 Relic","rotation":"C"},{"chance":9.68,"name":"Axi A16 Relic","rotation":"C"},{"chance":9.68,"name":"Axi G10 Relic","rotation":"C"},{"chance":9.68,"name":"Axi B6 Relic","rotation":"C"},{"chance":9.68,"name":"Axi K11 Relic","rotation":"C"},{"chance":9.68,"name":"Axi W3 Relic","rotation":"C"},{"chance":9.68,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode17":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode1":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode17":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode78":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode6":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode127":[{"chance":38.72,"name":"Loki Neuroptics Blueprint"},{"chance":38.72,"name":"Loki Chassis Blueprint"},{"chance":22.56,"name":"Loki Systems Blueprint"}],"SolNode118":[{"chance":100,"name":"2X 10,000 Credits Cache","rotation":"A"},{"chance":100,"name":"3X 10,000 Credits Cache","rotation":"B"},{"chance":95,"name":"5X 10,000 Credits Cache","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"}],"SolNode84":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"ClanNode20":[{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"250 Endo","rotation":"A"},{"chance":2.58,"name":"Expel Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Smite Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Neo F2 Relic","rotation":"B"},{"chance":10,"name":"Neo T7 Relic","rotation":"B"},{"chance":10,"name":"Neo K5 Relic","rotation":"B"},{"chance":10,"name":"Neo D7 Relic","rotation":"B"},{"chance":10,"name":"Neo C4 Relic","rotation":"B"},{"chance":10,"name":"Neo L3 Relic","rotation":"B"},{"chance":10,"name":"Neo N23 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Life Strike","rotation":"C"},{"chance":10,"name":"Axi H6 Relic","rotation":"C"},{"chance":10,"name":"Axi A16 Relic","rotation":"C"},{"chance":10,"name":"Axi G10 Relic","rotation":"C"},{"chance":10,"name":"Axi B6 Relic","rotation":"C"},{"chance":10,"name":"Axi K11 Relic","rotation":"C"},{"chance":10,"name":"Axi W3 Relic","rotation":"C"},{"chance":10,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode21":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode72":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode48":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode76":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode51":[{"chance":38.72,"name":"Trinity Neuroptics Blueprint"},{"chance":38.72,"name":"Trinity Chassis Blueprint"},{"chance":22.56,"name":"Trinity Systems Blueprint"}],"SolNode56":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"Orokin Cell","rotation":"C"},{"chance":12.58,"name":"Gallium","rotation":"C"},{"chance":12.58,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode43":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"SolNode81":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode24":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode102":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"ClanNode25":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode135":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode132":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode139":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode141":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode137":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode144":[{"chance":38.72,"name":"Frost Neuroptics Blueprint"},{"chance":38.72,"name":"Frost Chassis Blueprint"},{"chance":22.56,"name":"Frost Systems Blueprint"}],"SolNode149":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode147":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode146":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode23":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.28,"name":"True Punishment","rotation":"C"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"ClanNode22":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode153":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode162":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode167":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"150 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Nidus Systems Blueprint","rotation":"C"},{"chance":14.29,"name":"Nidus Neuroptics Blueprint","rotation":"C"},{"chance":14.29,"name":"Nidus Chassis Blueprint","rotation":"C"},{"chance":14.29,"name":"Vital Sense","rotation":"C"},{"chance":14.29,"name":"Metal Auger","rotation":"C"},{"chance":14.29,"name":"Stretch","rotation":"C"},{"chance":14.29,"name":"300 Endo","rotation":"C"}],"SolNode166":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode18":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode172":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode19":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Life Strike","rotation":"C"},{"chance":12.5,"name":"Axi H6 Relic","rotation":"C"},{"chance":12.5,"name":"Axi A16 Relic","rotation":"C"},{"chance":12.5,"name":"Axi G10 Relic","rotation":"C"},{"chance":12.5,"name":"Axi B6 Relic","rotation":"C"},{"chance":12.5,"name":"Axi K11 Relic","rotation":"C"},{"chance":12.5,"name":"Axi W3 Relic","rotation":"C"},{"chance":12.5,"name":"Axi H7 Relic","rotation":"C"}],"SolNode175":[{"chance":16.67,"name":"3,000 Credits Cache","rotation":"A"},{"chance":16.67,"name":"3,000 Credits Cache","rotation":"A"},{"chance":16.67,"name":"200 Endo","rotation":"A"},{"chance":16.67,"name":"200 Endo","rotation":"A"},{"chance":16.67,"name":"1000X Nano Spores","rotation":"A"},{"chance":16.67,"name":"Thief's Wit","rotation":"A"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"300 Endo","rotation":"B"},{"chance":15.49,"name":"350X Plastids","rotation":"B"},{"chance":15.49,"name":"3X Mutagen Sample","rotation":"B"},{"chance":5.64,"name":"Contagious Spread","rotation":"B"},{"chance":5.64,"name":"Pathogen Rounds","rotation":"B"},{"chance":5.64,"name":"Infected Clip","rotation":"B"},{"chance":5.64,"name":"Fever Strike","rotation":"B"},{"chance":15.49,"name":"Neurodes","rotation":"C"},{"chance":15.49,"name":"2X Neurodes","rotation":"C"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":4.51,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"Enemy Sense","rotation":"C"},{"chance":4.51,"name":"Mutalist Alad V Nav Coordinate","rotation":"C"},{"chance":4.51,"name":"High Voltage","rotation":"C"},{"chance":4.51,"name":"Shell Shock","rotation":"C"},{"chance":4.51,"name":"Firestorm","rotation":"C"}],"SolNode177":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":10.2,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.2,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.2,"name":"Axi G10 Relic","rotation":"C"},{"chance":7.84,"name":"Gauss Chassis Blueprint","rotation":"C"},{"chance":7.84,"name":"Gauss Neuroptics Blueprint","rotation":"C"},{"chance":7.84,"name":"Gauss Systems Blueprint","rotation":"C"},{"chance":5.1,"name":"Universal Medallion","rotation":"C"},{"chance":10.2,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.2,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.2,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.2,"name":"Axi H7 Relic","rotation":"C"}],"SolNode184":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"Orokin Cell","rotation":"C"},{"chance":12.58,"name":"Gallium","rotation":"C"},{"chance":12.58,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode183":[{"chance":75.5,"name":"5,000 Credits Cache"},{"chance":22,"name":"250 Endo"},{"chance":0.5,"name":"Forma Blueprint"},{"chance":0.5,"name":"Crimson Dervish"},{"chance":0.5,"name":"Astral Twilight"},{"chance":0.5,"name":"Blind Justice"},{"chance":0.25,"name":"Tempo Royale"},{"chance":0.25,"name":"Vengeful Revenant"}],"SolNode190":[{"chance":75.88,"name":"4,000 Credits Cache"},{"chance":22.11,"name":"250 Endo"},{"chance":0.34,"name":"Forma Blueprint"},{"chance":0.34,"name":"Crushing Ruin"},{"chance":0.34,"name":"Final Harbinger"},{"chance":0.34,"name":"Vermillion Storm"},{"chance":0.34,"name":"Stalking Fan"},{"chance":0.34,"name":"Decisive Judgement"}],"SolNode185":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"SolNode187":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode188":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"SolNode189":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode199":[{"chance":75.5,"name":"5,000 Credits Cache"},{"chance":22,"name":"250 Endo"},{"chance":0.5,"name":"Forma Blueprint"},{"chance":0.5,"name":"Crimson Dervish"},{"chance":0.5,"name":"Astral Twilight"},{"chance":0.5,"name":"Blind Justice"},{"chance":0.25,"name":"Tempo Royale"},{"chance":0.25,"name":"Vengeful Revenant"}],"SolNode193":[{"chance":38.72,"name":"Saryn Neuroptics Blueprint"},{"chance":38.72,"name":"Saryn Chassis Blueprint"},{"chance":22.56,"name":"Saryn Systems Blueprint"}],"SolNode195":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode14":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode15":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode203":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode210":[{"chance":38.72,"name":"Nova Neuroptics Blueprint"},{"chance":38.72,"name":"Nova Chassis Blueprint"},{"chance":22.56,"name":"Nova Systems Blueprint"}],"SolNode216":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode211":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode215":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode212":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode217":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"ClanNode6":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode7":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode400":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode401":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode402":[{"chance":6.67,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.67,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"A"},{"chance":6.67,"name":"Aya","rotation":"A"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"B"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"B"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"B"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"B"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"B"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"B"},{"chance":2.05,"name":"Meso P11 Relic","rotation":"B"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"B"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"B"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"B"},{"chance":2.05,"name":"Meso P13 Relic","rotation":"B"},{"chance":2.05,"name":"Meso C8 Relic","rotation":"B"},{"chance":2.05,"name":"Meso K4 Relic","rotation":"B"},{"chance":2.05,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":6.67,"name":"Lith G6 Relic","rotation":"C"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"C"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"C"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"C"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"C"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"C"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"C"},{"chance":6.67,"name":"Meso P11 Relic","rotation":"C"},{"chance":6.67,"name":"Meso G5 Relic","rotation":"C"},{"chance":6.67,"name":"Meso K6 Relic","rotation":"C"},{"chance":6.67,"name":"Meso P13 Relic","rotation":"C"},{"chance":6.67,"name":"Meso C8 Relic","rotation":"C"},{"chance":6.67,"name":"Meso K4 Relic","rotation":"C"},{"chance":6.67,"name":"Meso S12 Relic","rotation":"C"},{"chance":6.67,"name":"Aya","rotation":"C"}],"SolNode403":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode404":[{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Bullet Dance","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode405":[{"chance":11.06,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"A"},{"chance":2.05,"name":"Meso P11 Relic","rotation":"A"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"A"},{"chance":2.05,"name":"Meso P13 Relic","rotation":"A"},{"chance":2.05,"name":"Meso C8 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K4 Relic","rotation":"A"},{"chance":2.05,"name":"Meso S12 Relic","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.05,"name":"Neo F2 Relic","rotation":"B"},{"chance":2.05,"name":"Neo F2 Relic","rotation":"B"},{"chance":2.05,"name":"Neo T7 Relic","rotation":"B"},{"chance":2.05,"name":"Neo K5 Relic","rotation":"B"},{"chance":2.05,"name":"Neo D7 Relic","rotation":"B"},{"chance":2.05,"name":"Neo C4 Relic","rotation":"B"},{"chance":2.05,"name":"Neo L3 Relic","rotation":"B"},{"chance":2.05,"name":"Neo N23 Relic","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":6.49,"name":"Meso P11 Relic","rotation":"C"},{"chance":1.29,"name":"Meso P11 Relic","rotation":"C"},{"chance":6.49,"name":"Meso G5 Relic","rotation":"C"},{"chance":6.49,"name":"Meso K6 Relic","rotation":"C"},{"chance":6.49,"name":"Meso P13 Relic","rotation":"C"},{"chance":6.49,"name":"Meso C8 Relic","rotation":"C"},{"chance":6.49,"name":"Meso K4 Relic","rotation":"C"},{"chance":6.49,"name":"Meso S12 Relic","rotation":"C"},{"chance":6.49,"name":"Neo F2 Relic","rotation":"C"},{"chance":6.49,"name":"Neo T7 Relic","rotation":"C"},{"chance":6.49,"name":"Neo K5 Relic","rotation":"C"},{"chance":6.49,"name":"Neo D7 Relic","rotation":"C"},{"chance":6.49,"name":"Neo C4 Relic","rotation":"C"},{"chance":6.49,"name":"Neo L3 Relic","rotation":"C"},{"chance":6.49,"name":"Neo N23 Relic","rotation":"C"},{"chance":6.49,"name":"Aya","rotation":"C"},{"chance":1.29,"name":"Aya","rotation":"C"}],"SolNode406":[{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Neo F2 Relic"},{"chance":6.67,"name":"Neo T7 Relic"},{"chance":6.67,"name":"Neo K5 Relic"},{"chance":6.67,"name":"Neo D7 Relic"},{"chance":6.67,"name":"Neo C4 Relic"},{"chance":6.67,"name":"Neo L3 Relic"},{"chance":6.67,"name":"Neo N23 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode407":[{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Neo F2 Relic"},{"chance":6.67,"name":"Neo T7 Relic"},{"chance":6.67,"name":"Neo K5 Relic"},{"chance":6.67,"name":"Neo D7 Relic"},{"chance":6.67,"name":"Neo C4 Relic"},{"chance":6.67,"name":"Neo L3 Relic"},{"chance":6.67,"name":"Neo N23 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode408":[{"chance":6.96,"name":"Meso P11 Relic","rotation":"A"},{"chance":6.96,"name":"Meso G5 Relic","rotation":"A"},{"chance":6.96,"name":"Meso K6 Relic","rotation":"A"},{"chance":6.96,"name":"Meso P13 Relic","rotation":"A"},{"chance":1.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":6.96,"name":"Meso K4 Relic","rotation":"A"},{"chance":6.96,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.96,"name":"Aya","rotation":"A"},{"chance":6.96,"name":"Neo F2 Relic","rotation":"A"},{"chance":6.96,"name":"Neo T7 Relic","rotation":"A"},{"chance":6.96,"name":"Neo K5 Relic","rotation":"A"},{"chance":6.96,"name":"Neo D7 Relic","rotation":"A"},{"chance":6.96,"name":"Neo C4 Relic","rotation":"A"},{"chance":6.96,"name":"Neo L3 Relic","rotation":"A"},{"chance":6.96,"name":"Neo N23 Relic","rotation":"A"},{"chance":1.29,"name":"Aya","rotation":"A"},{"chance":9.09,"name":"Neo F2 Relic","rotation":"B"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"B"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"B"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"B"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"B"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"B"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"B"},{"chance":9.09,"name":"Aya","rotation":"B"},{"chance":9.68,"name":"Neo F2 Relic","rotation":"C"},{"chance":9.68,"name":"Neo T7 Relic","rotation":"C"},{"chance":9.68,"name":"Neo K5 Relic","rotation":"C"},{"chance":9.68,"name":"Neo D7 Relic","rotation":"C"},{"chance":9.68,"name":"Neo C4 Relic","rotation":"C"},{"chance":9.68,"name":"Neo L3 Relic","rotation":"C"},{"chance":9.68,"name":"Neo N23 Relic","rotation":"C"},{"chance":9.68,"name":"Aya","rotation":"C"},{"chance":2.82,"name":"Axi H6 Relic","rotation":"C"},{"chance":2.82,"name":"Axi A16 Relic","rotation":"C"},{"chance":2.82,"name":"Axi G10 Relic","rotation":"C"},{"chance":2.82,"name":"Axi B6 Relic","rotation":"C"},{"chance":2.82,"name":"Axi K11 Relic","rotation":"C"},{"chance":2.82,"name":"Axi W3 Relic","rotation":"C"},{"chance":2.82,"name":"Axi H7 Relic","rotation":"C"},{"chance":2.82,"name":"Aya","rotation":"C"}],"SolNode409":[{"chance":9.09,"name":"Neo F2 Relic","rotation":"A"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"A"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"A"},{"chance":9.09,"name":"Aya","rotation":"A"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Aya","rotation":"B"},{"chance":10.84,"name":"Axi H6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi A16 Relic","rotation":"C"},{"chance":0.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.84,"name":"Axi G10 Relic","rotation":"C"},{"chance":0.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":10.84,"name":"Axi B6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi K11 Relic","rotation":"C"},{"chance":0.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.84,"name":"Axi W3 Relic","rotation":"C"},{"chance":0.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.84,"name":"Axi H7 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H7 Relic","rotation":"C"},{"chance":22.11,"name":"Aya","rotation":"C"}],"SolNode410":[{"chance":6.25,"name":"Neo F2 Relic"},{"chance":6.25,"name":"Neo T7 Relic"},{"chance":6.25,"name":"Neo K5 Relic"},{"chance":6.25,"name":"Neo D7 Relic"},{"chance":6.25,"name":"Neo C4 Relic"},{"chance":6.25,"name":"Neo C4 Relic"},{"chance":6.25,"name":"Neo L3 Relic"},{"chance":6.25,"name":"Axi H6 Relic"},{"chance":6.25,"name":"Axi A16 Relic"},{"chance":6.25,"name":"Axi G10 Relic"},{"chance":6.25,"name":"Axi B6 Relic"},{"chance":6.25,"name":"Axi K11 Relic"},{"chance":6.25,"name":"Axi W3 Relic"},{"chance":6.25,"name":"Axi H7 Relic"},{"chance":6.25,"name":"Aya"},{"chance":6.25,"name":"Aya"}],"SolNode411":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":15.18,"name":"400 Endo","rotation":"B"},{"chance":15.18,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":15.18,"name":"400X Circuits","rotation":"B"},{"chance":15.18,"name":"400X Rubedo","rotation":"B"},{"chance":15.18,"name":"300X Plastids","rotation":"B"},{"chance":25.29,"name":"600 Endo","rotation":"C"},{"chance":25.29,"name":"600 Endo","rotation":"C"},{"chance":4.42,"name":"600 Endo","rotation":"C"},{"chance":25.29,"name":"Neurodes","rotation":"C"},{"chance":4.42,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.42,"name":"2X Gallium","rotation":"C"},{"chance":4.42,"name":"Argon Crystal","rotation":"C"},{"chance":4.42,"name":"Bullet Dance","rotation":"C"},{"chance":1.01,"name":"Nitain Extract","rotation":"C"},{"chance":1.01,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode412":[{"chance":9.09,"name":"Neo F2 Relic","rotation":"A"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"A"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"A"},{"chance":9.09,"name":"Aya","rotation":"A"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Aya","rotation":"B"},{"chance":10.84,"name":"Axi H6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi A16 Relic","rotation":"C"},{"chance":0.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.84,"name":"Axi G10 Relic","rotation":"C"},{"chance":0.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":10.84,"name":"Axi B6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi K11 Relic","rotation":"C"},{"chance":0.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.84,"name":"Axi W3 Relic","rotation":"C"},{"chance":0.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.84,"name":"Axi H7 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H7 Relic","rotation":"C"},{"chance":22.11,"name":"Aya","rotation":"C"}],"SettlementNode3":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode2":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SettlementNode12":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SettlementNode10":[{"chance":16.67,"name":"Tempered Blade","rotation":"A"},{"chance":16.67,"name":"Sudden Impact","rotation":"A"},{"chance":16.67,"name":"Poisonous Sting","rotation":"A"},{"chance":16.67,"name":"Glacial Edge","rotation":"A"},{"chance":16.67,"name":"Conductive Blade","rotation":"A"},{"chance":16.67,"name":"Furor","rotation":"A"},{"chance":3.76,"name":"Extend","rotation":"B"},{"chance":3.76,"name":"Superior Defenses","rotation":"B"},{"chance":3.76,"name":"Cutting Edge","rotation":"B"},{"chance":3.76,"name":"System Reroute","rotation":"B"},{"chance":3.76,"name":"Efficient Transferral","rotation":"B"},{"chance":3.76,"name":"Blazing Steel","rotation":"B"},{"chance":77.44,"name":"150 Endo","rotation":"B"},{"chance":7.52,"name":"Meteor Crash","rotation":"C"},{"chance":7.52,"name":"Nebula Bore","rotation":"C"},{"chance":7.52,"name":"Astral Slash","rotation":"C"},{"chance":9.68,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"Lith G6 Relic","rotation":"C"},{"chance":9.68,"name":"Lith W3 Relic","rotation":"C"},{"chance":9.68,"name":"Lith S15 Relic","rotation":"C"},{"chance":9.68,"name":"Lith S14 Relic","rotation":"C"},{"chance":9.68,"name":"Lith B11 Relic","rotation":"C"},{"chance":9.68,"name":"Lith H9 Relic","rotation":"C"},{"chance":9.68,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode11":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SettlementNode14":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"ClanNode10":[{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":2.58,"name":"Smite Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Expel Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Lith G6 Relic","rotation":"B"},{"chance":10,"name":"Lith W3 Relic","rotation":"B"},{"chance":10,"name":"Lith S15 Relic","rotation":"B"},{"chance":10,"name":"Lith S14 Relic","rotation":"B"},{"chance":10,"name":"Lith B11 Relic","rotation":"B"},{"chance":10,"name":"Lith H9 Relic","rotation":"B"},{"chance":10,"name":"Lith R3 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Quickening","rotation":"C"},{"chance":10,"name":"Lith G6 Relic","rotation":"C"},{"chance":10,"name":"Lith W3 Relic","rotation":"C"},{"chance":10,"name":"Lith S15 Relic","rotation":"C"},{"chance":10,"name":"Lith S14 Relic","rotation":"C"},{"chance":10,"name":"Lith B11 Relic","rotation":"C"},{"chance":10,"name":"Lith H9 Relic","rotation":"C"},{"chance":10,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode20":[{"chance":38.72,"name":"Mag Neuroptics Blueprint"},{"chance":38.72,"name":"Mag Chassis Blueprint"},{"chance":22.56,"name":"Mag Systems Blueprint"}],"ClanNode11":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode707":[{"chance":11.11,"name":"250 Endo","rotation":"A"},{"chance":11.11,"name":"250 Endo","rotation":"A"},{"chance":11.11,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.11,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.11,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.11,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.11,"name":"Lith R3 Relic","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"B"},{"chance":38.72,"name":"250 Endo","rotation":"B"},{"chance":22.56,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":22.56,"name":"Forma Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode710":[{"chance":14.29,"name":"3,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"3,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"200 Endo","rotation":"A"},{"chance":14.29,"name":"200 Endo","rotation":"A"},{"chance":14.29,"name":"1000X Nano Spores","rotation":"A"},{"chance":14.29,"name":"Thief's Wit","rotation":"A"},{"chance":14.29,"name":"3X Mutagen Sample","rotation":"A"},{"chance":15.18,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.18,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.18,"name":"200 Endo","rotation":"B"},{"chance":15.18,"name":"200 Endo","rotation":"B"},{"chance":15.18,"name":"Neurodes","rotation":"B"},{"chance":4.42,"name":"2X Neurodes","rotation":"B"},{"chance":2.01,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":4.42,"name":"Cleanse Infested","rotation":"B"},{"chance":4.42,"name":"Bane Of Infested","rotation":"B"},{"chance":4.42,"name":"Smite Infested","rotation":"B"},{"chance":4.42,"name":"Expel Infested","rotation":"B"},{"chance":19.36,"name":"Argon Crystal","rotation":"C"},{"chance":3.76,"name":"2X Argon Crystal","rotation":"C"},{"chance":19.36,"name":"Orokin Cell","rotation":"C"},{"chance":3.76,"name":"2X Orokin Cell","rotation":"C"},{"chance":19.36,"name":"Neural Sensors","rotation":"C"},{"chance":3.76,"name":"2X Neural Sensors","rotation":"C"},{"chance":19.36,"name":"400 Endo","rotation":"C"},{"chance":3.76,"name":"400 Endo","rotation":"C"},{"chance":3.76,"name":"Enemy Sense","rotation":"C"},{"chance":3.76,"name":"Master Thief","rotation":"C"}],"SolNode711":[{"chance":11.11,"name":"400 Endo","rotation":"A"},{"chance":11.11,"name":"400 Endo","rotation":"A"},{"chance":11.11,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.11,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.11,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.11,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.11,"name":"Lith R3 Relic","rotation":"A"},{"chance":12.5,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":22.56,"name":"Octavia Neuroptics Blueprint","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode712":[{"chance":33.33,"name":"Nekros Chassis Blueprint"},{"chance":33.33,"name":"Nekros Neuroptics Blueprint"},{"chance":33.33,"name":"Nekros Systems Blueprint"}],"SolNode300":[{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"300X Polymer Bundle","rotation":"A"},{"chance":12.91,"name":"350X Rubedo","rotation":"A"},{"chance":12.91,"name":"300X Plastids","rotation":"A"},{"chance":22.56,"name":"Octavia Systems Blueprint","rotation":"A"},{"chance":25.29,"name":"2,500 Credits Cache","rotation":"B"},{"chance":25.29,"name":"3,000 Credits Cache","rotation":"B"},{"chance":25.29,"name":"4,000 Credits Cache","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":10.82,"name":"600 Endo","rotation":"C"},{"chance":10.82,"name":"Orokin Cell","rotation":"C"},{"chance":10.82,"name":"Gallium","rotation":"C"},{"chance":10.82,"name":"Neurodes","rotation":"C"},{"chance":10.82,"name":"2X Gallium","rotation":"C"},{"chance":10.82,"name":"2X Orokin Cell","rotation":"C"},{"chance":10.82,"name":"2X Neurodes","rotation":"C"},{"chance":10.82,"name":"Tellurium","rotation":"C"},{"chance":10.82,"name":"Argon Crystal","rotation":"C"},{"chance":1.29,"name":"Nitain Extract","rotation":"C"},{"chance":1.29,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode306":[{"chance":12.18,"name":"Blood Rush","rotation":"A"},{"chance":12.18,"name":"Hydraulic Crosshairs","rotation":"A"},{"chance":12.18,"name":"Shrapnel Shot","rotation":"A"},{"chance":12.18,"name":"100 Endo","rotation":"A"},{"chance":12.18,"name":"Fast Hands","rotation":"A"},{"chance":12.18,"name":"Point Strike","rotation":"A"},{"chance":12.18,"name":"Piercing Hit","rotation":"A"},{"chance":12.18,"name":"Pistol Gambit","rotation":"A"},{"chance":1.29,"name":"Gnashing Payara","rotation":"A"},{"chance":1.29,"name":"Astral Twilight","rotation":"A"},{"chance":7.49,"name":"Focused Defense","rotation":"B"},{"chance":7.49,"name":"Catalyzer Link","rotation":"B"},{"chance":7.49,"name":"Target Cracker","rotation":"B"},{"chance":7.49,"name":"No Return","rotation":"B"},{"chance":7.49,"name":"Hornet Strike","rotation":"B"},{"chance":7.49,"name":"Reflex Coil","rotation":"B"},{"chance":7.49,"name":"Deep Freeze","rotation":"B"},{"chance":7.49,"name":"North Wind","rotation":"B"},{"chance":7.49,"name":"Cryo Rounds","rotation":"B"},{"chance":7.49,"name":"Hell's Chamber","rotation":"B"},{"chance":7.49,"name":"Streamline","rotation":"B"},{"chance":7.49,"name":"Shocking Touch","rotation":"B"},{"chance":7.49,"name":"Stormbringer","rotation":"B"},{"chance":1.29,"name":"High Noon","rotation":"B"},{"chance":1.29,"name":"Crushing Ruin","rotation":"B"},{"chance":7.37,"name":"Rime Rounds","rotation":"C"},{"chance":7.37,"name":"Scattering Inferno","rotation":"C"},{"chance":37.94,"name":"Failsafe","rotation":"C"},{"chance":37.94,"name":"Coiling Viper","rotation":"C"},{"chance":2.01,"name":"Cleaving Whirlwind","rotation":"C"},{"chance":7.37,"name":"Ivara Chassis Blueprint","rotation":"C"}],"SolNode302":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode304":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode307":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode308":[{"chance":14.29,"name":"Neo F2 Relic","rotation":"A"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"A"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"A"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"A"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"A"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"A"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":12.42,"name":"Axi H6 Relic","rotation":"C"},{"chance":12.42,"name":"Axi A16 Relic","rotation":"C"},{"chance":12.42,"name":"Axi G10 Relic","rotation":"C"},{"chance":8.05,"name":"Lua Lens Blueprint","rotation":"C"},{"chance":5.03,"name":"Universal Medallion","rotation":"C"},{"chance":12.42,"name":"Axi B6 Relic","rotation":"C"},{"chance":12.42,"name":"Axi K11 Relic","rotation":"C"},{"chance":12.42,"name":"Axi W3 Relic","rotation":"C"},{"chance":12.42,"name":"Axi H7 Relic","rotation":"C"}],"SolNode742":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode744":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":4,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":4,"name":"Arrow Mutation","rotation":"C"},{"chance":4,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":4,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":4,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":8,"name":"Axi H6 Relic","rotation":"C"},{"chance":8,"name":"Axi A16 Relic","rotation":"C"},{"chance":8,"name":"Axi G10 Relic","rotation":"C"},{"chance":8,"name":"Axi B6 Relic","rotation":"C"},{"chance":8,"name":"Axi K11 Relic","rotation":"C"},{"chance":8,"name":"Axi W3 Relic","rotation":"C"},{"chance":8,"name":"Axi H7 Relic","rotation":"C"},{"chance":12,"name":"Harrow Neuroptics Blueprint","rotation":"C"},{"chance":12,"name":"Harrow Systems Blueprint","rotation":"C"}],"SolNode745":[{"chance":100,"name":"100X Kuva","rotation":"A"},{"chance":100,"name":"200X Kuva","rotation":"B"},{"chance":95,"name":"350X Kuva","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"}],"SolNode746":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"Orokin Cell","rotation":"C"},{"chance":10.79,"name":"Gallium","rotation":"C"},{"chance":10.79,"name":"Neurodes","rotation":"C"},{"chance":10.79,"name":"Cyclone Kraken","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neural Sensors","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode747":[{"chance":20,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"Harrow Neuroptics Blueprint","rotation":"A"},{"chance":13.33,"name":"Steady Hands","rotation":"A"},{"chance":13.33,"name":"Stabilizer","rotation":"A"},{"chance":13.33,"name":"Power Throw","rotation":"A"},{"chance":13.33,"name":"Stretch","rotation":"A"},{"chance":10,"name":"200 Endo","rotation":"A"},{"chance":10,"name":"Untraceable","rotation":"B"},{"chance":10,"name":"Runtime","rotation":"B"},{"chance":10,"name":"Scorch","rotation":"B"},{"chance":10,"name":"Thermite Rounds","rotation":"B"},{"chance":10,"name":"Frostbite","rotation":"B"},{"chance":10,"name":"Frigid Blast","rotation":"B"},{"chance":10,"name":"Arrow Mutation","rotation":"B"},{"chance":10,"name":"Sniper Ammo Mutation","rotation":"B"},{"chance":10,"name":"Shotgun Ammo Mutation","rotation":"B"},{"chance":10,"name":"Covert Lethality","rotation":"B"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"C"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"C"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"C"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"C"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"C"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"C"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"C"}],"SolNode748":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}]} \ No newline at end of file diff --git a/static/json/scripts/missions-drop-table-get-script.js b/static/json/scripts/missions-drop-table-get-script.js new file mode 100644 index 00000000..c8957fce --- /dev/null +++ b/static/json/scripts/missions-drop-table-get-script.js @@ -0,0 +1,30 @@ +// for https://www.warframe.com/ru/droptables +/* eslint-disable */ +(() => { + const missionNames = {"Mercury/Larunda Relay":"MercuryHUB","Venus/Vesper Relay":"VenusHUB","Earth/Strata Relay":"EarthHUB","Mars/Maroo's Bazaar":"TradeHUB1","Saturn/Kronia Relay":"SaturnHUB","Eris/Kuiper Relay":"ErisHUB","Europa/Leonov Relay":"EuropaHUB","Pluto/Orcus Relay":"PlutoHUB","Venus/Romula":"ClanNode0","Venus/Malva":"ClanNode1","Earth/Coba":"ClanNode2","Earth/Tikal":"ClanNode3","Jupiter/Sinai":"ClanNode4","Jupiter/Cameria":"ClanNode5","Europa/Larzac":"ClanNode6","Europa/Cholistan":"ClanNode7","Mars/Kadesh":"ClanNode8","Mars/Wahiba":"ClanNode9","Phobos/Memphis":"ClanNode10","Phobos/Zeugma":"ClanNode11","Saturn/Caracol":"ClanNode12","Saturn/Piscinas":"ClanNode13","Sedna/Amarna":"ClanNode14","Sedna/Sangeru":"ClanNode15","Uranus/Ur":"ClanNode16","Uranus/Assur":"ClanNode17","Eris/Akkad":"ClanNode18","Eris/Zabala":"ClanNode19","Neptune/Yursa":"ClanNode20","Neptune/Kelashin":"ClanNode21","Ceres/Seimeni":"ClanNode22","Ceres/Gabii":"ClanNode23","Pluto/Sechura":"ClanNode24","Pluto/Hieracon":"ClanNode25","Phobos/Roche":"SettlementNode1","Phobos/Skyresh":"SettlementNode2","Phobos/Stickney":"SettlementNode3","Phobos/Kepler":"SettlementNode10","Phobos/Gulliver":"SettlementNode11","Phobos/Monolith":"SettlementNode12","Phobos/Shklovsky":"SettlementNode14","Phobos/Sharpless":"SettlementNode15","Phobos/Iliad":"SettlementNode20","Neptune/Galatea":"SolNode1","Venus/Aphrodite":"SolNode2","Pluto/Acheron":"SolNode4","Neptune/Despina":"SolNode6","Uranus/Rosalind":"SolNode9","Jupiter/Thebe":"SolNode10","Mars/Tharsis":"SolNode11","Mercury/Elion":"SolNode12","Mars/Ultor":"SolNode14","Earth/Pacific":"SolNode15","Mars/Augustus":"SolNode16","Neptune/Proteus":"SolNode17","Saturn/Rhea":"SolNode18","Saturn/Enceladus":"SolNode19","Saturn/Telesto":"SolNode20","Pluto/Narcissus":"SolNode21","Venus/Tessera":"SolNode22","Venus/Cytherean":"SolNode23","Earth/Oro":"SolNode24","Jupiter/Callisto":"SolNode25","Earth/Lith":"SolNode26","Earth/E Prime":"SolNode27","Mercury/Terminus":"SolNode28","Mars/Olympus":"SolNode30","Saturn/Anthe":"SolNode31","Saturn/Tethys":"SolNode32","Uranus/Ariel":"SolNode33","Uranus/Sycorax":"SolNode34","Mars/Martialis":"SolNode36","Pluto/Minthe":"SolNode38","Earth/Everest":"SolNode39","Mars/Arval":"SolNode41","Saturn/Helene":"SolNode42","Pluto/Cerberus":"SolNode43","Mars/Ara":"SolNode45","Mars/Spear":"SolNode46","Pluto/Regna":"SolNode48","Neptune/Larissa":"SolNode49","Saturn/Numa":"SolNode50","Pluto/Hades":"SolNode51","Jupiter/Themisto":"SolNode53","Pluto/Cypress":"SolNode56","Neptune/Sao":"SolNode57","Mars/Hellas":"SolNode58","Earth/Eurasia":"SolNode59","Uranus/Caliban":"SolNode60","Venus/Ishtar":"SolNode61","Neptune/Neso":"SolNode62","Earth/Mantle":"SolNode63","Uranus/Umbriel":"SolNode64","Mars/Gradivus":"SolNode65","Venus/Unda":"SolNode66","Saturn/Dione":"SolNode67","Mars/Vallis":"SolNode68","Uranus/Ophelia":"SolNode69","Saturn/Cassini":"SolNode70","Pluto/Outer Terminus":"SolNode72","Jupiter/Ananke":"SolNode73","Jupiter/Carme":"SolNode74","Earth/Cervantes":"SolNode75","Pluto/Hydra":"SolNode76","Neptune/Triton":"SolNode78","Earth/Cambria":"SolNode79","Pluto/Palus":"SolNode81","Saturn/Calypso":"SolNode82","Uranus/Cressida":"SolNode83","Neptune/Nereid":"SolNode84","Earth/Gaia":"SolNode85","Jupiter/Ganymede":"SolNode87","Jupiter/Adrastea":"SolNode88","Earth/Mariana":"SolNode89","Saturn/Keeler":"SolNode93","Mercury/Apollodorus":"SolNode94","Saturn/Titan":"SolNode96","Jupiter/Amalthea":"SolNode97","Uranus/Desdemona":"SolNode98","Mars/War":"SolNode99","Jupiter/Elara":"SolNode100","Venus/Kiliken":"SolNode101","Pluto/Oceanum":"SolNode102","Mercury/M Prime":"SolNode103","Venus/Fossa":"SolNode104","Uranus/Titania":"SolNode105","Mars/Alator":"SolNode106","Venus/Venera":"SolNode107","Mercury/Tolstoj":"SolNode108","Venus/Linea":"SolNode109","Mars/Ares":"SolNode113","Uranus/Puck":"SolNode114","Neptune/Laomedeia":"SolNode118","Mercury/Caloris":"SolNode119","Jupiter/Carpo":"SolNode121","Uranus/Stephano":"SolNode122","Venus/V Prime":"SolNode123","Jupiter/Io":"SolNode125","Jupiter/Metis":"SolNode126","Neptune/Psamathe":"SolNode127","Venus/E Gate":"SolNode128","Venus/Orb Vallis":"SolNode129","Mercury/Lares":"SolNode130","Ceres/Pallas":"SolNode131","Ceres/Bode":"SolNode132","Ceres/Thon":"SolNode135","Ceres/Nuovo":"SolNode137","Ceres/Ludi":"SolNode138","Ceres/Lex":"SolNode139","Ceres/Kiste":"SolNode140","Ceres/Ker":"SolNode141","Ceres/Exta":"SolNode144","Ceres/Draco":"SolNode146","Ceres/Cinxia":"SolNode147","Ceres/Casta":"SolNode149","Eris/Brugia":"SolNode153","Eris/Isos":"SolNode162","Eris/Kala-azar":"SolNode164","Eris/Nimus":"SolNode166","Eris/Oestrus":"SolNode167","Eris/Saxis":"SolNode171","Eris/Xini":"SolNode172","Eris/Solium":"SolNode173","Eris/Naeglar":"SolNode175","Sedna/Kappa":"SolNode177","Sedna/Adaro":"SolNode181","Sedna/Vodyanoi":"SolNode183","Sedna/Rusalka":"SolNode184","Sedna/Berehynia":"SolNode185","Sedna/Selkie":"SolNode187","Sedna/Kelpie":"SolNode188","Sedna/Naga":"SolNode189","Sedna/Nakki":"SolNode190","Sedna/Marid":"SolNode191","Sedna/Merrow":"SolNode193","Sedna/Hydron":"SolNode195","Sedna/Charybdis":"SolNode196","Sedna/Yam":"SolNode199","Europa/Abaddon":"SolNode203","Europa/Armaros":"SolNode204","Europa/Baal":"SolNode205","Europa/Morax":"SolNode209","Europa/Naamah":"SolNode210","Europa/Ose":"SolNode211","Europa/Paimon":"SolNode212","Europa/Sorath":"SolNode214","Europa/Valac":"SolNode215","Europa/Valefor":"SolNode216","Europa/Orias":"SolNode217","Europa/Kokabiel":"SolNode220","Mercury/Boethius":"SolNode223","Mercury/Odin":"SolNode224","Mercury/Suisei":"SolNode225","Mercury/Pantheon":"SolNode226","Earth/Plains of Eidolon":"SolNode228","Deimos/Cambion Drift":"SolNode229","Lua/Plato":"SolNode300","Lua/Grimaldi":"SolNode301","Lua/Tycho":"SolNode302","Lua/Copernicus":"SolNode304","Lua/Stöfler":"SolNode305","Lua/Pavlov":"SolNode306","Lua/Zeipel":"SolNode307","Lua/Apollo":"SolNode308","Void/Teshub":"SolNode400","Void/Hepit":"SolNode401","Void/Taranis":"SolNode402","Void/Tiwaz":"SolNode403","Void/Stribog":"SolNode404","Void/Ani":"SolNode405","Void/Ukko":"SolNode406","Void/Oxomoco":"SolNode407","Void/Belenus":"SolNode408","Void/Mot":"SolNode409","Void/Aten":"SolNode410","Void/Marduk":"SolNode411","Void/Mithra":"SolNode412","undefined/Jordas Golem Assassinate":"SolNode701","undefined/Mutalist Alad V Assassinate":"SolNode705","Deimos/Horend":"SolNode706","Deimos/Hyf":"SolNode707","Deimos/Phlegyas":"SolNode708","Deimos/Dirus":"SolNode709","Deimos/Formido":"SolNode710","Deimos/Terrorem":"SolNode711","Deimos/Magnacidium":"SolNode712","Deimos/Exequias":"SolNode713","Jupiter/The Ropalolyst":"SolNode740","Kuva Fortress/Koro":"SolNode741","Kuva Fortress/Nabuk":"SolNode742","Kuva Fortress/Rotuma":"SolNode743","Kuva Fortress/Taveuni":"SolNode744","Kuva Fortress/Tamu":"SolNode745","Kuva Fortress/Dakata":"SolNode746","Kuva Fortress/Pago":"SolNode747","Kuva Fortress/Garus":"SolNode748","Venus/Montes":"SolNode902","Earth/Erpo":"SolNode903","Mars/Syrtis":"SolNode904","Jupiter/Galilea":"SolNode905","Saturn/Pandora":"SolNode906","Uranus/Caelus":"SolNode907"}; + const result = {}; + let lastItem = []; + let lastItemIndex; + let rotation; + Array.from(document.querySelectorAll("table")[0].children[0].children).forEach(element => { + if (element.classList.contains('blank-row')) { + if(lastItemIndex) result[lastItemIndex]=lastItem; + lastItem = []; + lastItemIndex = undefined; + rotation = undefined; + } else if (element.children[0].getAttribute('colspan') == 2) { + if (!lastItemIndex) { + const mission = element.children[0].textContent; + const formatedMission = mission.substring(0, mission.indexOf(' (')) + lastItemIndex = missionNames[formatedMission]; + } else{ + rotation = element.children[0].textContent.replace('Rotation ', ''); + } + } else { + const name = element.children[0].textContent; + const chance = parseFloat(element.children[1].textContent.match(/(\d+\.\d+)/)[0]); + lastItem.push({ chance, name, ...(rotation !== undefined && { rotation }) }); + } + }); + return JSON.stringify(result); +})(); -- 2.47.2 From 67b73383811f94bbe495a2711a6e79d2533225e6 Mon Sep 17 00:00:00 2001 From: Nicat <52883148+holmityd@users.noreply.github.com> Date: Sun, 10 Sep 2023 00:10:21 +0400 Subject: [PATCH 038/522] Mission rewards fix (#54) --- src/controllers/api/artifactsController.ts | 15 ++- .../api/missionInventoryUpdateController.ts | 21 ++--- src/helpers/stringHelpers.ts | 2 +- src/services/inventoryService.ts | 43 +++++---- .../missionInventoryUpdateService .ts | 44 ++++----- src/types/inventoryTypes/SuitTypes.ts | 1 + src/types/inventoryTypes/weaponTypes.ts | 1 + src/types/missionInventoryUpdateType.ts | 94 ------------------- src/types/missionTypes.ts | 17 ++++ src/types/requestTypes.ts | 53 +++++++++++ 10 files changed, 135 insertions(+), 156 deletions(-) delete mode 100644 src/types/missionInventoryUpdateType.ts create mode 100644 src/types/missionTypes.ts create mode 100644 src/types/requestTypes.ts diff --git a/src/controllers/api/artifactsController.ts b/src/controllers/api/artifactsController.ts index 93aa47af..a56c586c 100644 --- a/src/controllers/api/artifactsController.ts +++ b/src/controllers/api/artifactsController.ts @@ -1,19 +1,18 @@ +import { parseString } from "@/src/helpers/general"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { upgradeMod } from "@/src/services/inventoryService"; +import { IArtifactsRequest } from "@/src/types/requestTypes"; import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const artifactsController: RequestHandler = async (req, res) => { - const [data] = String(req.body).split("\n"); - const id = req.query.accountId as string; - - // TODO - salt check + const accountId = parseString(req.query.accountId); try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const parsedData = JSON.parse(data); - + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + const artifactsData = getJSONfromString(req.body.toString()) as IArtifactsRequest; // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - const upgradeModId = await upgradeMod(parsedData, id); + const upgradeModId = await upgradeMod(artifactsData, accountId); res.send(upgradeModId); } catch (err) { console.error("Error parsing JSON data:", err); diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 3d8fcaff..e53ff359 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,7 +1,9 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; import { combineRewardAndLootInventory, getRewards } from "@/src/services/missionInventoryUpdateService "; -import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { parseString } from "@/src/helpers/general"; +import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes"; /* **** INPUT **** - [ ] crossPlaySetting @@ -20,7 +22,7 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" - [ ] CurrentLoadOutIds - [ ] AliveTime - [ ] MissionTime -- [ ] Missions +- [x] Missions - [ ] CompletedAlerts - [ ] LastRegionPlayed - [ ] GameModeId @@ -43,23 +45,20 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" */ // eslint-disable-next-line @typescript-eslint/no-misused-promises -const missionInventoryUpdateController: RequestHandler = async (req, res) => { - const [data] = String(req.body).split("\n"); - const id = req.query.accountId as string; +const missionInventoryUpdateController: RequestHandler = async (req, res): Promise => { + const accountId = parseString(req.query.accountId); try { - const lootInventory = JSON.parse(data) as IMissionInventoryUpdate; - if (typeof lootInventory !== "object" || lootInventory === null) { - throw new Error("Invalid data format"); - } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + const lootInventory = getJSONfromString(req.body.toString()) as IMissionInventoryUpdateRequest; - const { InventoryChanges, MissionRewards } = getRewards(lootInventory.RewardInfo); + const { InventoryChanges, MissionRewards } = getRewards(lootInventory); const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } = combineRewardAndLootInventory(InventoryChanges, lootInventory); // eslint-disable-next-line @typescript-eslint/no-unused-vars - const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, id)); + const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, accountId)); res.json({ // InventoryJson, // this part will reset game data and missions will be locked MissionRewards, diff --git a/src/helpers/stringHelpers.ts b/src/helpers/stringHelpers.ts index 67995382..8cf21e80 100644 --- a/src/helpers/stringHelpers.ts +++ b/src/helpers/stringHelpers.ts @@ -1,4 +1,4 @@ -const getJSONfromString = (str: string): any => { +export const getJSONfromString = (str: string): any => { const jsonSubstring = str.substring(0, str.lastIndexOf("}") + 1); return JSON.parse(jsonSubstring); }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 58b678c6..aecd2293 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2,20 +2,20 @@ import { Inventory } from "@/src/models/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import config from "@/config.json"; import { Types } from "mongoose"; -import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; +import { ISuitDatabase, ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; -import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; +import { IWeaponDatabase, IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; import { IChallengeProgress, IConsumable, - ICrewShipSalvagedWeaponSkin, IFlavourItem, IInventoryDatabaseDocument, IMiscItem, + IMission, IRawUpgrade } from "@/src/types/inventoryTypes/inventoryTypes"; -import { IMissionInventoryUpdate, IMissionInventoryUpdateGear } from "../types/missionInventoryUpdateType"; import { IGenericUpdate } from "../types/genericUpdate"; +import { IArtifactsRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -139,17 +139,17 @@ export const addCustomization = async (customizatonName: string, accountId: stri const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, - gearArray: IMissionInventoryUpdateGear[] | undefined, + gearArray: ISuitDatabase[] | IWeaponDatabase[] | undefined, categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" ) => { const category = inventory[categoryName]; gearArray?.forEach(({ ItemId, XP }) => { - const itemIndex = category.findIndex(item => item._id?.equals(ItemId.$oid)); + const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1; const item = category[itemIndex]; if (itemIndex !== -1 && item.XP != undefined) { - item.XP += XP; + item.XP += XP || 0; inventory.markModified(`${categoryName}.${itemIndex}.XP`); } }); @@ -229,11 +229,24 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChall }); }; +const addMissionComplete = (inventory: IInventoryDatabaseDocument, { Tag, Completes }: IMission) => { + const { Missions } = inventory; + const itemIndex = Missions.findIndex(item => item.Tag === Tag); + + if (itemIndex !== -1) { + Missions[itemIndex].Completes += Completes; + inventory.markModified(`Missions.${itemIndex}.Completes`); + } else { + Missions.push({ Tag, Completes }); + } +}; + const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; type GearKeysType = (typeof gearKeys)[number]; -export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string) => { - const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, FusionPoints, Consumables, Recipes } = data; +export const missionInventoryUpdate = async (data: IMissionInventoryUpdateRequest, accountId: string) => { + const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, FusionPoints, Consumables, Recipes, Missions } = + data; const inventory = await getInventory(accountId); // credits @@ -251,6 +264,7 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, acco addConsumables(inventory, Consumables); addRecipes(inventory, Recipes); addChallenges(inventory, ChallengeProgress); + addMissionComplete(inventory, Missions!); const changedInventory = await inventory.save(); return changedInventory.toJSON(); @@ -275,15 +289,8 @@ export const addBooster = async (ItemType: string, time: number, accountId: stri await inventory.save(); }; -export const upgradeMod = async ( - { - Upgrade, - LevelDiff, - Cost, - FusionPointCost - }: { Upgrade: ICrewShipSalvagedWeaponSkin; LevelDiff: number; Cost: number; FusionPointCost: number }, - accountId: string -): Promise => { +export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: string): Promise => { + const { Upgrade, LevelDiff, Cost, FusionPointCost } = artifactsData; try { const inventory = await getInventory(accountId); const { Upgrades, RawUpgrades } = inventory; diff --git a/src/services/missionInventoryUpdateService .ts b/src/services/missionInventoryUpdateService .ts index a3cbb9b3..cfee223a 100644 --- a/src/services/missionInventoryUpdateService .ts +++ b/src/services/missionInventoryUpdateService .ts @@ -1,29 +1,26 @@ -import { - IMissionInventoryUpdate, - IMissionInventoryUpdateRewardInfo, - IMissionRewardResponse, - IReward, - IInventoryFieldType, - inventoryFields -} from "@/src/types/missionInventoryUpdateType"; +import { IMissionRewardResponse, IReward, IInventoryFieldType, inventoryFields } from "@/src/types/missionTypes"; import missionsDropTable from "@/static/json/missions-drop-table.json"; import { modNames, relicNames, miscNames, resourceNames, gearNames, blueprintNames } from "@/static/data/items"; +import { IMissionInventoryUpdateRequest } from "../types/requestTypes"; // need reverse engineer rewardSeed, otherwise ingame displayed rotation reward will be different than added to db or displayed on mission end -const getRewards = ( - rewardInfo: IMissionInventoryUpdateRewardInfo | undefined -): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { - if (!rewardInfo) { +const getRewards = ({ + RewardInfo +}: IMissionInventoryUpdateRequest): { + InventoryChanges: IMissionInventoryUpdateRequest; + MissionRewards: IMissionRewardResponse[]; +} => { + if (!RewardInfo) { return { InventoryChanges: {}, MissionRewards: [] }; } - const rewards = (missionsDropTable as { [key: string]: IReward[] })[rewardInfo.node]; + const rewards = (missionsDropTable as { [key: string]: IReward[] })[RewardInfo.node]; if (!rewards) { return { InventoryChanges: {}, MissionRewards: [] }; } - const rotationCount = rewardInfo.rewardQualifications?.length || 0; + const rotationCount = RewardInfo.rewardQualifications?.length || 0; const rotations = getRotations(rotationCount); const drops: IReward[] = []; for (const rotation of rotations) { @@ -54,6 +51,7 @@ const getRewards = ( // { chance: 10.82, name: "2X Orokin Cell", rotation: "C" }, // { chance: 10.82, name: "Arrow Mutation", rotation: "C" }, // { chance: 10.82, name: "200 Endo", rotation: "C" }, + // { chance: 10.82, name: "200 Endo", rotation: "C" }, // { chance: 10.82, name: "2,000,000 Credits Cache", rotation: "C" }, // { chance: 7.69, name: "Health Restore (Large)", rotation: "C" }, // { chance: 7.69, name: "Vapor Specter Blueprint", rotation: "C" } @@ -66,8 +64,8 @@ const getRewards = ( }; const combineRewardAndLootInventory = ( - rewardInventory: IMissionInventoryUpdate, - lootInventory: IMissionInventoryUpdate + rewardInventory: IMissionInventoryUpdateRequest, + lootInventory: IMissionInventoryUpdateRequest ) => { const missionCredits = lootInventory.RegularCredits || 0; const creditsBonus = rewardInventory.RegularCredits || 0; @@ -98,12 +96,10 @@ const getRotations = (rotationCount: number): (string | undefined)[] => { if (rotationCount === 0) return [undefined]; const rotationPattern = ["A", "A", "B", "C"]; - let rotationIndex = 0; const rotatedValues = []; - for (let i = 1; i <= rotationCount; i++) { - rotatedValues.push(rotationPattern[rotationIndex]); - rotationIndex = (rotationIndex + 1) % 3; + for (let i = 0; i < rotationCount; i++) { + rotatedValues.push(rotationPattern[i % rotationPattern.length]); } return rotatedValues; @@ -128,8 +124,8 @@ const getRandomRewardByChance = (data: IReward[] | undefined): IReward | undefin const formatRewardsToInventoryType = ( rewards: IReward[] -): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { - const InventoryChanges: IMissionInventoryUpdate = {}; +): { InventoryChanges: IMissionInventoryUpdateRequest; MissionRewards: IMissionRewardResponse[] } => { + const InventoryChanges: IMissionInventoryUpdateRequest = {}; const MissionRewards: IMissionRewardResponse[] = []; for (const reward of rewards) { if (itemCheck(InventoryChanges, MissionRewards, reward.name)) { @@ -152,7 +148,7 @@ const formatRewardsToInventoryType = ( }; const itemCheck = ( - InventoryChanges: IMissionInventoryUpdate, + InventoryChanges: IMissionInventoryUpdateRequest, MissionRewards: IMissionRewardResponse[], name: string ) => { @@ -184,7 +180,7 @@ const getCountFromName = (name: string) => { }; const addRewardResponse = ( - InventoryChanges: IMissionInventoryUpdate, + InventoryChanges: IMissionInventoryUpdateRequest, MissionRewards: IMissionRewardResponse[], ItemName: string, ItemType: string, diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 033b1967..7e1f6825 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -24,6 +24,7 @@ export interface ISuitDatabase { FocusLens?: string; UnlockLevel?: number; _id: Types.ObjectId; + ItemId?: IOid; } export interface SuitConfig { diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 032becba..365c869b 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -22,6 +22,7 @@ export interface IWeaponDatabase { ModularParts?: string[]; UnlockLevel?: number; _id?: Types.ObjectId; + ItemId?: IOid; } export interface WeaponConfig { diff --git a/src/types/missionInventoryUpdateType.ts b/src/types/missionInventoryUpdateType.ts deleted file mode 100644 index 9268810b..00000000 --- a/src/types/missionInventoryUpdateType.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { IOid } from "./commonTypes"; -import { IDate } from "./inventoryTypes/inventoryTypes"; - -export const inventoryFields = ["RawUpgrades", "MiscItems", "Consumables", "Recipes"] as const; -export type IInventoryFieldType = (typeof inventoryFields)[number]; -export interface IMissionInventoryUpdateGear { - ItemType: string; - ItemName: string; - ItemId: IOid; - XP: number; - UpgradeVer: number; - Features: number; - Polarized: number; - CustomizationSlotPurchases: number; - ModSlotPurchases: number; - FocusLens: string; - Expiry: IDate; - Polarity: any[]; - Configs: any[]; - ModularParts: any[]; - SkillTree: string; - UpgradeType: string; - UpgradeFingerprint: string; - OffensiveUpgrade: string; - DefensiveUpgrade: string; - UpgradesExpiry: IDate; - ArchonCrystalUpgrades: any[]; -} - -export interface IMissionInventoryUpdateItem { - ItemCount: number; - ItemType: string; -} - -export interface IMissionInventoryUpdateCard extends IMissionInventoryUpdateItem { - ItemId: IOid; - UpgradeFingerprint: string; - PendingRerollFingerprint: string; - LastAdded: IOid; -} - -export interface IMissionInventoryUpdateChallange { - Name: string; - Progress: number; - Completed: any[]; -} - -export interface IMissionInventoryUpdateRewardInfo { - node: string; - rewardTier?: number; - nightmareMode?: boolean; - useVaultManifest?: boolean; - EnemyCachesFound?: number; - toxinOk?: boolean; - lostTargetWave?: number; - defenseTargetCount?: number; - EOM_AFK?: number; - rewardQualifications?: string; - PurgatoryRewardQualifications?: string; - rewardSeed?: number; -} - -export interface IMissionInventoryUpdate { - rewardsMultiplier?: number; - ActiveBoosters?: any[]; - LongGuns?: IMissionInventoryUpdateGear[]; - Pistols?: IMissionInventoryUpdateGear[]; - Suits?: IMissionInventoryUpdateGear[]; - Melee?: IMissionInventoryUpdateGear[]; - RawUpgrades?: IMissionInventoryUpdateItem[]; - MiscItems?: IMissionInventoryUpdateItem[]; - Consumables?: IMissionInventoryUpdateItem[]; - Recipes?: IMissionInventoryUpdateItem[]; - RegularCredits?: number; - ChallengeProgress?: IMissionInventoryUpdateChallange[]; - RewardInfo?: IMissionInventoryUpdateRewardInfo; - FusionPoints?: number; -} - -export interface IMissionRewardResponse { - StoreItem?: string; - TypeName: string; - UpgradeLevel?: number; - ItemCount: number; - TweetText: string; - ProductCategory: string; -} - -export interface IReward { - name: string; - chance: number; - rotation?: string; -} diff --git a/src/types/missionTypes.ts b/src/types/missionTypes.ts new file mode 100644 index 00000000..193534f8 --- /dev/null +++ b/src/types/missionTypes.ts @@ -0,0 +1,17 @@ +export const inventoryFields = ["RawUpgrades", "MiscItems", "Consumables", "Recipes"] as const; +export type IInventoryFieldType = (typeof inventoryFields)[number]; + +export interface IMissionRewardResponse { + StoreItem?: string; + TypeName: string; + UpgradeLevel?: number; + ItemCount: number; + TweetText: string; + ProductCategory: string; +} + +export interface IReward { + name: string; + chance: number; + rotation?: string; +} diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts new file mode 100644 index 00000000..050955d9 --- /dev/null +++ b/src/types/requestTypes.ts @@ -0,0 +1,53 @@ +import { + IBooster, + IChallengeProgress, + IConsumable, + ICrewShipSalvagedWeaponSkin, + IMiscItem, + IMission, + IRawUpgrade +} from "./inventoryTypes/inventoryTypes"; +import { IWeaponDatabase } from "./inventoryTypes/weaponTypes"; +import { ISuitDatabase } from "./inventoryTypes/SuitTypes"; + +interface IArtifactsRequest { + Upgrade: ICrewShipSalvagedWeaponSkin; + LevelDiff: number; + Cost: number; + FusionPointCost: number; +} + +interface IMissionInventoryUpdateRequest { + rewardsMultiplier?: number; + ActiveBoosters?: IBooster[]; + LongGuns?: IWeaponDatabase[]; + Pistols?: IWeaponDatabase[]; + Suits?: ISuitDatabase[]; + Melee?: IWeaponDatabase[]; + RawUpgrades?: IRawUpgrade[]; + MiscItems?: IMiscItem[]; + Consumables?: IConsumable[]; + Recipes?: IConsumable[]; + RegularCredits?: number; + ChallengeProgress?: IChallengeProgress[]; + RewardInfo?: IMissionInventoryUpdateRequestRewardInfo; + FusionPoints?: number; + Missions?: IMission; +} + +interface IMissionInventoryUpdateRequestRewardInfo { + node: string; + rewardTier?: number; + nightmareMode?: boolean; + useVaultManifest?: boolean; + EnemyCachesFound?: number; + toxinOk?: boolean; + lostTargetWave?: number; + defenseTargetCount?: number; + EOM_AFK?: number; + rewardQualifications?: string; + PurgatoryRewardQualifications?: string; + rewardSeed?: number; +} + +export { IArtifactsRequest, IMissionInventoryUpdateRequest }; -- 2.47.2 From b8e49c40afbb90b76335ea70eaaf4e237b88a44f Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:20:07 +0200 Subject: [PATCH 039/522] Update 33.6.8 + mastery training (#55) --- config.json | 6 +- src/constants/timeConstants.ts | 14 + src/controllers/api/inventoryController.ts | 8 +- .../api/trainingResultController.ts | 44 + .../dynamic/worldStateController.ts | 3 - src/controllers/stats/uploadController.ts | 2 +- src/helpers/inventoryHelpers.ts | 5 +- src/models/inventoryModel.ts | 25 +- src/routes/api.ts | 3 + src/services/inventoryService.ts | 2 +- src/types/commonTypes.ts | 6 + src/types/inventoryTypes/inventoryTypes.ts | 68 +- .../postTutorialInventory.json | 2 + static/fixed_responses/worldState.json | 2612 ++++++++--------- 14 files changed, 1283 insertions(+), 1517 deletions(-) create mode 100644 src/constants/timeConstants.ts create mode 100644 src/controllers/api/trainingResultController.ts diff --git a/config.json b/config.json index e59dd984..937bcecd 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,8 @@ { "autoCreateAccount": true, - "buildLabel": "2023.08.31.08.49/GF1WtVJD8oH48xuIF4Cm-A", - "matchmakingBuildId": "2303555329115379348", - "version": "33.6.7", + "buildLabel": "2023.08.31.08.49/brZhF2aVfaQsmU9STfvSqQ", + "matchmakingBuildId": "5359904157077190191", + "version": "33.6.8", "worldSeed": "Y7nz7/N46OXUuG0UFBiaQhuY59a8IR8fIpwPJu3Uw0y0WGqS1BTISQ3FiQ4RV2Q4L19X7rr9864tDFU2xklR+PvdayCI+/+07iHK2LzxoaSRysylW/3U5rINPDLA4akw5LwsMltL3VuEyxvn9MXKamUO27i+lP5Bsg6Fbmx4UwgqOjQaYMjAqPn0yy+VY6vZsQJFCCLM5wDghhpcwDuTFzakKiq4N5nKPc7+VPNDRKE6qlMzPRt9DCzrtpakn6/WdFecmt9Gzl/HFe1fmZSYE1bEbvL93d1Nvi391YZNLIlRqSg/h+Hirbw8pT7xxbgsXVyJo/TbyivwyQt/ay70Vw==", "skipStoryModeChoice": true, "skipTutorial": true, diff --git a/src/constants/timeConstants.ts b/src/constants/timeConstants.ts new file mode 100644 index 00000000..4a5a374f --- /dev/null +++ b/src/constants/timeConstants.ts @@ -0,0 +1,14 @@ +const millisecondsPerSecond = 1000; +const secondsPerMinute = 60; +const minutesPerHour = 60; +const hoursPerDay = 24; + +const unixMinute = secondsPerMinute * millisecondsPerSecond; +const unixHour = unixMinute * minutesPerHour; +const unixDay = hoursPerDay * unixHour; + +export const unixTimesInMs = { + minute: unixMinute, + hour: unixHour, + day: unixDay +}; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index c3ad296a..078532dc 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -23,12 +23,12 @@ const inventoryController: RequestHandler = async (request: Request, response: R const inventoryJSON = inventory.toJSON(); - const inventoreResponse = toInventoryResponse(inventoryJSON); + const inventoryResponse = toInventoryResponse(inventoryJSON); - if (config.testMission) inventoreResponse.Missions = testMissions; - if (config.testQuestKey) inventoreResponse.QuestKeys = testQuestKeys; + if (config.testMission) inventoryResponse.Missions = testMissions; + if (config.testQuestKey) inventoryResponse.QuestKeys = testQuestKeys; - response.json(inventoreResponse); + response.json(inventoryResponse); }; export { inventoryController }; diff --git a/src/controllers/api/trainingResultController.ts b/src/controllers/api/trainingResultController.ts new file mode 100644 index 00000000..9feffe38 --- /dev/null +++ b/src/controllers/api/trainingResultController.ts @@ -0,0 +1,44 @@ +import { parseString } from "@/src/helpers/general"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { Inventory } from "@/src/models/inventoryModel"; +import { getInventory } from "@/src/services/inventoryService"; +import { IMongoDate } from "@/src/types/commonTypes"; +import { RequestHandler } from "express"; +import { unixTimesInMs } from "@/src/constants/timeConstants"; + +interface ITrainingResultsRequest { + numLevelsGained: number; +} + +interface ITrainingResultsResponse { + NewTrainingDate: IMongoDate; + NewLevel: number; + InventoryChanges: any[]; +} + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const trainingResultController: RequestHandler = async (req, res): Promise => { + const accountId = parseString(req.query.accountId); + + const trainingResults = getJSONfromString(req.body.toString()) as ITrainingResultsRequest; + + const inventory = await getInventory(accountId); + + inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day); + + if (trainingResults.numLevelsGained == 1) { + inventory.PlayerLevel += 1; + } + + const changedinventory = await inventory.save(); + + res.json({ + NewTrainingDate: { + $date: { $numberLong: changedinventory.TrainingDate.getTime().toString() } + }, + NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel, + InventoryChanges: [] + } satisfies ITrainingResultsResponse); +}; + +export { trainingResultController }; diff --git a/src/controllers/dynamic/worldStateController.ts b/src/controllers/dynamic/worldStateController.ts index 474cb442..de87a2bf 100644 --- a/src/controllers/dynamic/worldStateController.ts +++ b/src/controllers/dynamic/worldStateController.ts @@ -3,9 +3,6 @@ import config from "@/config.json"; import worldState from "@/static/fixed_responses/worldState.json"; const worldStateController: RequestHandler = (_req, res) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - worldState.WorldSeed = config.worldSeed; - worldState.BuildLabel = config.buildLabel; res.json(worldState); }; diff --git a/src/controllers/stats/uploadController.ts b/src/controllers/stats/uploadController.ts index 575ebf9f..2763354a 100644 --- a/src/controllers/stats/uploadController.ts +++ b/src/controllers/stats/uploadController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; const uploadController: RequestHandler = (_req, res) => { - res.json({}); + res.status(200).end(); }; export { uploadController }; diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts index 7ecb6f92..45b6ff14 100644 --- a/src/helpers/inventoryHelpers.ts +++ b/src/helpers/inventoryHelpers.ts @@ -1,9 +1,10 @@ import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes"; +// a schema's toJSON is responsible for changing Oid and Date to their corresponding Response versions __id to "ItemId":{"$oid":"6450f720bc562ebf030222d4"}, and a Date to "date":{"$date":{"$numberLong":"unix timestamp"}) const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => { // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { accountOwnerId, ...inventoreResponse } = inventoryDatabase; - return inventoreResponse; + const { accountOwnerId, ...inventoryResponse } = inventoryDatabase; + return inventoryResponse as unknown as IInventoryResponse; }; export { toInventoryResponse }; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index 3e663eb4..5c753b86 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -4,10 +4,13 @@ import { IRawUpgrade, IMiscItem, IInventoryDatabase, - IBooster + IBooster, + IInventoryResponse, + IInventoryDatabaseDocument, + IInventoryResponseDocument } from "../types/inventoryTypes/inventoryTypes"; -import { IOid } from "../types/commonTypes"; -import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { IMongoDate, IOid } from "../types/commonTypes"; +import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; const abilityOverrideSchema = new Schema({ @@ -25,7 +28,7 @@ const colorSchema = new Schema({ m1: Number }); -const longGunConfigSchema = new Schema({ +const weaponConfigSchema = new Schema({ Skins: [String], pricol: colorSchema, attcol: colorSchema, @@ -57,7 +60,7 @@ const longGunConfigSchema = new Schema({ const WeaponSchema = new Schema({ ItemType: String, - Configs: [longGunConfigSchema], + Configs: [weaponConfigSchema], UpgradeVer: Number, XP: Number, Features: Number, @@ -188,7 +191,7 @@ FlavourItemSchema.set("toJSON", { } }); -const inventorySchema = new Schema({ +const inventorySchema = new Schema({ accountOwnerId: Schema.Types.ObjectId, SubscribedToEmails: Number, Created: Schema.Types.Mixed, @@ -235,7 +238,7 @@ const inventorySchema = new Schema({ Recipes: [Schema.Types.Mixed], WeaponSkins: [Schema.Types.Mixed], PendingRecipes: [Schema.Types.Mixed], - TrainingDate: Schema.Types.Mixed, + TrainingDate: Date, PlayerLevel: Number, Upgrades: [Upgrade], EquippedGear: [String], @@ -364,6 +367,14 @@ inventorySchema.set("toJSON", { transform(_document, returnedObject) { delete returnedObject._id; delete returnedObject.__v; + + const trainingDate = (returnedObject as IInventoryDatabaseDocument).TrainingDate; + + (returnedObject as IInventoryResponse).TrainingDate = { + $date: { + $numberLong: trainingDate.getTime().toString() + } + } satisfies IMongoDate; } }); diff --git a/src/routes/api.ts b/src/routes/api.ts index 3308b6d6..de269c34 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -29,6 +29,7 @@ import { updateSessionGetController, updateSessionPostController } from "@/src/c import { viewController } from "@/src/controllers/api/viewController"; import { joinSessionController } from "@/src/controllers/api/joinSessionController"; import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; +import { trainingResultController } from "@/src/controllers/api/trainingResultController"; import { artifactsController } from "../controllers/api/artifactsController"; import express from "express"; @@ -73,4 +74,6 @@ apiRouter.post("/genericUpdate.php", genericUpdateController); apiRouter.post("/rerollRandomMod.php", rerollRandomModController); apiRouter.post("/joinSession.php", joinSessionController); apiRouter.post("/saveLoadout.php", saveLoadoutController); +apiRouter.post("/trainingResult.php", trainingResultController); + export { apiRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index aecd2293..035881bd 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -38,7 +38,7 @@ const createInventory = async (accountOwnerId: Types.ObjectId) => { //const updateInventory = async (accountOwnerId: Types.ObjectId, inventoryChanges: any) => {}; -const getInventory = async (accountOwnerId: string) => { +export const getInventory = async (accountOwnerId: string) => { const inventory = await Inventory.findOne({ accountOwnerId: accountOwnerId }); if (!inventory) { diff --git a/src/types/commonTypes.ts b/src/types/commonTypes.ts index 8b7f30b9..eebd9410 100644 --- a/src/types/commonTypes.ts +++ b/src/types/commonTypes.ts @@ -1,3 +1,9 @@ export interface IOid { $oid: string; } + +export interface IMongoDate { + $date: { + $numberLong: string; + }; +} diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index f1a30e11..760b8659 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,19 +1,21 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; -import { IOid } from "../commonTypes"; +import { IOid, IMongoDate } from "../commonTypes"; import { IAbilityOverride, IColor, FocusSchool, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; -export interface IInventoryDatabase extends IInventoryResponse { +export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} +export interface IInventoryDatabase extends Omit { accountOwnerId: Types.ObjectId; + TrainingDate: Date; } -export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} +export interface IInventoryResponseDocument extends IInventoryResponse, Document {} export interface IInventoryResponse { SubscribedToEmails: number; - Created: Date; + Created: IMongoDate; RewardSeed: number; RegularCredits: number; PremiumCredits: number; @@ -57,7 +59,7 @@ export interface IInventoryResponse { Recipes: IConsumable[]; WeaponSkins: IWeaponSkin[]; PendingRecipes: IPendingRecipe[]; - TrainingDate: Date; + TrainingDate: IMongoDate; PlayerLevel: number; Upgrades: ICrewShipSalvagedWeaponSkin[]; EquippedGear: string[]; @@ -134,7 +136,7 @@ export interface IInventoryResponse { InvasionChainProgress: IInvasionChainProgress[]; DataKnives: IDataKnife[]; NemesisHistory: INemesisHistory[]; - LastNemesisAllySpawnTime: Date; + LastNemesisAllySpawnTime: IMongoDate; Settings: ISettings; PersonalTechProjects: IPersonalTechProject[]; CrewShips: ICrewShip[]; @@ -145,7 +147,7 @@ export interface IInventoryResponse { CrewShipWeapons: ICrewShipWeapon[]; CrewShipSalvagedWeapons: ICrewShipWeapon[]; CrewShipWeaponSkins: ICrewShipSalvagedWeaponSkin[]; - TradeBannedUntil: Date; + TradeBannedUntil: IMongoDate; PlayedParkourTutorial: boolean; SubscribedToEmailsPersonalized: number; MechBin: ICrewMemberBinClass; @@ -153,7 +155,7 @@ export interface IInventoryResponse { DailyAffiliationNecraloid: number; MechSuits: IMechSuit[]; InfestedFoundry: IInfestedFoundry; - BlessingCooldown: Date; + BlessingCooldown: IMongoDate; CrewMemberBin: ICrewMemberBinClass; CrewShipHarnesses: ICrewShipHarness[]; CrewShipRawSalvage: IConsumable[]; @@ -165,7 +167,7 @@ export interface IInventoryResponse { NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; LastInventorySync: IOid; - NextRefill: Date; + NextRefill: IMongoDate; ActiveLandscapeTraps: any[]; EvolutionProgress: any[]; RepVotes: any[]; @@ -206,10 +208,6 @@ export interface IAlignment { Alignment: number; } -export interface IDate { - $date: { $numberLong: string }; -} - export interface IBooster { ExpiryDate: number; ItemType: string; @@ -270,7 +268,7 @@ export interface ICrewMember { ItemType: string; NemesisFingerprint: number; Seed: number; - HireDate: Date; + HireDate: IMongoDate; AssignedRole: number; SkillEfficiency: ISkillEfficiency; WeaponConfigIdx: number; @@ -430,7 +428,7 @@ export interface IDrone { ItemType: string; CurrentHP: number; ItemId: IOid; - RepairStart?: Date; + RepairStart?: IMongoDate; } export interface IEmailItem { @@ -518,7 +516,7 @@ export interface IInvasionChainProgress { export interface IKubrowPetEgg { ItemType: KubrowPetEggItemType; - ExpirationDate: Date; + ExpirationDate: IMongoDate; ItemId: IOid; } @@ -571,7 +569,7 @@ export interface IKubrowPet { Polarized?: number; Polarity?: IPolarity[]; Features?: number; - InfestationDate?: Date; + InfestationDate?: IMongoDate; InfestationDays?: number; InfestationType?: string; ItemId: IOid; @@ -591,7 +589,7 @@ export interface IDetails { HasCollar: boolean; PrintsRemaining: number; Status: Status; - HatchDate: Date; + HatchDate: IMongoDate; DominantTraits: ITraits; RecessiveTraits: ITraits; IsMale: boolean; @@ -734,7 +732,7 @@ export interface IMission { Completes: number; Tier?: number; Tag: string; - RewardsCooldownTime?: Date; + RewardsCooldownTime?: IMongoDate; } export interface IMoaPet { @@ -759,7 +757,7 @@ export interface INemesisHistory { BirthNode: BirthNode; Rank: number; k: boolean; - d: Date; + d: IMongoDate; GuessHistory?: number[]; currentGuess?: number; Traded?: boolean; @@ -808,13 +806,13 @@ export interface IOperatorLoadOut { } export interface IPendingCoupon { - Expiry: Date; + Expiry: IMongoDate; Discount: number; } export interface IPendingRecipe { ItemType: string; - CompletionDate: Date; + CompletionDate: IMongoDate; ItemId: IOid; } @@ -872,8 +870,8 @@ export enum GivingSlotOrderInfo { LotusUpgradesModsPistolDualStatElectEventPistolMod = "/Lotus/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod" } -export interface IPeriodicMissionCompletion { - date: Date; +export interface PeriodicMissionCompletion { + date: IMongoDate; tag: string; count?: number; } @@ -892,7 +890,7 @@ export interface IPersonalTechProject { ReqCredits: number; ItemType: string; ReqItems: IConsumable[]; - CompletionDate?: Date; + CompletionDate?: IMongoDate; ItemId: IOid; ProductCategory?: string; CategoryItemId?: IOid; @@ -919,7 +917,7 @@ export interface IQuestKey { unlock?: boolean; Completed?: boolean; ItemType: string; - CompletionDate?: Date; + CompletionDate?: IMongoDate; } export interface IProgress { @@ -1096,15 +1094,15 @@ export interface IWebFlags { activeBuyPlat: number; noShow2FA: boolean; Tennocon2018Digital: boolean; - VisitPrimeAccess: Date; - VisitTennocon2019: Date; - enteredSC2019: Date; - VisitPrimeVault: Date; - VisitBuyPlatinum: Date; - ClickedSku_640_Page__en_buyplatinum: Date; - ClickedSku_640_Page__buyplatinum: Date; - VisitStarterPack: Date; + VisitPrimeAccess: IMongoDate; + VisitTennocon2019: IMongoDate; + enteredSC2019: IMongoDate; + VisitPrimeVault: IMongoDate; + VisitBuyPlatinum: IMongoDate; + ClickedSku_640_Page__en_buyplatinum: IMongoDate; + ClickedSku_640_Page__buyplatinum: IMongoDate; + VisitStarterPack: IMongoDate; Tennocon2020Digital: boolean; Anniversary2021: boolean; - HitDownloadBtn: Date; + HitDownloadBtn: IMongoDate; } diff --git a/static/fixed_responses/postTutorialInventory.json b/static/fixed_responses/postTutorialInventory.json index 1c2d8721..31d9a61f 100644 --- a/static/fixed_responses/postTutorialInventory.json +++ b/static/fixed_responses/postTutorialInventory.json @@ -96,6 +96,8 @@ "AdultOperatorLoadOuts": [], "KahlLoadOuts": [], "PendingRecipes": [], + "TrainingDate": 0, + "PlayerLevel": 0, "PersonalGoalProgress": [], "PersonalTechProjects": [], "QualifyingInvasions": [], diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index e8ce33a3..159197e4 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "Y7nz7/N46OXUuG0UFBiaQhuY59a8IR8fIpwPJu3Uw0y0WGqS1BTISQ3FiQ4RV2Q4L19X7rr9864tDFU2xklR+PvdayCI+/+07iHK2LzxoaSRysylW/3U5rINPDLA4akw5LwsMltL3VuEyxvn9MXKamUO27i+lP5Bsg6Fbmx4UwgqOjQaYMjAqPn0yy+VY6vZsQJFCCLM5wDghhpcwDuTFzakKiq4N5nKPc7+VPNDRKE6qlMzPRt9DCzrtpakn6/WdFecmt9Gzl/HFe1fmZSYE1bEbvL93d1Nvi391YZNLIlRqSg/h+Hirbw8pT7xxbgsXVyJo/TbyivwyQt/ay70Vw==", + "WorldSeed": "ost83BGeY7RnmuSKKG9IreN6VtKpWeD5ct1nW9EDbkaqz2dWd6Sw5hyKiZxwUmcnRK2H4zHLpzkVx4dNY2Ky+Q0VRJSOmcvf7h8QVcdEIiC1u+kvkdgNCjDGP4Go2afA+OnDwFnwYZQu3GnsWv2yg3cwz6BkWLeaGKk9toXaIc96aQ3hjH7EpGiN7ihCLT1xtBwrm9vE6KyWzP5l27g2U0v3jeerkhiL9vLHLs6WdH0hqo9Y16D0zTvN4/kSVuV4UgZT2MSlsFwBVN6S8/6M8O1Ze+5yIWzUUykOf374XDHA4mMxD+TWuE0VS5bhpmY9VYobaovG/R+VkU/mZ05DFQ==", "Version": 10, "MobileVersion": "4.15.16.0", - "BuildLabel": "2023.08.31.08.49/GF1WtVJD8oH48xuIF4Cm-A", - "Time": 1693582905, + "BuildLabel": "2023.08.31.08.49/brZhF2aVfaQsmU9STfvSqQ", + "Time": 1694276616, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -30,47 +30,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6466726e06ca85f0e202e343" }, - "Messages": [ - { "LanguageCode": "en", "Message": "TennoCon 2023 Digital Pack Now Available" }, - { "LanguageCode": "fr", "Message": "Le Pack Digital TennoCon 2023 est maintenant disponible" }, - { "LanguageCode": "it", "Message": "Il Pacchetto Digitale TennoCon 2023 è Ora Disponibile" }, - { "LanguageCode": "de", "Message": "TennoCon 2023 Digital Paket ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "El Paquete Digital de TennoCon 2023 ya está disponible" }, - { "LanguageCode": "pt", "Message": "O Pacote Digital da TennoCon 2023 já está disponível" }, - { "LanguageCode": "ru", "Message": "Цифровой набор TennoCon-2023 уже доступен" }, - { "LanguageCode": "pl", "Message": "Pakiet Cyfrowy TennoCon 2023 już dostępny" }, - { "LanguageCode": "uk", "Message": "Цифровий набір «Теннокон 2023» уже доступний" }, - { "LanguageCode": "tr", "Message": "TennoCon 2023 Dijital Paketi Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "TennoCon 2023 デジタルパック発売開始" }, - { "LanguageCode": "zh", "Message": "TennoCon 2023 虚拟礼包现已登场" }, - { "LanguageCode": "ko", "Message": "텐노콘 2023 디지털 팩을 지금 만나보세요" }, - { "LanguageCode": "tc", "Message": "TennoCon 2023 數位組合包現已登場" } - ], - "Prop": "", - "Links": [ - { "LanguageCode": "en", "Link": "https://www.warframe.com/tennocon" }, - { "LanguageCode": "fr", "Link": "https://www.warframe.com/fr/tennocon" }, - { "LanguageCode": "it", "Link": "https://www.warframe.com/it/tennocon" }, - { "LanguageCode": "de", "Link": "https://www.warframe.com/de/tennocon" }, - { "LanguageCode": "es", "Link": "https://www.warframe.com/es/tennocon" }, - { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/tennocon" }, - { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/tennocon" }, - { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/tennocon" }, - { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/tennocon" }, - { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/tennocon" }, - { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/tennocon" }, - { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/tennocon" }, - { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/tennocon" }, - { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/tennocon" } - ], - "Date": { "$date": { "$numberLong": "1684432080000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684404000000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/tennocon/2023/digital-pack-banner-2x.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64ea09d36553b9e03803ea9f" }, "Messages": [{ "LanguageCode": "tr", "Message": "TennoCon 2023 Öncesi Twitch Bağlantını Yenilemeyi Unutma!" }], @@ -80,29 +39,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64ea0cced1fbb68cf30a1483" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Pre-order TennoCon 2023 Merch today!" }, - { "LanguageCode": "fr", "Message": "Précommandez les Produits TC 2023 !" }, - { "LanguageCode": "it", "Message": "Preordina il Merch TennoCon 2023 oggi stesso!" }, - { "LanguageCode": "de", "Message": "Bestellt das TennoCon 2023-Merch noch heute vor!" }, - { "LanguageCode": "es", "Message": "¡Reserva los productos de la TennoCon 2023 hoy mismo!" }, - { "LanguageCode": "pt", "Message": "Pré-encomende o Pacote de Produtos da TennoCon 2023 hoje mesmo!" }, - { "LanguageCode": "pl", "Message": "Przedsprzedaż Gadżetów TennoCon 2023!" }, - { "LanguageCode": "tr", "Message": "TennoCon 2023 Ürünleri için hemen ön sipariş ver!" }, - { "LanguageCode": "ja", "Message": "TennoCon 2023グッズを予約しよう!" }, - { "LanguageCode": "zh", "Message": "立即预购 TennoCon 2023 周边商品!" }, - { "LanguageCode": "ko", "Message": "오늘 텐노콘 2023 상품들을 예약 주문하세요!" }, - { "LanguageCode": "tc", "Message": "今天就預購 TennoCon 2023 周邊商品!" } - ], - "Prop": "https://store.warframe.com/collections/tennocon-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-Merch-TennoCon2023Collection", - "Date": { "$date": { "$numberLong": "1693059960000" } }, - "EventStartDate": { "$date": { "$numberLong": "1693058400000" } }, - "ImageUrl": "https://store.warframe.com/cdn/shop/files/Tennocon-2023-Product-Images-MerchPack_720x.png?v=1688652822", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64ea160dc38675eb560a3c5e" }, "Messages": [ @@ -125,6 +61,7 @@ "Date": { "$date": { "$numberLong": "1693061880000" } }, "EventStartDate": { "$date": { "$numberLong": "1693062000000" } }, "EventEndDate": { "$date": { "$numberLong": "1694613600000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/297f28f32dea4fc207e56cd4de8620b5_1600x900.png", "Priority": false, "MobileOnly": false }, @@ -149,13 +86,14 @@ "Prop": "https://www.warframe.com/news/warframe-excalibur-custom-pc-giveaway?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-JMDFGiveawayLaunch", "Date": { "$date": { "$numberLong": "1693063620000" } }, "EventStartDate": { "$date": { "$numberLong": "1693063800000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/043ac33fa52dd80ceea5a390a5b8adb5_1600x900.png", "Priority": false, "MobileOnly": false }, { "_id": { "$oid": "64ea3eea8df44dcb460a8564" }, "Messages": [ - { "LanguageCode": "en", "Message": "Prestigious Heirloom Collections Now Available" }, + { "LanguageCode": "en", "Message": "Heirloom Collections Now Available" }, { "LanguageCode": "fr", "Message": "Collections Héritage disponibles maintenant" }, { "LanguageCode": "it", "Message": "Le Prestigiose Collezioni Heirloom sono Ora Disponibili" }, { "LanguageCode": "de", "Message": "Renommierte Heirloom-Kollektionen sind jetzt verfügbar" }, @@ -172,29 +110,7 @@ ], "Prop": "https://www.warframe.com/heirloom?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-HeirloomPackLaunch", "Date": { "$date": { "$numberLong": "1693072740000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64ea487f4d892bae270da1e1" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Mag Prime and Frost Prime are back!" }, - { "LanguageCode": "fr", "Message": "Mag Prime et Frost Prime sont là !" }, - { "LanguageCode": "it", "Message": "Mag Prime e Frost Prime sono tornati!" }, - { "LanguageCode": "de", "Message": "Mag Prime und Frost Prime sind zurück!" }, - { "LanguageCode": "es", "Message": "¡Mag Prime y Frost Prime están de vuelta!" }, - { "LanguageCode": "pt", "Message": "A Mag Prime e o Frost Prime estão de volta!" }, - { "LanguageCode": "ru", "Message": "Мэг Прайм и Фрост Прайм возвращаются!" }, - { "LanguageCode": "pl", "Message": "Mag Prime i Frost Prime powrócili!" }, - { "LanguageCode": "uk", "Message": "Меґ-прайм і Фрост-прайм повертаються!" }, - { "LanguageCode": "tr", "Message": "Mag Prime ve Frost Prime geri döndü!" }, - { "LanguageCode": "ja", "Message": "Mag PrimeとFrost Primeが復帰!" }, - { "LanguageCode": "zh", "Message": "Mag Prime 和 Frost Prime 现已回归!" }, - { "LanguageCode": "ko", "Message": "매그 프라임과 프로스트 프라임이 돌아왔습니다!" }, - { "LanguageCode": "tc", "Message": "Mag Prime 以及 Frost Prime 現已回歸!" } - ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-TennoConPrimeResurgence", - "Date": { "$date": { "$numberLong": "1693075440000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/e192146c38db2ff066038d0f7c29804e.png", "Priority": false, "MobileOnly": false }, @@ -218,6 +134,7 @@ ], "Prop": "https://www.warframe.com/news/abyss-of-dagath-coming-october-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-AbyssofDagathComingin2023Announce", "Date": { "$date": { "$numberLong": "1693088040000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e4e77102246a1653d661fa72c3f8d4c6_1600x900.png", "Priority": false, "MobileOnly": false }, @@ -248,40 +165,15 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "64ee4238f44c6eb2880e9a5b" }, - "Messages": [{ "LanguageCode": "ja", "Message": "金曜コミュニティDrops! - 日本時間9月2日" }], - "Prop": "https://bit.ly/3QVMQFv", - "Date": { "$date": { "$numberLong": "1693336080000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "64ef93d6d8ca7f26c910082d" }, "Messages": [{ "LanguageCode": "en", "Message": "PSA: Heirloom Collection Platinum Changes & Lessons" }], "Prop": "https://forums.warframe.com/topic/1364919-psa-heirloom-collection-platinum-changes-lessons/", "Date": { "$date": { "$numberLong": "1693422480000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/e192146c38db2ff066038d0f7c29804e.png", "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "64f0a98ef1c991e5fe0c9a82" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Stream du vendredi : 1er sept." }], - "Prop": "https://forums.warframe.com/topic/1365008-stream-communautaire-du-vendredi-1er-septembre/", - "Date": { "$date": { "$numberLong": "1693493580000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64f0b4415d1e1abcf10c5d05" }, - "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.7" }], - "Prop": "https://www.warframe.com/updates/pc/33-6-7", - "Date": { "$date": { "$numberLong": "1693495800000" } }, - "Priority": true, - "MobileOnly": false - }, { "_id": { "$oid": "64f0cc64e65af842c407f41d" }, "Messages": [{ "LanguageCode": "ko", "Message": "텐노콘 2023 요약" }], @@ -299,24 +191,78 @@ "Priority": false, "MobileOnly": false, "Community": true + }, + { + "_id": { "$oid": "64f897aa521743cdf30e4443" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream Schedule: Sept 5 - 8!" }], + "Prop": "https://forums.warframe.com/topic/1365491-community-stream-schedule-september-5-8/?utm_medium=in-game&utm_source=in-game&utm_campaign=20230-09-Community-Streams-06", + "Date": { "$date": { "$numberLong": "1694013300000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64f8bb920628f1f8da07fac6" }, + "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.8" }], + "Prop": "https://www.warframe.com/updates/pc/33-6-8", + "Date": { "$date": { "$numberLong": "1694022480000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64f8ced1b08844952009b9db" }, + "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.8" }], + "Prop": "https://forums.warframe.com/topic/1365508-ecos-de-duviri-revisi%C3%B3n-3368/", + "Date": { "$date": { "$numberLong": "1694023800000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64f9b89b8dbe40231a098ada" }, + "Messages": [{ "LanguageCode": "ja", "Message": "9月5日~9月8日までの「コミュニティー・ストリーム」配信スケジュール" }], + "Prop": "https://bit.ly/3qVeS9D", + "Date": { "$date": { "$numberLong": "1694087220000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_09/WF_PrimeTimeTwitchDropsAsset_Forma.png.e7be0a096b95234698db751292bc6f26.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64fa16f39d4bbea46403b0c1" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Wukong Prime and Equinox Prime are back!" }, + { "LanguageCode": "fr", "Message": "Wukong Prime et Equinox Prime sont de retour" }, + { "LanguageCode": "it", "Message": "Wukong Prime ed Equinox Prime sono tornati!" }, + { "LanguageCode": "de", "Message": "Wukong Prime und Equinox Prime sind zurück!" }, + { "LanguageCode": "es", "Message": "¡Wukong Prime y Equinox Prime están de vuelta!" }, + { "LanguageCode": "pt", "Message": "O Wukong Prime e a Equinox Prime estão de volta!" }, + { "LanguageCode": "ru", "Message": "Вуконг Прайм и Эквинокс Прайм вернулись!" }, + { "LanguageCode": "pl", "Message": "Wukong Prime i Equinox Prime powrócili!" }, + { "LanguageCode": "uk", "Message": "Вукон-прайм і Еквінокс-прайм повертаються!" }, + { "LanguageCode": "tr", "Message": "Wukong Prime ve Equinox Prime geri döndü!" }, + { "LanguageCode": "ja", "Message": "Wukong PrimeとEquinox Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Wukong Prime 和 Equinox Prime 现已回归!" }, + { "LanguageCode": "ko", "Message": "오공 프라임 및 이쿼녹스 프라임이 돌아왔습니다!" }, + { "LanguageCode": "tc", "Message": "Wukong Prime 以及 Equinox Prime 回歸了!" } + ], + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-09-Wukong-and-Equinox-Prime-Resurgence", + "Date": { "$date": { "$numberLong": "1694100600000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/prime-resurgence/rotations/equinox-wukong/masthead-keyart-desktop.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64fb2a500eca98609800c1da" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Récap' des patchs !" }], + "Prop": "https://forums.warframe.com/topic/1365617-r%C3%A9cap-des-patchs-3365-66-67-68/", + "Date": { "$date": { "$numberLong": "1694181900000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/c9d3e3370ed3264c3462dcab3439b5f7.png", + "Priority": false, + "MobileOnly": false } ], "Goals": [ - { - "_id": { "$oid": "64c40eb98d92df18906c172f" }, - "Activation": { "$date": { "$numberLong": "1693062000000" } }, - "Expiry": { "$date": { "$numberLong": "1693666800000" } }, - "Count": 0, - "Goal": 0, - "Success": 0, - "Personal": true, - "Faction": "FC_GRINEER", - "Desc": "/Lotus/Language/Locations/RelayStationTennoCon", - "ToolTip": "/Lotus/Language/Locations/RelayStationTennoConDesc", - "Icon": "/Lotus/Interface/Icons/Sigils/TennoCon2023Sigil.png", - "Tag": "TennoConRelay", - "Node": "TennoConHUB2" - }, { "_id": { "$oid": "64e8cb4d0e968b698e15eb98" }, "Activation": { "$date": { "$numberLong": "1693062000000" } }, @@ -358,252 +304,120 @@ }, "ScoreVar": "Team1Score", "NightLevel": "/Lotus/Levels/GrineerBeach/GrineerBeachEventNight.level" + }, + { + "_id": { "$oid": "64fa32c9c3c4f08d22abf704" }, + "Activation": { "$date": { "$numberLong": "1694195501944" } }, + "Expiry": { "$date": { "$numberLong": "1696009901944" } }, + "HealthPct": 0.8435184, + "VictimNode": "SolNode228", + "Regions": [2], + "Success": 0, + "Desc": "/Lotus/Language/GameModes/RecurringGhoulAlert", + "ToolTip": "/Lotus/Language/GameModes/RecurringGhoulAlertDesc", + "Icon": "/Lotus/Interface/Icons/Categories/IconGhouls256.png", + "Tag": "GhoulEmergence", + "JobAffiliationTag": "CetusSyndicate", + "JobCurrentVersion": { "$oid": "64fc913d0000000000000007" }, + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [300, 300, 300, 440] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [550, 550, 550, 820] + } + ], + "JobPreviousVersion": { "$oid": "64fc6e160000000000000007" }, + "PreviousJobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyHunt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [310, 310, 310, 460] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [500, 500, 500, 740] + } + ] } ], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "64f0b57d96c16ce392b36c97" }, - "Activation": { "$date": { "$numberLong": "1693497600000" } }, - "Expiry": { "$date": { "$numberLong": "1693584000000" } }, + "_id": { "$oid": "64fc92fdd6bf148e76d0e74e" }, + "Activation": { "$date": { "$numberLong": "1694275200000" } }, + "Expiry": { "$date": { "$numberLong": "1694361600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 55647, - "Boss": "SORTIE_BOSS_LEPHANTIS", + "Seed": 28436, + "Boss": "SORTIE_BOSS_KRIL", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_SURVIVAL", "modifierType": "SORTIE_MODIFIER_IMPACT", "node": "SolNode708", "tileset": "OrokinDerelictTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode88", "tileset": "CorpusShipTileset" }, - { "missionType": "MT_HIVE", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode166", "tileset": "InfestedCorpusShipTileset" } + { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_RIFLE_ONLY", "node": "SolNode99", "tileset": "GrineerSettlementTileset" }, + { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_HAZARD_FIRE", "node": "SolNode15", "tileset": "GrineerGalleonTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode122", "tileset": "GrineerOceanTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "64ebdffdeacdda68a5dc8bf4" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, + "_id": { "$oid": "64f51a7dddae2dc9bce35b15" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 73099, - "Boss": "SORTIE_BOSS_NIRA", + "Seed": 57646, + "Boss": "SORTIE_BOSS_BOREAL", "Missions": [ - { "missionType": "MT_EXTERMINATION", "node": "SolNode125" }, - { "missionType": "MT_SURVIVAL", "node": "SolNode73" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } + { "missionType": "MT_SABOTAGE", "node": "SolNode85" }, + { "missionType": "MT_EXCAVATE", "node": "SolNode79" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "64f0b8c58121407d1631c9e8" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "ArbitersSyndicate", - "Seed": 55647, - "Nodes": ["SolNode58", "SolNode23", "SolNode125", "SolNode19", "SolNode118", "SettlementNode14", "SolNode103"] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9e9" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 22320, - "Nodes": ["SolNode130", "SolNode109", "SolNode27", "SolNode709", "SolNode220", "SolNode172", "SettlementNode15"] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9ea" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 38762, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9eb" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "EventSyndicate", - "Seed": 42533, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9ec" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "KahlSyndicate", - "Seed": 16649, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9ed" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 66355, - "Nodes": ["SolNode113", "SolNode22", "SolNode214", "SolNode711", "SolNode135", "SolNode59", "SolNode164"] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9ee" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "QuillsSyndicate", - "Seed": 17520, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9ef" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "PerrinSyndicate", - "Seed": 68049, - "Nodes": ["SolNode39", "SolNode2", "SolNode12", "SolNode139", "SolNode184", "SolNode79", "SettlementNode1"] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f0" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 98225, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f1" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 18715, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f2" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 87943, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f3" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 85233, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f4" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 75089, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f5" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 29427, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f6" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 16454, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f7" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 56233, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f8" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 42900, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9f9" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 33554, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9fa" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 3812, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9fb" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 70031, - "Nodes": ["SolNode106", "SolNode107", "SettlementNode2", "SolNode89", "SolNode707", "SolNode408", "SolNode62"] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9fc" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 68880, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9fd" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "VoxSyndicate", - "Seed": 72959, - "Nodes": [] - }, - { - "_id": { "$oid": "64f0b8c68121407d1631c9fe" }, - "Activation": { "$date": { "$numberLong": "1693497541973" } }, - "Expiry": { "$date": { "$numberLong": "1693583940000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 17755, - "Nodes": ["SolNode15", "SolNode46", "SolNode212", "SolNode140", "SolNode402", "SolNode187", "SolNode101"] - }, - { - "_id": { "$oid": "64f1fe8b0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1693580939873" } }, - "Expiry": { "$date": { "$numberLong": "1693589938747" } }, + "_id": { "$oid": "64fc913d0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1694273853233" } }, + "Expiry": { "$date": { "$numberLong": "1694282852107" } }, "Tag": "EntratiSyndicate", - "Seed": 57403, + "Seed": 18421, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableCRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [11, 11, 11] + "xpAmounts": [8, 8, 8] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", "masteryReq": 5, "minEnemyLevel": 25, @@ -613,15 +427,15 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 29] + "xpAmounts": [16, 16, 16, 24] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, @@ -629,7 +443,7 @@ "xpAmounts": [21, 21, 21, 21, 42] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -637,7 +451,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -646,7 +460,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -655,7 +469,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -666,366 +480,531 @@ ] }, { - "_id": { "$oid": "64f1fe8b0000000000000026" }, - "Activation": { "$date": { "$numberLong": "1693580939873" } }, - "Expiry": { "$date": { "$numberLong": "1693589938747" } }, - "Tag": "ZarimanSyndicate", - "Seed": 57404, - "Nodes": [] - }, - { - "_id": { "$oid": "64f1fe8b0000000000000022" }, - "Activation": { "$date": { "$numberLong": "1693580939873" } }, - "Expiry": { "$date": { "$numberLong": "1693589938747" } }, - "Tag": "SolarisSyndicate", - "Seed": 57403, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [360, 360, 360] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [720, 720, 720] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [580, 580, 580, 860] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [580, 580, 580, 580, 1140] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [700, 700, 700, 700, 1380] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1610] - } - ] - }, - { - "_id": { "$oid": "64f1fe8b0000000000000007" }, - "Activation": { "$date": { "$numberLong": "1693580939873" } }, - "Expiry": { "$date": { "$numberLong": "1693589938747" } }, + "_id": { "$oid": "64fc913d0000000000000007" }, + "Activation": { "$date": { "$numberLong": "1694273853233" } }, + "Expiry": { "$date": { "$numberLong": "1694282852107" } }, "Tag": "CetusSyndicate", - "Seed": 57403, + "Seed": 18421, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [480, 480, 480] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [660, 660, 660] + "xpAmounts": [400, 400, 400] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [610, 610, 610] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [580, 580, 580, 860] + "xpAmounts": [570, 570, 570, 840] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [560, 560, 560, 560, 1090] + "xpAmounts": [550, 550, 550, 550, 1090] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [730, 730, 730, 730, 1430] + "xpAmounts": [690, 690, 690, 690, 1360] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [770, 770, 770, 770, 1500] + "xpAmounts": [780, 780, 780, 780, 1530] } ] + }, + { + "_id": { "$oid": "64fc913d0000000000000022" }, + "Activation": { "$date": { "$numberLong": "1694273853233" } }, + "Expiry": { "$date": { "$numberLong": "1694282852107" } }, + "Tag": "SolarisSyndicate", + "Seed": 18421, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [440, 440, 440] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [680, 680, 680] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [650, 650, 650, 960] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [630, 630, 630, 630, 1230] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobAmbush", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [690, 690, 690, 690, 1350] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [820, 820, 820, 820, 1620] + } + ] + }, + { + "_id": { "$oid": "64fc913d0000000000000026" }, + "Activation": { "$date": { "$numberLong": "1694273853233" } }, + "Expiry": { "$date": { "$numberLong": "1694282852107" } }, + "Tag": "ZarimanSyndicate", + "Seed": 18421, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fae" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "ArbitersSyndicate", + "Seed": 28436, + "Nodes": ["SolNode11", "SolNode12", "SolNode125", "SettlementNode14", "SolNode147", "SolNode214", "SolNode84"] + }, + { + "_id": { "$oid": "64fc96453a97285090e06faf" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 44723, + "Nodes": ["SolNode113", "SolNode103", "SolNode22", "SolNode220", "SolNode38", "SolNode85", "SolNode191"] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb1" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "EventSyndicate", + "Seed": 52178, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb2" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "KahlSyndicate", + "Seed": 29355, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb0" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 24668, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb3" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 46629, + "Nodes": ["SolNode119", "SolNode2", "SolNode89", "SolNode146", "SolNode408", "SolNode72", "SolNode45"] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb4" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "QuillsSyndicate", + "Seed": 77962, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb5" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "PerrinSyndicate", + "Seed": 46677, + "Nodes": ["SolNode26", "SolNode130", "SolNode107", "SolNode58", "SolNode185", "SolNode88", "SettlementNode3"] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb6" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 16282, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fbb" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 25440, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fba" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 81314, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb7" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 57424, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb8" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 22924, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fb9" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 32842, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fbe" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 80503, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fbd" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 43862, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fbc" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 40837, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fbf" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 81933, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fc0" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 86733, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96453a97285090e06fc1" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 29779, + "Nodes": ["SolNode106", "SolNode225", "SolNode132", "SolNode75", "SolNode1", "SolNode402", "SolNode205"] + }, + { + "_id": { "$oid": "64fc96463a97285090e06fc2" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 47687, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96463a97285090e06fc3" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "VoxSyndicate", + "Seed": 56988, + "Nodes": [] + }, + { + "_id": { "$oid": "64fc96463a97285090e06fc4" }, + "Activation": { "$date": { "$numberLong": "1694275141641" } }, + "Expiry": { "$date": { "$numberLong": "1694361540000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 64102, + "Nodes": ["SolNode61", "SolNode27", "SolNode226", "SolNode74", "SolNode62", "SolNode184", "SolNode76"] } ], "ActiveMissions": [ { - "_id": { "$oid": "64f1ee261dc114bcd392ba9b" }, - "Region": 3, - "Seed": 6557, - "Activation": { "$date": { "$numberLong": "1693576742069" } }, - "Expiry": { "$date": { "$numberLong": "1693583604338" } }, - "Node": "SolNode89", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64f1fb09f72174e6178ccd0f" }, - "Region": 12, - "Seed": 36790, - "Activation": { "$date": { "$numberLong": "1693580041416" } }, - "Expiry": { "$date": { "$numberLong": "1693584011295" } }, - "Node": "SolNode195", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "64f1fb09f72174e6178ccd10" }, - "Region": 15, - "Seed": 81760, - "Activation": { "$date": { "$numberLong": "1693580041416" } }, - "Expiry": { "$date": { "$numberLong": "1693586977245" } }, - "Node": "SolNode400", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "64f1fb45ad7c0add5ecd8a7d" }, + "_id": { "$oid": "64fc83c2ad59876fd7fb4287" }, "Region": 19, - "Seed": 17170, - "Activation": { "$date": { "$numberLong": "1693580101597" } }, - "Expiry": { "$date": { "$numberLong": "1693584036244" } }, - "Node": "SolNode747", - "MissionType": "MT_INTEL", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "64f1fb45ad7c0add5ecd8a7e" }, - "Region": 19, - "Seed": 66446, - "Activation": { "$date": { "$numberLong": "1693580101597" } }, - "Expiry": { "$date": { "$numberLong": "1693584818608" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "64f1fb45ad7c0add5ecd8a7f" }, - "Region": 19, - "Seed": 51601, - "Activation": { "$date": { "$numberLong": "1693580101597" } }, - "Expiry": { "$date": { "$numberLong": "1693584717416" } }, + "Seed": 55168, + "Activation": { "$date": { "$numberLong": "1694270402067" } }, + "Expiry": { "$date": { "$numberLong": "1694277315001" } }, "Node": "SolNode743", "MissionType": "MT_MOBILE_DEFENSE", "Modifier": "VoidT5" }, { - "_id": { "$oid": "64f1fb81043a1b2f8b45c128" }, - "Region": 10, - "Seed": 3484, - "Activation": { "$date": { "$numberLong": "1693580161488" } }, - "Expiry": { "$date": { "$numberLong": "1693584590278" } }, - "Node": "SolNode131", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "64f1fb81043a1b2f8b45c129" }, - "Region": 5, - "Seed": 24587, - "Activation": { "$date": { "$numberLong": "1693580161488" } }, - "Expiry": { "$date": { "$numberLong": "1693584109787" } }, - "Node": "SolNode25", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "64f1fb81043a1b2f8b45c12a" }, - "Region": 13, - "Seed": 48981, - "Activation": { "$date": { "$numberLong": "1693580161488" } }, - "Expiry": { "$date": { "$numberLong": "1693587023534" } }, - "Node": "SolNode211", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "64f1fb81043a1b2f8b45c12b" }, - "Region": 15, - "Seed": 8526, - "Activation": { "$date": { "$numberLong": "1693580161488" } }, - "Expiry": { "$date": { "$numberLong": "1693585249728" } }, - "Node": "SolNode402", + "_id": { "$oid": "64fc87818a66076584c04eaa" }, + "Region": 12, + "Seed": 62112, + "Activation": { "$date": { "$numberLong": "1694271361374" } }, + "Expiry": { "$date": { "$numberLong": "1694278357141" } }, + "Node": "SolNode195", "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3", + "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "64f1fc72ed53353aa405d6ca" }, - "Region": 4, - "Seed": 84471, - "Activation": { "$date": { "$numberLong": "1693580402049" } }, - "Expiry": { "$date": { "$numberLong": "1693584563374" } }, - "Node": "SolNode68", + "_id": { "$oid": "64fc87818a66076584c04eab" }, + "Region": 15, + "Seed": 76630, + "Activation": { "$date": { "$numberLong": "1694271361374" } }, + "Expiry": { "$date": { "$numberLong": "1694278058175" } }, + "Node": "SolNode403", "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "64fc8961708bb163aa8c9cb0" }, + "Region": 3, + "Seed": 79560, + "Activation": { "$date": { "$numberLong": "1694271841276" } }, + "Expiry": { "$date": { "$numberLong": "1694278712810" } }, + "Node": "SolNode63", + "MissionType": "MT_CAPTURE", "Modifier": "VoidT1" }, { - "_id": { "$oid": "64f200e5c8ef1e4aaed9c253" }, - "Region": 12, - "Seed": 75335, - "Activation": { "$date": { "$numberLong": "1693581541517" } }, - "Expiry": { "$date": { "$numberLong": "1693588648503" } }, - "Node": "SolNode188", - "MissionType": "MT_INTEL", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "64f200e5c8ef1e4aaed9c254" }, - "Region": 11, - "Seed": 85327, - "Activation": { "$date": { "$numberLong": "1693581541517" } }, - "Expiry": { "$date": { "$numberLong": "1693585862332" } }, - "Node": "SolNode173", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "64f20211dadb77bae62726e6" }, - "Region": 8, - "Seed": 24417, - "Activation": { "$date": { "$numberLong": "1693581841553" } }, - "Expiry": { "$date": { "$numberLong": "1693586236105" } }, - "Node": "SolNode62", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "64f20211dadb77bae62726e7" }, - "Region": 13, - "Seed": 33997, - "Activation": { "$date": { "$numberLong": "1693581841553" } }, - "Expiry": { "$date": { "$numberLong": "1693587945249" } }, - "Node": "SolNode205", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "64f20211dadb77bae62726e8" }, - "Region": 7, - "Seed": 71560, - "Activation": { "$date": { "$numberLong": "1693581841553" } }, - "Expiry": { "$date": { "$numberLong": "1693586277339" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "64f2030118a0d776d84edfbe" }, - "Region": 5, - "Seed": 88806, - "Activation": { "$date": { "$numberLong": "1693582081142" } }, - "Expiry": { "$date": { "$numberLong": "1693586830481" } }, - "Node": "SolNode10", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64f2030118a0d776d84edfbf" }, - "Region": 10, - "Seed": 79456, - "Activation": { "$date": { "$numberLong": "1693582081142" } }, - "Expiry": { "$date": { "$numberLong": "1693589128882" } }, - "Node": "SolNode146", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64f2030118a0d776d84edfc0" }, + "_id": { "$oid": "64fc8bb98d2d4e31e02733d8" }, "Region": 16, - "Seed": 67225, - "Activation": { "$date": { "$numberLong": "1693582081142" } }, - "Expiry": { "$date": { "$numberLong": "1693585833283" } }, - "Node": "SettlementNode11", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2", - "Hard": true + "Seed": 38573, + "Activation": { "$date": { "$numberLong": "1694272441640" } }, + "Expiry": { "$date": { "$numberLong": "1694279488068" } }, + "Node": "SettlementNode12", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT2" }, { - "_id": { "$oid": "64f2051df167e8313a7bde72" }, + "_id": { "$oid": "64fc8bb98d2d4e31e02733d9" }, + "Region": 6, + "Seed": 15607, + "Activation": { "$date": { "$numberLong": "1694272441640" } }, + "Expiry": { "$date": { "$numberLong": "1694279572766" } }, + "Node": "SolNode19", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "64fc8e11ac4ce1a84a5169f4" }, "Region": 19, - "Seed": 17115, - "Activation": { "$date": { "$numberLong": "1693582621887" } }, - "Expiry": { "$date": { "$numberLong": "1693589781128" } }, + "Seed": 62629, + "Activation": { "$date": { "$numberLong": "1694273041541" } }, + "Expiry": { "$date": { "$numberLong": "1694277346075" } }, "Node": "SolNode746", "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "64f2051df167e8313a7bde73" }, + "_id": { "$oid": "64fc8e11ac4ce1a84a5169f5" }, "Region": 19, - "Seed": 83675, - "Activation": { "$date": { "$numberLong": "1693582621887" } }, - "Expiry": { "$date": { "$numberLong": "1693587804737" } }, - "Node": "SolNode741", - "MissionType": "MT_ASSAULT", + "Seed": 92152, + "Activation": { "$date": { "$numberLong": "1694273041541" } }, + "Expiry": { "$date": { "$numberLong": "1694279391027" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", "Modifier": "VoidT5", "Hard": true + }, + { + "_id": { "$oid": "64fc8e11ac4ce1a84a5169f6" }, + "Region": 19, + "Seed": 79777, + "Activation": { "$date": { "$numberLong": "1694273041541" } }, + "Expiry": { "$date": { "$numberLong": "1694280203827" } }, + "Node": "SolNode744", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "64fc8f3d01ec398a439b9591" }, + "Region": 15, + "Seed": 796, + "Activation": { "$date": { "$numberLong": "1694273341885" } }, + "Expiry": { "$date": { "$numberLong": "1694279563471" } }, + "Node": "SolNode405", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64fc8f3d01ec398a439b9592" }, + "Region": 13, + "Seed": 60992, + "Activation": { "$date": { "$numberLong": "1694273341885" } }, + "Expiry": { "$date": { "$numberLong": "1694280236232" } }, + "Node": "SolNode217", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64fc906a087149fdb25db907" }, + "Region": 7, + "Seed": 97749, + "Activation": { "$date": { "$numberLong": "1694273642007" } }, + "Expiry": { "$date": { "$numberLong": "1694277932757" } }, + "Node": "SolNode64", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "64fc906a087149fdb25db908" }, + "Region": 8, + "Seed": 95771, + "Activation": { "$date": { "$numberLong": "1694273642007" } }, + "Expiry": { "$date": { "$numberLong": "1694278750981" } }, + "Node": "SolNode17", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "64fc92853b1b87df542be292" }, + "Region": 9, + "Seed": 32922, + "Activation": { "$date": { "$numberLong": "1694274181315" } }, + "Expiry": { "$date": { "$numberLong": "1694281167303" } }, + "Node": "SolNode48", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "64fc92853b1b87df542be293" }, + "Region": 12, + "Seed": 43324, + "Activation": { "$date": { "$numberLong": "1694274181315" } }, + "Expiry": { "$date": { "$numberLong": "1694280913668" } }, + "Node": "SolNode188", + "MissionType": "MT_INTEL", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "64fc92fdf640de55c1637254" }, + "Region": 16, + "Seed": 8038, + "Activation": { "$date": { "$numberLong": "1694274301652" } }, + "Expiry": { "$date": { "$numberLong": "1694279727043" } }, + "Node": "SettlementNode1", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "64fc946572c747766f98c757" }, + "Region": 3, + "Seed": 90863, + "Activation": { "$date": { "$numberLong": "1694274661443" } }, + "Expiry": { "$date": { "$numberLong": "1694279093677" } }, + "Node": "SolNode59", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64fc946572c747766f98c758" }, + "Region": 4, + "Seed": 91390, + "Activation": { "$date": { "$numberLong": "1694274661443" } }, + "Expiry": { "$date": { "$numberLong": "1694281292974" } }, + "Node": "SolNode41", + "MissionType": "MT_INTEL", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64fc946572c747766f98c759" }, + "Region": 2, + "Seed": 96443, + "Activation": { "$date": { "$numberLong": "1694274661443" } }, + "Expiry": { "$date": { "$numberLong": "1694279650731" } }, + "Node": "SolNode123", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT1", + "Hard": true } ], "GlobalUpgrades": [], @@ -1044,48 +1023,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 430, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 90, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 260, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1100,20 +1037,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 325, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1128,6 +1051,34 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 90, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 430, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, { "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1142,6 +1093,34 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 325, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 260, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, { "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1274,7 +1253,7 @@ "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 20, + "PremiumOverride": 0, "RegularOverride": 1, "StartDate": { "$date": { "$numberLong": "1693062000000" } }, "EndDate": { "$date": { "$numberLong": "1695654000000" } }, @@ -1396,6 +1375,44 @@ "StartDate": { "$date": { "$numberLong": "1693062000000" } }, "EndDate": { "$date": { "$numberLong": "1695654000000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1693591200000" } }, + "EndDate": { "$date": { "$numberLong": "1696097400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1694109600000" } }, + "EndDate": { "$date": { "$numberLong": "1697392800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1694109600000" } }, + "EndDate": { "$date": { "$numberLong": "1697392800000" } } } ], "InGameMarket": { @@ -1408,8 +1425,9 @@ "AddToMenu": true, "Items": [ "/Lotus/Types/StoreItems/Packages/HeirloomPackC", - "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItemNoLogo", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItem", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", "/Lotus/Types/StoreItems/Packages/WarframeBundles/PaxDuviricusItemsBundle", @@ -1422,7 +1440,9 @@ "/Lotus/StoreItems/Powersuits/Runner/Runner", "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", "/Lotus/Types/StoreItems/Packages/FormaPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", + "/Lotus/Types/StoreItems/Packages/HeirloomPackB", + "/Lotus/Types/StoreItems/Packages/HeirloomPackA" ] }, { @@ -1454,7 +1474,6 @@ "/Lotus/Types/StoreItems/Packages/HeirloomPackC", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", - "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", @@ -1468,196 +1487,180 @@ }, "Invasions": [ { - "_id": { "$oid": "64f0a76d9956f6ec157c88f9" }, + "_id": { "$oid": "64f8b972d9f8d6cf2ea85bd5" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode181", - "Count": 17738, - "Goal": 42000, + "Node": "SolNode187", + "Count": -43853, + "Goal": 48000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, "ChainID": { "$oid": "64ea31e9c944b9f79afe8af2" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 375432, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 113245, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1693493544125" } } + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 60360, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeBlade", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 628420, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1694022462449" } } }, { - "_id": { "$oid": "64f0a76d9956f6ec157c88f8" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode181", - "Count": 0, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64ea31e9c944b9f79afe8af2" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 611818, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 734405, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1693494120248" } } - }, - { - "_id": { "$oid": "64efebed168659aa78f59af5" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode74", - "Count": -20777, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64eb616d1f1caf106f5f0879" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 725252, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 788683, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1693445687184" } } - }, - { - "_id": { "$oid": "64f138bd21878eed35d87f57" }, + "_id": { "$oid": "64fb844a946b383d0eb96cd2" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", "Node": "SolNode73", - "Count": -5329, - "Goal": 38000, + "Count": -10807, + "Goal": 45000, "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "64edef55e7f66291676fa2c2" }, + "ChainID": { "$oid": "64f8be23fd051b936b837337" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 812740, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 449614, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 506571, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1693531302770" } } + "DefenderMissionInfo": { "seed": 72972, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1694205723043" } } }, { - "_id": { "$oid": "64f0e0d95da45afafcb32da1" }, + "_id": { "$oid": "64fb844a946b383d0eb96cd3" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode73", + "Count": 0, + "Goal": 34000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64f8be23fd051b936b837337" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 700883, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 124652, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1694205951364" } } + }, + { + "_id": { "$oid": "64fa2bc1415d3572285be782" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode51", - "Count": -16540, + "Count": -30036, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "Completed": true, + "ChainID": { "$oid": "64fa09c68dbc74cc8f0accd9" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 951333, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 449009, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 561059, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1693507801811" } } + "DefenderMissionInfo": { "seed": 451225, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1694116801490" } } }, { - "_id": { "$oid": "64f11212edc4ab1f3e89508a" }, + "_id": { "$oid": "64fbd075137757a46cd1c4b1" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode21", - "Count": -41599, - "Goal": 41000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode36", + "Count": -46296, + "Goal": 46000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 412817, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 824241, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693520402095" } } + "AttackerMissionInfo": { "seed": 547886, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 105144, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1694228471621" } } }, { - "_id": { "$oid": "64f122794bb265063ba0c5f8" }, + "_id": { "$oid": "64fbf5f50eb9ab2a8a53562b" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode76", - "Count": -41651, - "Goal": 41000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode113", + "Count": -46744, + "Goal": 46000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, + "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 638198, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 97719, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693524601399" } } + "AttackerMissionInfo": { "seed": 83903, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 597436, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1694234101266" } } }, { - "_id": { "$oid": "64f122794bb265063ba0c5f9" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode72", - "Count": -39396, - "Goal": 39000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 514921, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 500677, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693524601399" } } - }, - { - "_id": { "$oid": "64f145a13e71536bba4d0226" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode102", - "Count": -36189, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 242146, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 418488, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693533601301" } } - }, - { - "_id": { "$oid": "64f1560a02474f8956f2c0da" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode4", - "Count": -41176, - "Goal": 41000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 184473, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 218, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693537801955" } } - }, - { - "_id": { "$oid": "64f1560a02474f8956f2c0db" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode48", - "Count": -44197, - "Goal": 44000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64f0ae7662e0a3d7ab574c3c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 78172, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 290522, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1693537801955" } } - }, - { - "_id": { "$oid": "64f0e45e8ac08b5f126d6637" }, + "_id": { "$oid": "64fbf5f50eb9ab2a8a53562a" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", "Node": "SolNode99", - "Count": -21114, + "Count": -15715, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "64f0bdb153f5b9ae0b3db5ac" }, + "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 919272, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 369277, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1693508702086" } } + "AttackerMissionInfo": { "seed": 27812, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 891396, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1694234101266" } } + }, + { + "_id": { "$oid": "64fc10e98221fcd4c1a587a7" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode16", + "Count": -35462, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 864981, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 408864, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1694241001201" } } + }, + { + "_id": { "$oid": "64fc227d9e8753e952b14d69" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode65", + "Count": -38276, + "Goal": 38000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 589077, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 221180, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1694245501312" } } + }, + { + "_id": { "$oid": "64fc4929ffa1bce792985e7e" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode4", + "Count": -17814, + "Goal": 32000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64fc4929ffa1bce792985e7e" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 116859, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 122162, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1694261120383" } } + }, + { + "_id": { "$oid": "64fc7cb9d8c0399f53b10164" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode102", + "Count": -646, + "Goal": 43000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64fc4929ffa1bce792985e7e" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 394302, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 623371, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1694268601730" } } } ], "HubEvents": [], @@ -1665,7 +1668,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9630267 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9639694 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1679,14 +1682,6 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } - }, - { - "_id": { "$oid": "64f138bd21878eed35d87f56" }, - "Node": "SolNode25", - "Faction": "FC_GRINEER", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerDefenseForest", - "ExtraEnemySpec": "", - "Expiry": { "$date": { "$numberLong": "1693583614801" } } } ], "VoidTraders": [ @@ -1696,397 +1691,78 @@ "Expiry": { "$date": { "$numberLong": "1694350800000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "MercuryHUB" - }, - { - "_id": { "$oid": "64e8fd66ccc036553100eab0" }, - "Activation": { "$date": { "$numberLong": "1693062000000" } }, - "Expiry": { "$date": { "$numberLong": "1693666800000" } }, - "Id": "64e8fd66ccc036553100eab0", - "Character": "Baro'Ki Teel", - "Node": "TennoConHUB2", + "Node": "MercuryHUB", "Manifest": [ - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropGrineerCutter", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG", "PrimePrice": 650, "RegularPrice": 550000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/HeartOfDeimosAlbumCoverPoster", "PrimePrice": 80, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionMagNovaVaultBBronze", "PrimePrice": 125, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Event/AmbulasEvent/Expert/SecondaryExplosionRadiusModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GunBlade/GrnGunBlade/GrnGunblade", "PrimePrice": 550, "RegularPrice": 325000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionVoltOdonataPrimeBronze", "PrimePrice": 125, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionVoltOdonataPrimeBronze", "PrimePrice": 125, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2023EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/WeGameNewYearFreeTigerSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2022EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Leverian/IvaraLeverianPovisRecordsDecoration", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodDuviriOperator", "PrimePrice": 550, "RegularPrice": 500000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Melee/CrpTonfa/CrpPrismaTonfa", "PrimePrice": 450, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCleaningDroneDuviri", "PrimePrice": 800, "RegularPrice": 650000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/AshLevarianTiara", "PrimePrice": 550, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/BaroEphemeraB", "PrimePrice": 250, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Promo/Warframe/PromoParis", "PrimePrice": 315, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/ThraxSigil", "PrimePrice": 50, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Bow/Longbow/PrismaLenz/PrismaLenzWeapon", "PrimePrice": 575, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Vignettes/Warframes/ArchwingAFItem", "PrimePrice": 100, "RegularPrice": 330000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/LavosAlchemistWallpaper", "PrimePrice": 275, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GrendelOrokinDishSet", "PrimePrice": 110, "RegularPrice": 130000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemB", "PrimePrice": 200, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NezhaEtchingsTablets", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GaussTowerOfAltraDeco", "PrimePrice": 110, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroPlanter", "PrimePrice": 125, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroPedestal", "PrimePrice": 150, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", "PrimePrice": 350, "RegularPrice": 375000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BekranZaftBucketBroom", "PrimePrice": 100, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Warfan/TnMoonWarfan/MoonWarfanWeapon", "PrimePrice": 410, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/MoonWarfanSugatraMeleeDangle", "PrimePrice": 250, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OstronHeadStatue", "PrimePrice": 125, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/DomsFinalDrink", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Wisp/WispAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Pacifist/BaruukImmortalSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ErraBobbleHead", "PrimePrice": 75, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OwlOrdisStatue", "PrimePrice": 350, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TNWVesoBobbleHead", "PrimePrice": 75, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TNWTeshinBobbleHead", "PrimePrice": 75, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/CosmeticEnhancers/Peculiars/EvilSpiritMod", "PrimePrice": 250, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", "PrimePrice": 350, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape3Scarf", "PrimePrice": 500, "RegularPrice": 500000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisTiberon", "PrimePrice": 315, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/LotusFlowers", "PrimePrice": 250, "RegularPrice": 450000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/UmbraPedestal", "PrimePrice": 0, "RegularPrice": 1000000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Dragon/ChromaAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Hoverboard/HoverboardStickerBaroB", "PrimePrice": 75, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisLatronPistol", "PrimePrice": 400, "RegularPrice": 215000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveOnKillBuffSecondary", "PrimePrice": 300, "RegularPrice": 115000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConA", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveSecondaryHeadshotKillMod", "PrimePrice": 300, "RegularPrice": 115000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConD", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConB", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponIncreaseRadialExplosionModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Archwing/Primary/ArchwingHeavyPistols/Prisma/PrismaArchHeavyPistols", "PrimePrice": 525, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/TwinSnakesGlyph", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConF", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConE", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveOnSixKillsBuffSecondary", "PrimePrice": 300, "RegularPrice": 115000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/WeGameNewYearOxSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConG", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GarvLatroxPoster", "PrimePrice": 80, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrnBoomerang/HalikarWraithWeapon", "PrimePrice": 450, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConI", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorC", "PrimePrice": 325, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorL", "PrimePrice": 300, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorA", "PrimePrice": 315, "RegularPrice": 215000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponReloadSpeedModExpert", "PrimePrice": 300, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaMachete", "PrimePrice": 400, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MoaPet/BaroMoaPetSkin", "PrimePrice": 500, "RegularPrice": 325000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/Deimos/PlushySunMonsterCommon", "PrimePrice": 150, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/Deimos/PlushyMoonMonsterCommon", "PrimePrice": 150, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/TnShinaiSword/TnShinaiSwordSkin", "PrimePrice": 375, "RegularPrice": 280000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorL", "PrimePrice": 275, "RegularPrice": 115000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorC", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorA", "PrimePrice": 315, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Weapons/DualSword/DualRibbonKamasSkin", "PrimePrice": 350, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Infestation/NidusAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/ActionFigureDioramas/EmpyreanRegionADiorama", "PrimePrice": 155, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropGrineerFlak", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropGrineerTaktis", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/AshLeverianLiosPistol", "PrimePrice": 400, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Glass/GaraAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponSnipersConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EraHypnosisPoster", "PrimePrice": 100, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/NezhaLeverianCape", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Leverian/NezhaLeverian/NezhaLeverianPolearm", "PrimePrice": 350, "RegularPrice": 325000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BoredTennoPoster", "PrimePrice": 90, "RegularPrice": 120000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusBasilisk", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusWeaver", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusHarpi", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Archwing/GrendelArchwingSkin", "PrimePrice": 400, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/JaviExecutionHood", "PrimePrice": 450, "RegularPrice": 450000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/DualStat/ElectEventMeleeMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/DualStat/FireEventMeleeMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/ClawCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/DualStat/FireEventRifleMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/AxeCmbThreeMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/BowMultiShotOnHitMod", "PrimePrice": 300, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/DualStat/ElectEventShotgunMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/FireEventPistolMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/DualStat/FireEventShotgunMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/WeaponEventPistolImpactDamageMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/PrimedWeaponCritDamageMod", "PrimePrice": 400, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageCorruptedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageCorpusExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Archwing/Rifle/Expert/ArchwingRifleDamageAmountModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponRifleConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPrecepts/PrimedRegen", "PrimePrice": 300, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeRangeIncModExpert", "PrimePrice": 300, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponCritDamageModExpert", "PrimePrice": 280, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponReloadSpeedModExpert", "PrimePrice": 375, "RegularPrice": 120000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeDamageModExpert", "PrimePrice": 385, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponDamageAmountModExpert", "PrimePrice": 300, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponCritChanceModBeginnerExpert", "PrimePrice": 400, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Sentinel/Kubrow/Expert/KubrowPackLeaderExpertMod", "PrimePrice": 300, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Archwing/Expert/ArchwingSuitAbilityStrengthModExpert", "PrimePrice": 350, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponImpactDamageModExpert", "PrimePrice": 350, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponFireDamageModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/Expert/AvatarPowerMaxModExpert", "PrimePrice": 350, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponToxinDamageModExpert", "PrimePrice": 350, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponReloadSpeedModExpert", "PrimePrice": 375, "RegularPrice": 120000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageCorruptedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/WeaponPistolFactionDamageCorpusExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/Expert/AvatarAbilityDurationModExpert", "PrimePrice": 350, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageCorruptedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageCorpusExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponElectricityDamageModExpert", "PrimePrice": 350, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageInfested", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageGrineer", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageCorrupted", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/PrimedWeaponFactionDamageCorpus", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Sentinel/SentinelLootRadarEnemyRadarExpertMod", "PrimePrice": 300, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/GlaiveCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponEventMeleeImpactDamageMod", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventRifleImpactDamageMod", "PrimePrice": 330, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/WeaponEventShotgunImpactDamageMod", "PrimePrice": 365, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/DualStat/ElectEventRifleMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/VTDetron", "PrimePrice": 500, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpFreezeRay/Vandal/CrpFreezeRayVandalRifle", "PrimePrice": 475, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/ClanTech/Chemical/FlameThrowerWraith", "PrimePrice": 550, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/WraithMacheteWeapon", "PrimePrice": 410, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Pistols/CrpHandRL/PrismaAngstrum", "PrimePrice": 475, "RegularPrice": 210000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaDualCleavers", "PrimePrice": 490, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/VoidTraderGorgon/VTGorgon", "PrimePrice": 600, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaGrakata", "PrimePrice": 610, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrineerLeverActionRifle/PrismaGrinlokWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/Melee/KickAndPunch/PrismaObex", "PrimePrice": 500, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaSkana", "PrimePrice": 510, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CorpusUMP/PrismaCorpusUMP", "PrimePrice": 400, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Pistols/GrineerBulbousSMG/Prisma/PrismaTwinGremlinsWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Archwing/Melee/VoidTraderArchsword/VTArchSwordWeapon", "PrimePrice": 550, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/ClanTech/Energy/VandalElectroProd", "PrimePrice": 410, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpShockRifle/QuantaVandal", "PrimePrice": 450, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/Machinegun/SupraVandal", "PrimePrice": 500, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Pistols/WraithSingleViper/WraithSingleViper", "PrimePrice": 400, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrineerSniperRifle/VulkarWraith", "PrimePrice": 450, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/ConclaveLeverPistol/ConclaveLeverPistol", "PrimePrice": 500, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/FireMeleeDangle", "PrimePrice": 100, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroInarosPolearmSkin", "PrimePrice": 325, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/BaroInarosMeleeDangle", "PrimePrice": 250, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/InfestedMeleeDangle", "PrimePrice": 250, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTHalloweenDarkSword", "PrimePrice": 320, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/SummerSolstice/SummerSolsticeGorgon", "PrimePrice": 300, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/SummerSolstice/SummerIgnisSkin", "PrimePrice": 300, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroArrow", "PrimePrice": 375, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/BaroMeleeDangle", "PrimePrice": 250, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroScytheMacheteSkin", "PrimePrice": 375, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisOdonataSkin", "PrimePrice": 350, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisBallasSword", "PrimePrice": 350, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/PrismaArrow", "PrimePrice": 350, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTRedeemerSkin", "PrimePrice": 325, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisSonicor", "PrimePrice": 315, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisTigris", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTQuanta", "PrimePrice": 300, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisOpticor", "PrimePrice": 325, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Halloween/HalloweenDread", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageBaroKiteer", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKavat", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKubrow", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/LisetScarf", "PrimePrice": 600, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorElixis", "PrimePrice": 275, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorElixis", "PrimePrice": 300, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorElixis", "PrimePrice": 325, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerTwitchBItemA", "PrimePrice": 220, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/VTEosArmourBundle", "PrimePrice": 285, "RegularPrice": 260000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosChestArmor", "PrimePrice": 125, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/BaroKavatBadgeItem", "PrimePrice": 50, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/BaroKavatSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesChestArmor", "PrimePrice": 300, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/WraithTurbinesScarf", "PrimePrice": 400, "RegularPrice": 500000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesLegArmor", "PrimePrice": 350, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesArmArmor", "PrimePrice": 350, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Pirate/HydroidAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GrendelTreat", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmour/BaroArmourC", "PrimePrice": 150, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA", "PrimePrice": 150, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/KazBaroCape", "PrimePrice": 325, "RegularPrice": 450000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/BaroEphemeraA", "PrimePrice": 100, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoC", "PrimePrice": 175, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoL", "PrimePrice": 225, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoA", "PrimePrice": 310, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmour/BaroArmourL", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape2Scarf", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/BaroQuantumBadgeItem", "PrimePrice": 400, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmour/BaroArmourA", "PrimePrice": 350, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/SolsticeBaroCape", "PrimePrice": 425, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape", "PrimePrice": 500, "RegularPrice": 500000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroIcon", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosALArmor", "PrimePrice": 50, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLLArmor", "PrimePrice": 65, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegLeftArmor", "PrimePrice": 65, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmLeftArmor", "PrimePrice": 65, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegLeftArmor", "PrimePrice": 100, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmLeftArmor", "PrimePrice": 100, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Magician/LimboImmortalSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Cowgirl/MesaImmortallSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Harlequin/MirageAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/BaroKubrowBadgeItem", "PrimePrice": 50, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/BaroKubrowSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/FurisArmor/PrismaFurisLArmor", "PrimePrice": 225, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/FurisArmor/PrismaFurisCArmor", "PrimePrice": 250, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/FurisArmor/PrismaFurisAArmor", "PrimePrice": 300, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeChestArmor", "PrimePrice": 150, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoChestArmor", "PrimePrice": 225, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTHornSkullScarf", "PrimePrice": 250, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorPrisma", "PrimePrice": 275, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorPrisma", "PrimePrice": 300, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorPrisma", "PrimePrice": 325, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/PrismaLotusEmblem", "PrimePrice": 50, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrismaLotusSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/Halloween2014Wings/PrismaNaberusArmArmor", "PrimePrice": 220, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeTraderSigil", "PrimePrice": 50, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrismaRazorScarf", "PrimePrice": 350, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTDinoSpikeScarf", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageLowPolyKavat", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageLowPolyKubrow", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosARArmor", "PrimePrice": 50, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLRArmor", "PrimePrice": 65, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegRightArmor", "PrimePrice": 65, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmRightArmor", "PrimePrice": 65, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegRightArmor", "PrimePrice": 100, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmRightArmor", "PrimePrice": 100, "RegularPrice": 55000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Tengu/ZephyrAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/KubrowPet/Patterns/KubrowPetPatternPrimeTraderA", "PrimePrice": 150, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Camo/DesertDirigaSkin", "PrimePrice": 225, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/KavatPetMask", "PrimePrice": 500, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/KavatPetTail", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/KavatPetWings", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorVoidTraderA", "PrimePrice": 500, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/KubrowArmorBaro", "PrimePrice": 500, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/BaroPetMask", "PrimePrice": 500, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/BaroPetTail", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/BaroPetWings", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/KavatColorPackNexus", "PrimePrice": 200, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/PrismaJetWings", "PrimePrice": 300, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/PrismaFishTail", "PrimePrice": 200, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/PrismaMechHeadMask", "PrimePrice": 175, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/KubrowArmorPrisma", "PrimePrice": 400, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/GaussSentinelMask", "PrimePrice": 450, "RegularPrice": 400000 }, { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrismaShadePowerSuit", "PrimePrice": 500, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Skins/DesertTaxonSkin", "PrimePrice": 200, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorHalloweenA", "PrimePrice": 400, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem", "PrimePrice": 450, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/Types/StoreItems/Boosters/CreditBooster3DayStoreItem", "PrimePrice": 350, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/Types/StoreItems/Boosters/ModDropChanceBooster3DayStoreItem", "PrimePrice": 500, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/Types/StoreItems/Boosters/ResourceAmount3DayStoreItem", "PrimePrice": 400, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionPBronze", "PrimePrice": 50, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Types/Recipes/Components/CorruptedBombardBallBlueprint", "PrimePrice": 100, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/CorruptedHeavyGunnerBall", "PrimePrice": 100, "RegularPrice": 40000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OrbiterPictureFrameBaro", "PrimePrice": 100, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/AssassinBaitC", "PrimePrice": 200, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PhotoboothTileInarosTomb", "PrimePrice": 325, "RegularPrice": 1750000 }, - { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/BaroFireWorksCrate", "PrimePrice": 50, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PhotoboothTileOrokinExtraction", "PrimePrice": 325, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, - { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/AssassinBait", "PrimePrice": 200, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/AssassinBaitB", "PrimePrice": 200, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationB", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationE", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCleaningDroneBaro", "PrimePrice": 700, "RegularPrice": 500000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerBobbleHead", "PrimePrice": 70, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Hoverboard/HoverboardStickerBaroA", "PrimePrice": 75, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KavatBust", "PrimePrice": 220, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KubrowBust", "PrimePrice": 220, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyDesertSkate", "PrimePrice": 125, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationD", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ExcaliburArchwingBobbleHead", "PrimePrice": 90, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroTiara", "PrimePrice": 525, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponSnipersConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosALArmor", "PrimePrice": 50, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosARArmor", "PrimePrice": 50, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosChestArmor", "PrimePrice": 125, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLLArmor", "PrimePrice": 65, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLRArmor", "PrimePrice": 65, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/PrismaArrow", "PrimePrice": 350, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/ClawCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPrecepts/PrimedRegen", "PrimePrice": 300, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/PrimedWeaponCritDamageMod", "PrimePrice": 400, "RegularPrice": 150000 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/EarpieceBaroC", "PrimePrice": 500, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroMouthPieceA", "PrimePrice": 500, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroVisor", "PrimePrice": 525, "RegularPrice": 375000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroHorn", "PrimePrice": 525, "RegularPrice": 375000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/EarpieceBaroA", "PrimePrice": 500, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/EarpieceBaroB", "PrimePrice": 250, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/BaroWallpaper", "PrimePrice": 250, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/InarosLisetSkin", "PrimePrice": 400, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationA", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetInsectSkinInaros", "PrimePrice": 425, "RegularPrice": 320000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetInsectSkinPrimeTrader", "PrimePrice": 230, "RegularPrice": 375000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ParazonPoster", "PrimePrice": 100, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KubrowKavatLowPolyPoster", "PrimePrice": 90, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinVoidTrader", "PrimePrice": 120, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetBlueSkySkinPrimeTrader", "PrimePrice": 210, "RegularPrice": 450000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationF", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetBlueSkySkinInaros", "PrimePrice": 375, "RegularPrice": 340000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationG", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropOstRugBaro", "PrimePrice": 225, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrismaRazorScarf", "PrimePrice": 350, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Pistols/GrineerBulbousSMG/Prisma/PrismaTwinGremlinsWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Camo/DesertDirigaSkin", "PrimePrice": 225, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG", "PrimePrice": 650, "RegularPrice": 550000 }, { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationH", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader", "PrimePrice": 220, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationC", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/PedistalPrime", "PrimePrice": 0, "RegularPrice": 1000000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/Emotes/BaroEmote", "PrimePrice": 0, "RegularPrice": 1000000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/EventSniperReloadDamageMod", "PrimePrice": 2995, "RegularPrice": 1000000 } + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/WeGameNewYearOxSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BoredTennoPoster", "PrimePrice": 90, "RegularPrice": 120000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemB", "PrimePrice": 200, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Leverian/NezhaLeverian/NezhaLeverianPolearm", "PrimePrice": 350, "RegularPrice": 325000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2022EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusBasilisk", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/LavosAlchemistWallpaper", "PrimePrice": 275, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 }, + { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 } ] } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1691085600000" } }, + "Activation": { "$date": { "$numberLong": "1694109600000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack", "PrimePrice": 10 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostMagPrimeDualPack", "PrimePrice": 10, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRhinoNyxPrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNyxPrimeSinglePack", "PrimePrice": 6 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVWukongPrimeSinglePack", "PrimePrice": 6 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMagPrimeSinglePack", "PrimePrice": 6, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Rhino/RhinoPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVDistillingExtractorPrimeSet", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/NoruPrimeScarf", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Gauntlet/PrimeAnkyros/PrimeAnkyros", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBoltor/PrimeBoltor", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Jade/NyxPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTargisPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ValaPrimeMeleeDangle", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Axe/PrimeScindo/PrimeScindoWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/ThrowingWeapons/PrimeThrowingStar/PrimeHikou", "PrimePrice": 2 }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostPrimeSinglePack", + "PrimePrice": 6, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { "ItemType": "/Lotus/StoreItems/Powersuits/MonkeyKing/WukongPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeWukongSyandana", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVWukongPrimeKubrowArmor", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/EphemeraPrimeA", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeZhuge/PrimeZhugeCrossbow", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeNinkondi/PrimeNikondi", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/YinYang/EquinoxPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeCapeEquinox", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNarvarrPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeStradavar/PrimeStradavarGun", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Staff/TipedoPrime/TipedoPrimeWeapon", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Powersuits/Frost/FrostPrime", "PrimePrice": 3, @@ -2106,13 +1782,13 @@ "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Scythe/ReaperWeapon", + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/LatronPrime", "PrimePrice": 2, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/LatronPrime", + "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Scythe/ReaperWeapon", "PrimePrice": 2, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } @@ -2123,6 +1799,18 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTargisPrimeArmorSet", + "PrimePrice": 2, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVDistillingExtractorPrimeSet", + "PrimePrice": 1, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Shotgun/PrimeBoar", "PrimePrice": 2, @@ -2135,8 +1823,6 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/RhinoPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NyxPrimeBobbleHead", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/FrostPrimeBobbleHead", "PrimePrice": 1, @@ -2149,18 +1835,24 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionRhinoNyxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EquinoxPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EquinoxPrimeNightBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EquinoxPrimeDayBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/WukongPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionWukongEquinoxVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionWukongEquinoxVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultBBronze", + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultABronze", "RegularPrice": 1, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultABronze", + "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultBBronze", "RegularPrice": 1, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } @@ -2184,7 +1876,7 @@ "EndDate": { "$date": { "$numberLong": "1704081540000" } } } ], - "Expiry": { "$date": { "$numberLong": "1694109600000" } }, + "Expiry": { "$date": { "$numberLong": "1696528800000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -2263,88 +1955,88 @@ ], "VoidStorms": [ { - "_id": { "$oid": "64f1e9b1d77b0e08d0b54703" }, - "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1693578001825" } }, - "Expiry": { "$date": { "$numberLong": "1693583401825" } }, + "_id": { "$oid": "64fc83c2f60a6ba8ef8254cd" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1694272801821" } }, + "Expiry": { "$date": { "$numberLong": "1694278201821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64f1e9b1d77b0e08d0b54702" }, - "Node": "CrewBattleNode522", - "Activation": { "$date": { "$numberLong": "1693578001821" } }, - "Expiry": { "$date": { "$numberLong": "1693583401821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64f1e9b1d77b0e08d0b54704" }, - "Node": "CrewBattleNode501", - "Activation": { "$date": { "$numberLong": "1693578001827" } }, - "Expiry": { "$date": { "$numberLong": "1693583401827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64f1e9b1d77b0e08d0b54707" }, - "Node": "CrewBattleNode550", - "Activation": { "$date": { "$numberLong": "1693578001834" } }, - "Expiry": { "$date": { "$numberLong": "1693583401834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64f1e9b1d77b0e08d0b54705" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1693578001829" } }, - "Expiry": { "$date": { "$numberLong": "1693583401829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "64f1e9b1d77b0e08d0b54706" }, - "Node": "CrewBattleNode531", - "Activation": { "$date": { "$numberLong": "1693578001832" } }, - "Expiry": { "$date": { "$numberLong": "1693583401832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0a" }, - "Node": "CrewBattleNode518", - "Activation": { "$date": { "$numberLong": "1693581601821" } }, - "Expiry": { "$date": { "$numberLong": "1693587001821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0b" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1693581601825" } }, - "Expiry": { "$date": { "$numberLong": "1693587001825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0c" }, - "Node": "CrewBattleNode534", - "Activation": { "$date": { "$numberLong": "1693581601827" } }, - "Expiry": { "$date": { "$numberLong": "1693587001827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0e" }, - "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1693581601832" } }, - "Expiry": { "$date": { "$numberLong": "1693587001832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0d" }, + "_id": { "$oid": "64fc83c2f60a6ba8ef8254d0" }, "Node": "CrewBattleNode525", - "Activation": { "$date": { "$numberLong": "1693581601829" } }, - "Expiry": { "$date": { "$numberLong": "1693587001829" } }, + "Activation": { "$date": { "$numberLong": "1694272801829" } }, + "Expiry": { "$date": { "$numberLong": "1694278201829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "64f1f7c1b260a61fd5ec1b0f" }, - "Node": "CrewBattleNode554", - "Activation": { "$date": { "$numberLong": "1693581601834" } }, - "Expiry": { "$date": { "$numberLong": "1693587001834" } }, + "_id": { "$oid": "64fc83c2f60a6ba8ef8254d2" }, + "Node": "CrewBattleNode542", + "Activation": { "$date": { "$numberLong": "1694272801834" } }, + "Expiry": { "$date": { "$numberLong": "1694278201834" } }, "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64fc83c2f60a6ba8ef8254cf" }, + "Node": "CrewBattleNode535", + "Activation": { "$date": { "$numberLong": "1694272801827" } }, + "Expiry": { "$date": { "$numberLong": "1694278201827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "64fc83c2f60a6ba8ef8254ce" }, + "Node": "CrewBattleNode515", + "Activation": { "$date": { "$numberLong": "1694272801825" } }, + "Expiry": { "$date": { "$numberLong": "1694278201825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64fc83c2f60a6ba8ef8254d1" }, + "Node": "CrewBattleNode536", + "Activation": { "$date": { "$numberLong": "1694272801832" } }, + "Expiry": { "$date": { "$numberLong": "1694278201832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64fc8d210ca36d1ffaeef64b" }, + "Node": "CrewBattleNode518", + "Activation": { "$date": { "$numberLong": "1694276401821" } }, + "Expiry": { "$date": { "$numberLong": "1694281801821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64fc8d210ca36d1ffaeef64d" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1694276401827" } }, + "Expiry": { "$date": { "$numberLong": "1694281801827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "64fc8d210ca36d1ffaeef64c" }, + "Node": "CrewBattleNode511", + "Activation": { "$date": { "$numberLong": "1694276401825" } }, + "Expiry": { "$date": { "$numberLong": "1694281801825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64fc8d210ca36d1ffaeef64f" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1694276401832" } }, + "Expiry": { "$date": { "$numberLong": "1694281801832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64fc8d210ca36d1ffaeef650" }, + "Node": "CrewBattleNode538", + "Activation": { "$date": { "$numberLong": "1694276401834" } }, + "Expiry": { "$date": { "$numberLong": "1694281801834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64fc8d210ca36d1ffaeef64e" }, + "Node": "CrewBattleNode524", + "Activation": { "$date": { "$numberLong": "1694276401829" } }, + "Expiry": { "$date": { "$numberLong": "1694281801829" } }, + "ActiveMissionTier": "VoidT3" } ], "PrimeAccessAvailability": { "State": "PRIME2" }, @@ -2352,67 +2044,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Powersuits/Trapper/Trapper", - "Activation": { "$date": { "$numberLong": "1693530000000" } }, - "Expiry": { "$date": { "$numberLong": "1693623600000" } }, - "Discount": 40, - "OriginalPrice": 300, - "SalePrice": 180, - "AmountTotal": 150, - "AmountSold": 71 + "StoreItem": "/Lotus/StoreItems/Types/Items/Research/EnergyComponent", + "Activation": { "$date": { "$numberLong": "1694185200000" } }, + "Expiry": { "$date": { "$numberLong": "1694278800000" } }, + "Discount": 10, + "OriginalPrice": 10, + "SalePrice": 9, + "AmountTotal": 200, + "AmountSold": 200 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "64e8fdb6a358514ec20d6d1f" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1692990902098" } }, - "endDate": { "$date": { "$numberLong": "1693595702098" } }, - "params": [{ "n": "ScriptParamValue", "v": 20 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "64e8fdb6a358514ec20d6d1e" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1692990902098" } }, - "endDate": { "$date": { "$numberLong": "1693595702098" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "64e8fdb6a358514ec20d6d20" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1692990902098" } }, - "endDate": { "$date": { "$numberLong": "1693595702098" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "64e8fdb6a358514ec20d6d21" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1692990902098" } }, - "endDate": { "$date": { "$numberLong": "1693595702098" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], - "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "64e8fdb6a358514ec20d6d1e" }, { "$oid": "64e8fdb6a358514ec20d6d1f" }, { "$oid": "64e8fdb6a358514ec20d6d20" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" - }, - { - "_id": { "$oid": "64f0d64d834ccd93e3703594" }, + "_id": { "$oid": "64fb6955db75be25441e921e" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2420,32 +2068,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64f0d64d834ccd93e3703596" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64f0d64d834ccd93e3703598" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsEASY", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64f0d64d834ccd93e3703595" }, + "_id": { "$oid": "64fb6955db75be25441e921f" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2453,10 +2079,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64f0d64d834ccd93e3703597" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryHARD", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "_id": { "$oid": "64fb6955db75be25441e9222" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryEASY", + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64fb6955db75be25441e9220" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDomination_MEDIUM", + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2464,10 +2101,43 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64f0d64d834ccd93e3703599" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "_id": { "$oid": "64fb6955db75be25441e9225" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksMEDIUM", + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64fb6955db75be25441e9224" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesEASY", + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64fb6955db75be25441e9221" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeHARD", + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64fb6955db75be25441e9223" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationHARD", + "startDate": { "$date": { "$numberLong": "1694198101608" } }, + "endDate": { "$date": { "$numberLong": "1694284501608" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", @@ -2475,49 +2145,69 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "64f0d64d834ccd93e370359b" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsEASY", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], + "_id": { "$oid": "64fb750de88ba58e0e0435cd" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1694201101760" } }, + "endDate": { "$date": { "$numberLong": "1694805901760" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "64fb750de88ba58e0e0435ca" }, { "$oid": "64fb750de88ba58e0e0435cb" }, { "$oid": "64fb750de88ba58e0e0435cc" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "64f0d64d834ccd93e370359a" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD", - "startDate": { "$date": { "$numberLong": "1693505101823" } }, - "endDate": { "$date": { "$numberLong": "1693591501823" } }, + "_id": { "$oid": "64fb750de88ba58e0e0435cb" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", + "startDate": { "$date": { "$numberLong": "1694201101760" } }, + "endDate": { "$date": { "$numberLong": "1694805901760" } }, + "params": [{ "n": "ScriptParamValue", "v": 20 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "64fb750de88ba58e0e0435ca" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", + "startDate": { "$date": { "$numberLong": "1694201101760" } }, + "endDate": { "$date": { "$numberLong": "1694805901760" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", + "PVPMode": "PVPMODE_ALL", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "64fb750de88ba58e0e0435cc" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1694201101760" } }, + "endDate": { "$date": { "$numberLong": "1694805901760" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [37.17026556218807, 85.81030372418421, 0], + "ProjectPct": [44.900011952136666, 97.84921778251658, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Mesa", "Chroma", "Atlas"] }, - { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } + { "Category": "EXC_NORMAL", "Choices": ["Ivara", "Inaros", "Titania"] }, + { "Category": "EXC_HARD", "Choices": ["Zylok", "Sibear", "Dread", "Despair", "Hate"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "60c11e85ef0ebd4df85e969b" }, "Name": "Order of Silver Rose", "Tier": 1, "Emblem": true, "AllianceId": { "$oid": "616b8f489469776f487866fd" } }, - { "_id": { "$oid": "57bd5ec906c56f84436a999c" }, "Name": "Survival School", "Tier": 2, "Emblem": true, "AllianceId": { "$oid": "628184e496531170b94f5bc2" } }, - { "_id": { "$oid": "52f63e4806c56f92427b25b2" }, "Name": "Les Black Moon", "Tier": 3, "AllianceId": { "$oid": "5a8068c7be87e42aa27a4c4d" }, "Emblem": true }, - { "_id": { "$oid": "5bb2512c3f8d4aac7532cc79" }, "Name": "Fortress of Lua", "Tier": 4, "AllianceId": { "$oid": "5ec428291fbe6e2e877c8bf8" }, "Emblem": true }, + { "_id": { "$oid": "535d438906c56f428386bfcd" }, "Name": "Elusive Dawn", "Tier": 1, "Emblem": true, "AllianceId": { "$oid": "5b81e30157904a79f92c09fa" } }, + { "_id": { "$oid": "62fad054e80609cf020f1b19" }, "Name": "Qian.Kun", "Tier": 2, "Emblem": true }, + { "_id": { "$oid": "54e44a5006c56f7eab0d5aa9" }, "Name": "Violet Church", "Tier": 3, "AllianceId": { "$oid": "56c44d0b08c56f5c367b4665" }, "Emblem": true }, + { "_id": { "$oid": "5d2467533f8d4a43ec30ae0d" }, "Name": "Castle Dimitrescu", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "62effbff16d15f746c04fe87" } }, { "_id": { "$oid": "63b6cea9135de2e01403b579" }, "Name": "Dreadnova Galleon", "Tier": 5, "Emblem": true }, - { "_id": { "$oid": "60871578cc2e694df27157a8" }, "Name": "Twelve_Olympians", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "64857275eb6c266f67034392" } }, - { "_id": { "$oid": "5e48bbd784bcf427932d700d" }, "Name": "Animation Tour", "Tier": 2, "AllianceId": { "$oid": "5ca758f43f8d4a0a2b40d7d4" }, "Emblem": true }, - { "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, "Name": "Miau after Tomorrow", "Tier": 2, "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, "Emblem": true } + { "_id": { "$oid": "559bb99d06c56f888a4b2f44" }, "Name": "--UMBRA--Lua Lycans", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "6365589e89dc6b94480fbb06" } } ], "SeasonInfo": { "Activation": { "$date": { "$numberLong": "1684951200000" } }, @@ -2528,69 +2218,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100150000000000000206" }, + "_id": { "$oid": "001100160000000000000221" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1693353600000" } }, - "Expiry": { "$date": { "$numberLong": "1693612800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithBlast" + "Activation": { "$date": { "$numberLong": "1694044800000" } }, + "Expiry": { "$date": { "$numberLong": "1694304000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyLiquidation" }, { - "_id": { "$oid": "001100150000000000000207" }, + "_id": { "$oid": "001100160000000000000222" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1693440000000" } }, - "Expiry": { "$date": { "$numberLong": "1693699200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCollectCredits" + "Activation": { "$date": { "$numberLong": "1694131200000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithCorrosive" }, { - "_id": { "$oid": "001100150000000000000208" }, + "_id": { "$oid": "001100160000000000000223" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1693526400000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyAugmentation" + "Activation": { "$date": { "$numberLong": "1694217600000" } }, + "Expiry": { "$date": { "$numberLong": "1694476800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemies" }, { - "_id": { "$oid": "001100150000000000000197" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteMobileDefense" + "_id": { "$oid": "001100160000000000000211" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklySabotageCaches" }, { - "_id": { "$oid": "001100150000000000000198" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteCapture" + "_id": { "$oid": "001100160000000000000212" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPickUpRareMods" }, { - "_id": { "$oid": "001100150000000000000199" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSortie" + "_id": { "$oid": "001100160000000000000213" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyZarimanBountyHunter" }, { - "_id": { "$oid": "001100150000000000000200" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyMadLab" + "_id": { "$oid": "001100160000000000000214" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSabotage" }, { - "_id": { "$oid": "001100150000000000000201" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSyndicateMissions" + "_id": { "$oid": "001100160000000000000215" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteVenusRace" }, { - "_id": { "$oid": "001100150000000000000202" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardLuaPuzzles" + "_id": { "$oid": "001100160000000000000216" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteSanctuaryOnslaught" }, { - "_id": { "$oid": "001100150000000000000203" }, - "Activation": { "$date": { "$numberLong": "1693180800000" } }, - "Expiry": { "$date": { "$numberLong": "1693785600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardIndexWinStreak" + "_id": { "$oid": "001100160000000000000217" }, + "Activation": { "$date": { "$numberLong": "1693785600000" } }, + "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCollectUniqueResources" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":555}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":550}" } -- 2.47.2 From c0156bd572181d8c7f50434081ef71caff9c2304 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:17:13 +0100 Subject: [PATCH 040/522] Bump @typescript-eslint/eslint-plugin from 6.2.0 to 6.9.0 (#76) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 258 ++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 227 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb3bf701..f7ba9248 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^6.2.0", + "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", "eslint": "^8.45.0", "eslint-plugin-prettier": "^5.0.0", @@ -343,9 +343,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "node_modules/@types/mime": { @@ -381,9 +381,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true }, "node_modules/@types/send": { @@ -433,21 +433,20 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.0.tgz", - "integrity": "sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.2.0", - "@typescript-eslint/type-utils": "6.2.0", - "@typescript-eslint/utils": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", "natural-compare": "^1.4.0", - "natural-compare-lite": "^1.4.0", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -468,6 +467,53 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -560,13 +606,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.0.tgz", - "integrity": "sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.2.0", - "@typescript-eslint/utils": "6.2.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -586,6 +632,63 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -673,17 +776,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.0.tgz", - "integrity": "sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.2.0", - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", "semver": "^7.5.4" }, "engines": { @@ -697,6 +800,103 @@ "eslint": "^7.0.0 || ^8.0.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/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/@typescript-eslint/utils/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/@typescript-eslint/visitor-keys": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz", @@ -2447,12 +2647,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", diff --git a/package.json b/package.json index c334e370..af26bd06 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^6.2.0", + "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", "eslint": "^8.45.0", "eslint-plugin-prettier": "^5.0.0", -- 2.47.2 From 371ad688269f4a93feb2822892458ef07e3a23cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:18:28 +0100 Subject: [PATCH 041/522] Bump @types/express from 4.17.17 to 4.17.20 (#74) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f7ba9248..2c4203cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@tsconfig/node20": "^1.0.0", - "@types/express": "^4.17.17", + "@types/express": "^4.17.20", "@types/morgan": "^1.9.4", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", @@ -319,9 +319,9 @@ } }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", + "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", "dev": true, "dependencies": { "@types/body-parser": "*", diff --git a/package.json b/package.json index af26bd06..3ea62cfd 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@tsconfig/node20": "^1.0.0", - "@types/express": "^4.17.17", + "@types/express": "^4.17.20", "@types/morgan": "^1.9.4", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", -- 2.47.2 From a33dd3f19437f68cabbe32dc883d6ab3475dd42b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:18:38 +0100 Subject: [PATCH 042/522] Bump typescript from 5.1.6 to 5.2.2 (#63) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2c4203cc..095a4758 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "prettier": "^3.0.0", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.6" + "typescript": "^5.2.2" }, "engines": { "node": ">=18.15.0", @@ -3730,9 +3730,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index 3ea62cfd..8a9c8b5d 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier": "^3.0.0", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.6" + "typescript": "^5.2.2" }, "engines": { "node": ">=18.15.0", -- 2.47.2 From 066f115940f47d96bed5815e78add412636996ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:22:37 +0100 Subject: [PATCH 043/522] Bump @types/morgan from 1.9.4 to 1.9.7 (#75) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 095a4758..b3e60e77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "devDependencies": { "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.20", - "@types/morgan": "^1.9.4", + "@types/morgan": "^1.9.7", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", "eslint": "^8.45.0", @@ -355,9 +355,9 @@ "dev": true }, "node_modules/@types/morgan": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", - "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.7.tgz", + "integrity": "sha512-4sJFBUBrIZkP5EvMm1L6VCXp3SQe8dnXqlVpe1jsmTjS1JQVmSjnpMNs8DosQd6omBi/K7BSKJ6z/Mc3ki0K9g==", "dev": true, "dependencies": { "@types/node": "*" diff --git a/package.json b/package.json index 8a9c8b5d..7c971d7a 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "devDependencies": { "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.20", - "@types/morgan": "^1.9.4", + "@types/morgan": "^1.9.7", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", "eslint": "^8.45.0", -- 2.47.2 From 6c77e8dcfcb7833dbc24da06f49bb35d14862fcc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:22:51 +0100 Subject: [PATCH 044/522] Bump mongoose from 7.4.1 to 7.6.3 (#73) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 61 ++++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 30 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index b3e60e77..128ad8b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.4.1", + "mongoose": "^7.6.3", "warframe-items": "1.1260.121" }, "devDependencies": { @@ -214,6 +214,15 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", + "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -419,9 +428,9 @@ "dev": true }, "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.2.tgz", + "integrity": "sha512-uNv6b/uGRLlCVmelat2rA8bcVd3k/42mV2EmjhPh6JLkd35T5bgwR/t6xy7a9MWhd9sixIeBUzhBenvk3NO+DQ==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", @@ -1140,9 +1149,9 @@ } }, "node_modules/bson": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", - "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz", + "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==", "engines": { "node": ">=14.20.1" } @@ -2506,11 +2515,11 @@ } }, "node_modules/mongodb": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", - "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.0.tgz", + "integrity": "sha512-g+GCMHN1CoRUA+wb1Agv0TI4YTSiWr42B5ulkiAfLLHitGK1R+PkSAf3Lr5rPZwi/3F04LiaZEW0Kxro9Fi2TA==", "dependencies": { - "bson": "^5.4.0", + "bson": "^5.5.0", "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, @@ -2518,12 +2527,12 @@ "node": ">=14.20.1" }, "optionalDependencies": { - "saslprep": "^1.0.3" + "@mongodb-js/saslprep": "^1.1.0" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "@mongodb-js/zstd": "^1.1.0", - "kerberos": "^2.0.1", + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.0.0", + "kerberos": "^1.0.0 || ^2.0.0", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -2555,13 +2564,13 @@ } }, "node_modules/mongoose": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.1.tgz", - "integrity": "sha512-o3E5KHHiHdaiwCJG3+9r70sncRKki71Ktf/TfXdW6myu+53rtZ56uLl5ylkQiCf60V3COJuOeekcxXVsjQ7cBA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.6.3.tgz", + "integrity": "sha512-moYP2qWCOdWRDeBxqB/zYwQmQnTBsF5DoolX5uPyI218BkiA1ujGY27P0NTd4oWIX+LLkZPw0LDzlc/7oh1plg==", "dependencies": { - "bson": "^5.4.0", + "bson": "^5.5.0", "kareem": "2.5.1", - "mongodb": "5.7.0", + "mongodb": "5.9.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -3223,18 +3232,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", diff --git a/package.json b/package.json index 7c971d7a..1bc28824 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.4.1", + "mongoose": "^7.6.3", "warframe-items": "1.1260.121" }, "devDependencies": { -- 2.47.2 From d44a3da81d6f2c1fe31e1d8055d25befd02d0ba1 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 2 Nov 2023 12:41:00 +0100 Subject: [PATCH 045/522] update 33.6.9 (#77) --- config.json | 8 +- static/fixed_responses/worldState.json | 3887 +++++++++++++++--------- 2 files changed, 2490 insertions(+), 1405 deletions(-) diff --git a/config.json b/config.json index 937bcecd..259f8867 100644 --- a/config.json +++ b/config.json @@ -1,11 +1,11 @@ { "autoCreateAccount": true, - "buildLabel": "2023.08.31.08.49/brZhF2aVfaQsmU9STfvSqQ", + "buildLabel": "2023.09.12.09.10/aajswBESn+YL+VyL6y03zA", "matchmakingBuildId": "5359904157077190191", - "version": "33.6.8", - "worldSeed": "Y7nz7/N46OXUuG0UFBiaQhuY59a8IR8fIpwPJu3Uw0y0WGqS1BTISQ3FiQ4RV2Q4L19X7rr9864tDFU2xklR+PvdayCI+/+07iHK2LzxoaSRysylW/3U5rINPDLA4akw5LwsMltL3VuEyxvn9MXKamUO27i+lP5Bsg6Fbmx4UwgqOjQaYMjAqPn0yy+VY6vZsQJFCCLM5wDghhpcwDuTFzakKiq4N5nKPc7+VPNDRKE6qlMzPRt9DCzrtpakn6/WdFecmt9Gzl/HFe1fmZSYE1bEbvL93d1Nvi391YZNLIlRqSg/h+Hirbw8pT7xxbgsXVyJo/TbyivwyQt/ay70Vw==", + "version": "33.6.9", + "worldSeed": "n/lzs7WoAggi68FH+pYiDTk6o5rh7XhPQpfXg23J6H/8jfxCMG5XvYiiJwav3ibvkHwt30aZFNEcGm0w5tVBytUr/uFW/1Os8uytT4vB+JdIwQWRBWsiRmIbd5M+Td7HYk6C77HnAwhFHcO+UpsOGSmrkmgoxZRV9y4Obs9Y5nDl/X5xM/iNSRJT7BSh7fdG+EOuMeBSyKQBTeyetfrCDoP0+CvjQh6dmFOUcWMOjzGLuDem2de4GpDV/TGGbY/+CO6gV7JY/vW8uhyrjACP4FF2Dy/KnqOvxRIRdLdwCZ1rZARgTbsLfWO/k+83B1tE2Dfb8jnGTE2L9k9OEs9vZg==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, "testQuestKey": true -} \ No newline at end of file +} diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 159197e4..99de65b2 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "ost83BGeY7RnmuSKKG9IreN6VtKpWeD5ct1nW9EDbkaqz2dWd6Sw5hyKiZxwUmcnRK2H4zHLpzkVx4dNY2Ky+Q0VRJSOmcvf7h8QVcdEIiC1u+kvkdgNCjDGP4Go2afA+OnDwFnwYZQu3GnsWv2yg3cwz6BkWLeaGKk9toXaIc96aQ3hjH7EpGiN7ihCLT1xtBwrm9vE6KyWzP5l27g2U0v3jeerkhiL9vLHLs6WdH0hqo9Y16D0zTvN4/kSVuV4UgZT2MSlsFwBVN6S8/6M8O1Ze+5yIWzUUykOf374XDHA4mMxD+TWuE0VS5bhpmY9VYobaovG/R+VkU/mZ05DFQ==", + "WorldSeed": "n/lzs7WoAggi68FH+pYiDTk6o5rh7XhPQpfXg23J6H/8jfxCMG5XvYiiJwav3ibvkHwt30aZFNEcGm0w5tVBytUr/uFW/1Os8uytT4vB+JdIwQWRBWsiRmIbd5M+Td7HYk6C77HnAwhFHcO+UpsOGSmrkmgoxZRV9y4Obs9Y5nDl/X5xM/iNSRJT7BSh7fdG+EOuMeBSyKQBTeyetfrCDoP0+CvjQh6dmFOUcWMOjzGLuDem2de4GpDV/TGGbY/+CO6gV7JY/vW8uhyrjACP4FF2Dy/KnqOvxRIRdLdwCZ1rZARgTbsLfWO/k+83B1tE2Dfb8jnGTE2L9k9OEs9vZg==", "Version": 10, "MobileVersion": "4.15.16.0", - "BuildLabel": "2023.08.31.08.49/brZhF2aVfaQsmU9STfvSqQ", - "Time": 1694276616, + "BuildLabel": "2023.09.12.09.10/aajswBESn+YL+VyL6y03zA", + "Time": 1696683264, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -39,57 +39,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64ea160dc38675eb560a3c5e" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Make a splash during Dog Days!" }, - { "LanguageCode": "fr", "Message": "Faites des vagues lors des Batailles d'eau!" }, - { "LanguageCode": "it", "Message": "Fai un tuffo durante i Dog Days!" }, - { "LanguageCode": "de", "Message": "Sorgt bei Hitzefrei für Furore!" }, - { "LanguageCode": "es", "Message": "¡Date un chapuzón durante Canícula!" }, - { "LanguageCode": "pt", "Message": "Refresque-se durante os Dias de Cão!" }, - { "LanguageCode": "ru", "Message": "Освежитесь во время «Знойных дней»!" }, - { "LanguageCode": "pl", "Message": "Plażowe szaleństwo podczas Kanikuł!" }, - { "LanguageCode": "uk", "Message": "Зробіть сплеск під час «Спекотних днів»!" }, - { "LanguageCode": "tr", "Message": "Dog Days ile ıslanmaya hazır ol!" }, - { "LanguageCode": "ja", "Message": "ドッグ・デイズで水しぶきをあげよう!" }, - { "LanguageCode": "zh", "Message": "在三伏天中掀起波澜!" }, - { "LanguageCode": "ko", "Message": "도그 데이즈 미션 동안 물놀이를 즐겨보세요!" }, - { "LanguageCode": "tc", "Message": "在三伏天期間讓水花四濺!" } - ], - "Prop": "https://www.warframe.com/news/dog-days-has-returned?utm_medium=in-game&utm_source=in-game&utm_campaign=2023--08-DogDaysRerun", - "Date": { "$date": { "$numberLong": "1693061880000" } }, - "EventStartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EventEndDate": { "$date": { "$numberLong": "1694613600000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/297f28f32dea4fc207e56cd4de8620b5_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64ea1bc4e6d27d23b508a350" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Warframe Excalibur Custom PC Giveaway" }, - { "LanguageCode": "fr", "Message": "Tirage de PC Warframe personnalisé Excalibur" }, - { "LanguageCode": "it", "Message": "Giveaway PC Personalizzato Warframe Excalibur" }, - { "LanguageCode": "de", "Message": "Gewinnspiel: Individueller Warframe Excalibur PC" }, - { "LanguageCode": "es", "Message": "Sorteo de PC personalizada Excalibur de Warframe" }, - { "LanguageCode": "pt", "Message": "Sorteio de PC Personalizado do Excalibur do Warframe" }, - { "LanguageCode": "ru", "Message": "Розыгрыш ПК «Экскалибур» от Warframe" }, - { "LanguageCode": "pl", "Message": "Rozdanie PC personalizowanego dla Warframe Excalibur" }, - { "LanguageCode": "uk", "Message": "Розіграш ПК «Екскалібур» від Warframe" }, - { "LanguageCode": "tr", "Message": "Warframe Excalibur Özel PC Çekilişi" }, - { "LanguageCode": "ja", "Message": "Warframe Excalibur カスタムPCプレゼントキャンペーン" }, - { "LanguageCode": "zh", "Message": "Warframe Excalibur 的定制 PC 赠礼" }, - { "LanguageCode": "ko", "Message": "워프레임 엑스칼리버 커스텀 PC 경품 행사" }, - { "LanguageCode": "tc", "Message": "Warframe Excalibur 自訂 PC 贈禮活動" } - ], - "Prop": "https://www.warframe.com/news/warframe-excalibur-custom-pc-giveaway?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-JMDFGiveawayLaunch", - "Date": { "$date": { "$numberLong": "1693063620000" } }, - "EventStartDate": { "$date": { "$numberLong": "1693063800000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/043ac33fa52dd80ceea5a390a5b8adb5_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64ea3eea8df44dcb460a8564" }, "Messages": [ @@ -114,30 +63,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "64ea79865e9a1409f8042695" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Abyss of Dagath coming October 2023" }, - { "LanguageCode": "fr", "Message": "Les Abysses de Dagath - octobre 2023" }, - { "LanguageCode": "it", "Message": "Abisso di Dagath - in arrivo a Ottobre 2023" }, - { "LanguageCode": "de", "Message": "Der Abgrund von Dagath erscheint im Oktober 2023" }, - { "LanguageCode": "es", "Message": "«Abismo de Dagath» llegará en octubre de 2023" }, - { "LanguageCode": "pt", "Message": "O Abismo de Dagath chegará em outubro de 2023" }, - { "LanguageCode": "ru", "Message": "«Бездна Дагас» выйдет в октябре 2023 года" }, - { "LanguageCode": "pl", "Message": "Otchłań Dagath przybywa w październiku 2023" }, - { "LanguageCode": "uk", "Message": "«Безодня Даґат» з’явиться в жовтні 2023 року" }, - { "LanguageCode": "tr", "Message": "Abyss of Dagath Ekim 2023'te sizlerle" }, - { "LanguageCode": "ja", "Message": "アップデート「Dagathの深淵」が2023年10月に実装" }, - { "LanguageCode": "zh", "Message": "《Abyss of Dagath》将于 2023 年 10 月推出" }, - { "LanguageCode": "ko", "Message": "다가스의 나락이 2023년 10월에 찾아옵니다" }, - { "LanguageCode": "tc", "Message": "《Dagath 的深淵》將於 2023 年 10 月登場" } - ], - "Prop": "https://www.warframe.com/news/abyss-of-dagath-coming-october-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-AbyssofDagathComingin2023Announce", - "Date": { "$date": { "$numberLong": "1693088040000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e4e77102246a1653d661fa72c3f8d4c6_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64eaadcefca369eee60e01fa" }, "Messages": [{ "LanguageCode": "en", "Message": "Watch the Full TennoLive Demo!" }], @@ -163,7 +88,8 @@ "Date": { "$date": { "$numberLong": "1693234200000" } }, "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/2b90772068288612d6e81acbca5076c0_1600x900.png", "Priority": false, - "MobileOnly": false + "MobileOnly": false, + "Community": true }, { "_id": { "$oid": "64ef93d6d8ca7f26c910082d" }, @@ -184,240 +110,479 @@ "MobileOnly": false }, { - "_id": { "$oid": "64f0d95ea55363453207c52f" }, - "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.7" }], - "Prop": "https://forums.warframe.com/topic/1365031-ecos-de-duviri-revisi%C3%B3n-3367/", - "Date": { "$date": { "$numberLong": "1693502220000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64f897aa521743cdf30e4443" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Stream Schedule: Sept 5 - 8!" }], - "Prop": "https://forums.warframe.com/topic/1365491-community-stream-schedule-september-5-8/?utm_medium=in-game&utm_source=in-game&utm_campaign=20230-09-Community-Streams-06", - "Date": { "$date": { "$numberLong": "1694013300000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "64f8bb920628f1f8da07fac6" }, - "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.8" }], - "Prop": "https://www.warframe.com/updates/pc/33-6-8", - "Date": { "$date": { "$numberLong": "1694022480000" } }, - "Priority": false, + "_id": { "$oid": "65009b0f9e8eb1d26d051757" }, + "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.9" }], + "Prop": "https://www.warframe.com/updates/pc/33-6-9", + "Date": { "$date": { "$numberLong": "1694538420000" } }, + "Priority": true, "MobileOnly": false }, { - "_id": { "$oid": "64f8ced1b08844952009b9db" }, - "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.8" }], - "Prop": "https://forums.warframe.com/topic/1365508-ecos-de-duviri-revisi%C3%B3n-3368/", - "Date": { "$date": { "$numberLong": "1694023800000" } }, + "_id": { "$oid": "650343db094c9ff60706b92d" }, + "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.9" }], + "Prop": "https://forums.warframe.com/topic/1366027-ecos-de-duviri-revisi%C3%B3n-3369/", + "Date": { "$date": { "$numberLong": "1694709120000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "64f9b89b8dbe40231a098ada" }, - "Messages": [{ "LanguageCode": "ja", "Message": "9月5日~9月8日までの「コミュニティー・ストリーム」配信スケジュール" }], - "Prop": "https://bit.ly/3qVeS9D", - "Date": { "$date": { "$numberLong": "1694087220000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_09/WF_PrimeTimeTwitchDropsAsset_Forma.png.e7be0a096b95234698db751292bc6f26.png", + "_id": { "$oid": "65089123cd2131593b02912d" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Abyss of Dagath Development & Hotfixes" }], + "Prop": "https://forums.warframe.com/topic/1366274-update-abyss-of-dagath-development/", + "Date": { "$date": { "$numberLong": "1695060180000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "64fa16f39d4bbea46403b0c1" }, + "_id": { "$oid": "6515cfa2f8dbeabcc6011c08" }, "Messages": [ - { "LanguageCode": "en", "Message": "Wukong Prime and Equinox Prime are back!" }, - { "LanguageCode": "fr", "Message": "Wukong Prime et Equinox Prime sont de retour" }, - { "LanguageCode": "it", "Message": "Wukong Prime ed Equinox Prime sono tornati!" }, - { "LanguageCode": "de", "Message": "Wukong Prime und Equinox Prime sind zurück!" }, - { "LanguageCode": "es", "Message": "¡Wukong Prime y Equinox Prime están de vuelta!" }, - { "LanguageCode": "pt", "Message": "O Wukong Prime e a Equinox Prime estão de volta!" }, - { "LanguageCode": "ru", "Message": "Вуконг Прайм и Эквинокс Прайм вернулись!" }, - { "LanguageCode": "pl", "Message": "Wukong Prime i Equinox Prime powrócili!" }, - { "LanguageCode": "uk", "Message": "Вукон-прайм і Еквінокс-прайм повертаються!" }, - { "LanguageCode": "tr", "Message": "Wukong Prime ve Equinox Prime geri döndü!" }, - { "LanguageCode": "ja", "Message": "Wukong PrimeとEquinox Primeが復帰!" }, - { "LanguageCode": "zh", "Message": "Wukong Prime 和 Equinox Prime 现已回归!" }, - { "LanguageCode": "ko", "Message": "오공 프라임 및 이쿼녹스 프라임이 돌아왔습니다!" }, - { "LanguageCode": "tc", "Message": "Wukong Prime 以及 Equinox Prime 回歸了!" } + { "LanguageCode": "en", "Message": "Abyss of Dagath coming October 18" }, + { "LanguageCode": "fr", "Message": "Les Abysses de Dagath - dès le 18 octobre" }, + { "LanguageCode": "it", "Message": "Abisso di Dagath - in arrivo a Ottobre 18" }, + { "LanguageCode": "de", "Message": "Abgrund von Dagath' erscheint am 18. Oktober" }, + { "LanguageCode": "es", "Message": "«Abismo de Dagath» llegará el 18 de octubre" }, + { "LanguageCode": "pt", "Message": "O Abismo de Dagath chegará no dia 18 de outubro" }, + { "LanguageCode": "ru", "Message": "«Бездна Дагас» выйдет в октябре 18 года" }, + { "LanguageCode": "pl", "Message": "Otchłań Dagath przybywa w październiku 18" }, + { "LanguageCode": "uk", "Message": "«Безодня Даґат» з’явиться 18 жовтня" }, + { "LanguageCode": "tr", "Message": "Abyss of Dagath, 18 Ekim'de Sizlerle" }, + { "LanguageCode": "ja", "Message": "アップデート「Dagathの深淵」が10月19日に実装" }, + { "LanguageCode": "zh", "Message": "《Dagath 之深渊》将于美东夏令时间 10 月 18 日推出" }, + { "LanguageCode": "ko", "Message": "다가스의 나락이 북미 시각 10월 18일에 찾아옵니다" }, + { "LanguageCode": "tc", "Message": "《Dagath 的深淵》將於 10 月 18 日登場" } ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-09-Wukong-and-Equinox-Prime-Resurgence", - "Date": { "$date": { "$numberLong": "1694100600000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/prime-resurgence/rotations/equinox-wukong/masthead-keyart-desktop.png", + "Prop": "https://www.warframe.com/news/abyss-of-dagath?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-09-AbyssofDagathDateAnnounceDevstreamIGN", + "Date": { "$date": { "$numberLong": "1695928020000" } }, + "ImageUrl": "https://warframe-web-assets-dev.nyc3.cdn.digitaloceanspaces.com/uploads/ba0b484c4e89584bb8f673298eada2b9.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "64fb2a500eca98609800c1da" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Récap' des patchs !" }], - "Prop": "https://forums.warframe.com/topic/1365617-r%C3%A9cap-des-patchs-3365-66-67-68/", - "Date": { "$date": { "$numberLong": "1694181900000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/c9d3e3370ed3264c3462dcab3439b5f7.png", + "_id": { "$oid": "6516e4e5f9c31fbd8607a920" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Devstream 173" }], + "Prop": "https://forums.warframe.com/topic/1366847-devstream-173-r%C3%A9sum%C3%A9-fr/", + "Date": { "$date": { "$numberLong": "1695999000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fd5642ba41bbcf0ef9b720a59f8224a4_1600x900.png", "Priority": false, "MobileOnly": false + }, + { + "_id": { "$oid": "651afeea40db3e48bf021bf0" }, + "Messages": [{ "LanguageCode": "en", "Message": "QTCC Charity Stream & Twitch Drop Schedule: Oct 2-8" }], + "Prop": "https://forums.warframe.com/topic/1367083-qtcc-community-fundraising-streams-drops-oct-2-8/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-QTCC-Community-Streams-02", + "Date": { "$date": { "$numberLong": "1696267920000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "651b1852fedccf655d0af1df" }, + "Messages": [{ "LanguageCode": "ja", "Message": "10月2日~10月8日のQTCC配信スケジュール" }], + "Prop": "https://bit.ly/46bT60l", + "Date": { "$date": { "$numberLong": "1696274340000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.png.b692bbc659db9c8aedebc142bdb2d47e.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "651b20dc850a25e4620d227a" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Warframe Evreni 101" }], + "Prop": "https://forums.warframe.com/topic/1367018-warframe-evreni-101/", + "Date": { "$date": { "$numberLong": "1696276620000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "651b246a1ce791085a06540b" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Streams QTCC : 2 - 8 Oct." }], + "Prop": "https://forums.warframe.com/topic/1367104-streams-de-collectes-de-fonds-qtcc-et-drops-2-8-oct/", + "Date": { "$date": { "$numberLong": "1696277520000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.thumb.png.01d31c3fab64979e127739fea4b1ef1a.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "651b265a030cbbcda60b0e39" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[Ateliers des Devs] Index" }], + "Prop": "https://forums.warframe.com/topic/1367105-ateliers-des-devs-index-pour-les-abysses-de-dagath/", + "Date": { "$date": { "$numberLong": "1696278060000" } }, + "ImageUrl": "https://warframe-web-assets-dev.nyc3.cdn.digitaloceanspaces.com/uploads/ba0b484c4e89584bb8f673298eada2b9.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "651c54ed4ffd527d360cf566" }, + "Messages": [{ "LanguageCode": "es", "Message": "Streams y Twitch Drops de QTCC: 2 al 8 de octubre" }], + "Prop": "https://forums.warframe.com/topic/1367181-streams-y-twitch-drops-de-qtcc-2-al-8-de-octubre/", + "Date": { "$date": { "$numberLong": "1696355460000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "651d8b1f850a6f2d2f07afb0" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Earn Nights of Naberus Rewards!" }, + { "LanguageCode": "fr", "Message": "Gagnez des récompenses Nuits de Naberus !" }, + { "LanguageCode": "it", "Message": "Ottieni le Ricompense Notti di Naberus!" }, + { "LanguageCode": "de", "Message": "Verdient Naberus Nacht Belohnungen!" }, + { "LanguageCode": "es", "Message": "¡Obtén las recompensas de las Noches de Naberus!" }, + { "LanguageCode": "pt", "Message": "Obtenha Recompensas das Noites de Naberus!" }, + { "LanguageCode": "ru", "Message": "Получите новые награды в ночь Наберуса!" }, + { "LanguageCode": "pl", "Message": "Zdobądź nagrody za Noce Naberusa!" }, + { "LanguageCode": "uk", "Message": "Заробляйте нагороди Набера!" }, + { "LanguageCode": "tr", "Message": "Naberus Geceleri Ödüllerini Kazan!" }, + { "LanguageCode": "ja", "Message": "Naberusの夜で報酬をゲットしよう!" }, + { "LanguageCode": "zh", "Message": "获取全新的纳贝流士奖励!" }, + { "LanguageCode": "ko", "Message": "나베루스의 밤 보상을 획득해 보세요!" }, + { "LanguageCode": "tc", "Message": "賺取全新《納貝流士之夜》獎勵!" } + ], + "Prop": "https://www.warframe.com/news/nights-of-naberus-returns-en?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-NightsofNaberusReturnsLaunchIGN", + "Date": { "$date": { "$numberLong": "1696434660000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/06a647f96cc6f33fb6c95d712d0710a4_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "651efb8630eb1e374606be0e" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Chroma Prime and Zephyr Prime are back!" }, + { "LanguageCode": "fr", "Message": "Chroma Prime et Zephyr Prime sont de retour !" }, + { "LanguageCode": "it", "Message": "Chroma Prime e Zephyr Prime sono tornati!" }, + { "LanguageCode": "de", "Message": "Chroma Prime und Zephyr Prime sind zurück!" }, + { "LanguageCode": "es", "Message": "¡Chroma Prime y Zephyr Prime están de vuelta!" }, + { "LanguageCode": "pt", "Message": "O Chroma Prime e a Zephyr Prime voltaram!" }, + { "LanguageCode": "ru", "Message": "Хрома Прайм и Зефир Прайм вернулись!" }, + { "LanguageCode": "pl", "Message": "Chroma Prime i Zephyr Prime powrócili!" }, + { "LanguageCode": "uk", "Message": "Хрома-прайм і Зефіра-прайм повертаються!" }, + { "LanguageCode": "tr", "Message": "Chroma Prime ve Zephyr Prime geri döndü!" }, + { "LanguageCode": "ja", "Message": "Chroma PrimeとZephyr Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Chroma Prime 和 Zephyr Prime 现已回归!" }, + { "LanguageCode": "ko", "Message": "크로마 프라임 및 제피르 프라임이 돌아왔습니다!" }, + { "LanguageCode": "tc", "Message": "Chroma Prime 以及 Zephyr Prime 回歸了!" } + ], + "Prop": "https://www.warframe.com/news/zephyr-and-chroma-prime-vault-en?utm_medium=in-game&utm_source=in-game&utm_campaign=2021-10-PrimeResurgence", + "Date": { "$date": { "$numberLong": "1696489200000" } }, + "EventStartDate": { "$date": { "$numberLong": "1696489200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/3ec8cb5c44f40c68e02c705875af713c.jpeg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65207a558aee4ed86b055e48" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:システム変更とQOL全般" }], + "Prop": "https://bit.ly/45hKQL7", + "Date": { "$date": { "$numberLong": "1696627200000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65207a858aee4ed86b055e49" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:アクセシビリティとHUD改善" }], + "Prop": "https://bit.ly/3rz7FfJ", + "Date": { "$date": { "$numberLong": "1696627260000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65207ae48aee4ed86b055e4b" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:コンパニオン改変" }], + "Prop": "https://bit.ly/48F9uZ9", + "Date": { "$date": { "$numberLong": "1696627380000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65207b06fc6cb2d7e20bdd11" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:新規プレイヤーの道のり" }], + "Prop": "https://bit.ly/3tdNdBh", + "Date": { "$date": { "$numberLong": "1696627380000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65207b35f6614bf45c0a6660" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Hydroidのリワーク" }], + "Prop": "https://bit.ly/3PLDqdx", + "Date": { "$date": { "$numberLong": "1696627440000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "Priority": false, + "MobileOnly": false, + "Community": true } ], "Goals": [ { - "_id": { "$oid": "64e8cb4d0e968b698e15eb98" }, - "Activation": { "$date": { "$numberLong": "1693062000000" } }, - "Expiry": { "$date": { "$numberLong": "1695654000000" } }, + "_id": { "$oid": "651acb58307d0f40e43bd3d3" }, + "Activation": { "$date": { "$numberLong": "1696431600000" } }, + "Expiry": { "$date": { "$numberLong": "1698850800000" } }, "Count": 0, - "Goal": 100, - "InterimGoals": [25, 50], - "BonusGoal": 200, + "Goal": 0, "Success": 0, "Personal": true, - "Bounty": true, - "ClampNodeScores": true, - "Node": "EventNode25", - "ConcurrentMissionKeyNames": ["/Lotus/Types/Keys/TacAlertKeyWaterFightB", "/Lotus/Types/Keys/TacAlertKeyWaterFightC", "/Lotus/Types/Keys/TacAlertKeyWaterFightD"], - "ConcurrentNodeReqs": [25, 50, 100], - "ConcurrentNodes": ["EventNode24", "EventNode34", "EventNode35"], - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyWaterFightA", - "Faction": "FC_CORPUS", - "Desc": "/Lotus/Language/Alerts/TacAlertWaterFight", - "Icon": "/Lotus/Interface/Icons/StoreIcons/Emblems/SplashEventIcon.png", - "Tag": "WaterFight", - "InterimRewards": [ - { "credits": 50000, "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/DogDays2023ASigil"], "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 25 }] }, - { - "credits": 50000, - "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyBeachKavat"], - "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 50 }] - } - ], - "Reward": { - "credits": 50000, - "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyRucksackKubrow"], - "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 75 }] - }, - "BonusReward": { - "credits": 50000, - "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCleaningDroneBeachcomber"], - "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/WaterFightBucks", "ItemCount": 100 }] - }, - "ScoreVar": "Team1Score", - "NightLevel": "/Lotus/Levels/GrineerBeach/GrineerBeachEventNight.level" - }, - { - "_id": { "$oid": "64fa32c9c3c4f08d22abf704" }, - "Activation": { "$date": { "$numberLong": "1694195501944" } }, - "Expiry": { "$date": { "$numberLong": "1696009901944" } }, - "HealthPct": 0.8435184, - "VictimNode": "SolNode228", - "Regions": [2], - "Success": 0, - "Desc": "/Lotus/Language/GameModes/RecurringGhoulAlert", - "ToolTip": "/Lotus/Language/GameModes/RecurringGhoulAlertDesc", - "Icon": "/Lotus/Interface/Icons/Categories/IconGhouls256.png", - "Tag": "GhoulEmergence", - "JobAffiliationTag": "CetusSyndicate", - "JobCurrentVersion": { "$oid": "64fc913d0000000000000007" }, - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [300, 300, 300, 440] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 820] - } - ], - "JobPreviousVersion": { "$oid": "64fc6e160000000000000007" }, - "PreviousJobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyHunt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [310, 310, 310, 460] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [500, 500, 500, 740] - } - ] + "Desc": "/Lotus/Language/Events/HalloweenNaberusName", + "ToolTip": "/Lotus/Language/Events/HalloweenNaberusDesc", + "Icon": "/Lotus/Interface/Icons/JackOLanternColour.png", + "Tag": "DeimosHalloween", + "Node": "DeimosHub" } ], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "64fc92fdd6bf148e76d0e74e" }, - "Activation": { "$date": { "$numberLong": "1694275200000" } }, - "Expiry": { "$date": { "$numberLong": "1694361600000" } }, + "_id": { "$oid": "65202b7dfc664471b15868bc" }, + "Activation": { "$date": { "$numberLong": "1696608000000" } }, + "Expiry": { "$date": { "$numberLong": "1696694400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 28436, - "Boss": "SORTIE_BOSS_KRIL", + "Seed": 33410, + "Boss": "SORTIE_BOSS_ALAD", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_RIFLE_ONLY", "node": "SolNode99", "tileset": "GrineerSettlementTileset" }, - { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_HAZARD_FIRE", "node": "SolNode15", "tileset": "GrineerGalleonTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode122", "tileset": "GrineerOceanTileset" } + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_SECONDARY_ONLY", "node": "SolNode56", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_PUNCTURE", "node": "SolNode49", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode53", "tileset": "CorpusGasCityTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "64f51a7dddae2dc9bce35b15" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, + "_id": { "$oid": "651a047daf12cceb1a5b2def" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 57646, - "Boss": "SORTIE_BOSS_BOREAL", + "Seed": 66952, + "Boss": "SORTIE_BOSS_AMAR", "Missions": [ - { "missionType": "MT_SABOTAGE", "node": "SolNode85" }, - { "missionType": "MT_EXCAVATE", "node": "SolNode79" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode106" }, + { "missionType": "MT_ARTIFACT", "node": "SolNode36" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "64fc913d0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1694273853233" } }, - "Expiry": { "$date": { "$numberLong": "1694282852107" } }, + "_id": { "$oid": "65202ec5e21ab9d49d8e1e37" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "ArbitersSyndicate", + "Seed": 33410, + "Nodes": ["SolNode79", "SolNode22", "SolNode217", "SolNode707", "SolNode31", "SolNode139", "SolNode58"] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e38" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 50623, + "Nodes": ["SolNode15", "SolNode16", "SolNode128", "SettlementNode11", "SolNode118", "SolNode102", "SolNode405"] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e3a" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "EventSyndicate", + "Seed": 8696, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e39" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 98160, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e3b" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "KahlSyndicate", + "Seed": 98526, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e3c" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 13640, + "Nodes": ["SolNode30", "SolNode123", "SolNode211", "SolNode149", "SettlementNode15", "SolNode48", "SolNode103"] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e3d" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "QuillsSyndicate", + "Seed": 12566, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e3e" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "PerrinSyndicate", + "Seed": 97638, + "Nodes": ["SolNode89", "SolNode113", "SolNode711", "SettlementNode2", "SolNode195", "SolNode109", "SolNode131"] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e3f" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 12614, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e45" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 1984, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e42" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 78248, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e43" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 6042, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e44" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 14674, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e41" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 18639, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e40" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 44189, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e46" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 73219, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e47" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 29922, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e49" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 87386, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e48" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 25488, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e4a" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 6050, + "Nodes": ["SolNode45", "SolNode27", "SolNode101", "SolNode224", "SolNode82", "SolNode122", "SolNode402"] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e4c" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "VoxSyndicate", + "Seed": 94986, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e4b" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 58217, + "Nodes": [] + }, + { + "_id": { "$oid": "65202ec6e21ab9d49d8e1e4d" }, + "Activation": { "$date": { "$numberLong": "1696607941971" } }, + "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 92533, + "Nodes": ["SolNode85", "SolNode12", "SolNode107", "SolNode41", "SolNode125", "SolNode205", "SolNode191"] + }, + { + "_id": { "$oid": "65213ac80000000000000002" }, + "Activation": { "$date": { "$numberLong": "1696676552806" } }, + "Expiry": { "$date": { "$numberLong": "1696685551679" } }, "Tag": "EntratiSyndicate", - "Seed": 18421, + "Seed": 28685, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableCRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [8, 8, 8] + "xpAmounts": [11, 11, 11] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", "masteryReq": 5, "minEnemyLevel": 25, @@ -427,23 +592,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [16, 16, 16, 24] + "xpAmounts": [17, 17, 17, 25] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 42] + "xpAmounts": [20, 20, 20, 20, 39] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -480,56 +645,130 @@ ] }, { - "_id": { "$oid": "64fc913d0000000000000007" }, - "Activation": { "$date": { "$numberLong": "1694273853233" } }, - "Expiry": { "$date": { "$numberLong": "1694282852107" } }, - "Tag": "CetusSyndicate", - "Seed": 18421, + "_id": { "$oid": "65213ac80000000000000022" }, + "Activation": { "$date": { "$numberLong": "1696676552806" } }, + "Expiry": { "$date": { "$numberLong": "1696685551679" } }, + "Tag": "SolarisSyndicate", + "Seed": 28685, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, "xpAmounts": [400, 400, 400] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [610, 610, 610] + "xpAmounts": [740, 740, 740] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [570, 570, 570, 840] + "xpAmounts": [660, 660, 660, 980] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 550, 1090] + "xpAmounts": [620, 620, 620, 620, 1210] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1360] + "xpAmounts": [720, 720, 720, 720, 1410] }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [780, 780, 780, 780, 1540] + } + ] + }, + { + "_id": { "$oid": "65213ac80000000000000026" }, + "Activation": { "$date": { "$numberLong": "1696676552806" } }, + "Expiry": { "$date": { "$numberLong": "1696685551679" } }, + "Tag": "ZarimanSyndicate", + "Seed": 28686, + "Nodes": [] + }, + { + "_id": { "$oid": "65213ac80000000000000007" }, + "Activation": { "$date": { "$numberLong": "1696676552806" } }, + "Expiry": { "$date": { "$numberLong": "1696685551679" } }, + "Tag": "CetusSyndicate", + "Seed": 28685, + "Nodes": [], + "Jobs": [ { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [470, 470, 470] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [720, 720, 720] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [670, 670, 670, 980] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [570, 570, 570, 570, 1120] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [740, 740, 740, 740, 1450] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -537,492 +776,198 @@ }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [780, 780, 780, 780, 1530] + "xpAmounts": [810, 810, 810, 810, 1590] } ] - }, - { - "_id": { "$oid": "64fc913d0000000000000022" }, - "Activation": { "$date": { "$numberLong": "1694273853233" } }, - "Expiry": { "$date": { "$numberLong": "1694282852107" } }, - "Tag": "SolarisSyndicate", - "Seed": 18421, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [440, 440, 440] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [680, 680, 680] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [650, 650, 650, 960] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [630, 630, 630, 630, 1230] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobAmbush", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1350] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1620] - } - ] - }, - { - "_id": { "$oid": "64fc913d0000000000000026" }, - "Activation": { "$date": { "$numberLong": "1694273853233" } }, - "Expiry": { "$date": { "$numberLong": "1694282852107" } }, - "Tag": "ZarimanSyndicate", - "Seed": 18421, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fae" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "ArbitersSyndicate", - "Seed": 28436, - "Nodes": ["SolNode11", "SolNode12", "SolNode125", "SettlementNode14", "SolNode147", "SolNode214", "SolNode84"] - }, - { - "_id": { "$oid": "64fc96453a97285090e06faf" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 44723, - "Nodes": ["SolNode113", "SolNode103", "SolNode22", "SolNode220", "SolNode38", "SolNode85", "SolNode191"] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb1" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "EventSyndicate", - "Seed": 52178, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb2" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "KahlSyndicate", - "Seed": 29355, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb0" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 24668, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb3" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 46629, - "Nodes": ["SolNode119", "SolNode2", "SolNode89", "SolNode146", "SolNode408", "SolNode72", "SolNode45"] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb4" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "QuillsSyndicate", - "Seed": 77962, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb5" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "PerrinSyndicate", - "Seed": 46677, - "Nodes": ["SolNode26", "SolNode130", "SolNode107", "SolNode58", "SolNode185", "SolNode88", "SettlementNode3"] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb6" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 16282, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fbb" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 25440, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fba" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 81314, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb7" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 57424, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb8" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 22924, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fb9" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 32842, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fbe" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 80503, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fbd" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 43862, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fbc" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 40837, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fbf" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 81933, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fc0" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 86733, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96453a97285090e06fc1" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 29779, - "Nodes": ["SolNode106", "SolNode225", "SolNode132", "SolNode75", "SolNode1", "SolNode402", "SolNode205"] - }, - { - "_id": { "$oid": "64fc96463a97285090e06fc2" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 47687, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96463a97285090e06fc3" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "VoxSyndicate", - "Seed": 56988, - "Nodes": [] - }, - { - "_id": { "$oid": "64fc96463a97285090e06fc4" }, - "Activation": { "$date": { "$numberLong": "1694275141641" } }, - "Expiry": { "$date": { "$numberLong": "1694361540000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 64102, - "Nodes": ["SolNode61", "SolNode27", "SolNode226", "SolNode74", "SolNode62", "SolNode184", "SolNode76"] } ], "ActiveMissions": [ { - "_id": { "$oid": "64fc83c2ad59876fd7fb4287" }, + "_id": { "$oid": "652140fd7277809f43f147a3" }, "Region": 19, - "Seed": 55168, - "Activation": { "$date": { "$numberLong": "1694270402067" } }, - "Expiry": { "$date": { "$numberLong": "1694277315001" } }, + "Seed": 78462, + "Activation": { "$date": { "$numberLong": "1696678141853" } }, + "Expiry": { "$date": { "$numberLong": "1696683547833" } }, "Node": "SolNode743", "MissionType": "MT_MOBILE_DEFENSE", "Modifier": "VoidT5" }, { - "_id": { "$oid": "64fc87818a66076584c04eaa" }, - "Region": 12, - "Seed": 62112, - "Activation": { "$date": { "$numberLong": "1694271361374" } }, - "Expiry": { "$date": { "$numberLong": "1694278357141" } }, - "Node": "SolNode195", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "64fc87818a66076584c04eab" }, - "Region": 15, - "Seed": 76630, - "Activation": { "$date": { "$numberLong": "1694271361374" } }, - "Expiry": { "$date": { "$numberLong": "1694278058175" } }, - "Node": "SolNode403", + "_id": { "$oid": "652140fd7277809f43f147a4" }, + "Region": 5, + "Seed": 24462, + "Activation": { "$date": { "$numberLong": "1696678141853" } }, + "Expiry": { "$date": { "$numberLong": "1696685125046" } }, + "Node": "SolNode74", "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "652140fd7277809f43f147a5" }, + "Region": 16, + "Seed": 13260, + "Activation": { "$date": { "$numberLong": "1696678141853" } }, + "Expiry": { "$date": { "$numberLong": "1696685296121" } }, + "Node": "SettlementNode3", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "652142a17097e26fdf3be782" }, + "Region": 16, + "Seed": 30148, + "Activation": { "$date": { "$numberLong": "1696678561819" } }, + "Expiry": { "$date": { "$numberLong": "1696683480119" } }, + "Node": "SettlementNode11", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "6521440996aa0e64e8a09885" }, + "Region": 9, + "Seed": 35418, + "Activation": { "$date": { "$numberLong": "1696678921220" } }, + "Expiry": { "$date": { "$numberLong": "1696683507915" } }, + "Node": "SolNode102", + "MissionType": "MT_INTEL", "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "64fc8961708bb163aa8c9cb0" }, - "Region": 3, - "Seed": 79560, - "Activation": { "$date": { "$numberLong": "1694271841276" } }, - "Expiry": { "$date": { "$numberLong": "1694278712810" } }, - "Node": "SolNode63", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "64fc8bb98d2d4e31e02733d8" }, - "Region": 16, - "Seed": 38573, - "Activation": { "$date": { "$numberLong": "1694272441640" } }, - "Expiry": { "$date": { "$numberLong": "1694279488068" } }, - "Node": "SettlementNode12", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "64fc8bb98d2d4e31e02733d9" }, - "Region": 6, - "Seed": 15607, - "Activation": { "$date": { "$numberLong": "1694272441640" } }, - "Expiry": { "$date": { "$numberLong": "1694279572766" } }, - "Node": "SolNode19", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "64fc8e11ac4ce1a84a5169f4" }, - "Region": 19, - "Seed": 62629, - "Activation": { "$date": { "$numberLong": "1694273041541" } }, - "Expiry": { "$date": { "$numberLong": "1694277346075" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5", + "_id": { "$oid": "6521440996aa0e64e8a09886" }, + "Region": 11, + "Seed": 73804, + "Activation": { "$date": { "$numberLong": "1696678921220" } }, + "Expiry": { "$date": { "$numberLong": "1696684951949" } }, + "Node": "SolNode175", + "MissionType": "MT_HIVE", + "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "64fc8e11ac4ce1a84a5169f5" }, + "_id": { "$oid": "652144bd102663ba7babcd1e" }, "Region": 19, - "Seed": 92152, - "Activation": { "$date": { "$numberLong": "1694273041541" } }, - "Expiry": { "$date": { "$numberLong": "1694279391027" } }, + "Seed": 80407, + "Activation": { "$date": { "$numberLong": "1696679101707" } }, + "Expiry": { "$date": { "$numberLong": "1696685335452" } }, "Node": "SolNode748", "MissionType": "MT_RESCUE", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "64fc8e11ac4ce1a84a5169f6" }, - "Region": 19, - "Seed": 79777, - "Activation": { "$date": { "$numberLong": "1694273041541" } }, - "Expiry": { "$date": { "$numberLong": "1694280203827" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT5", + "_id": { "$oid": "652145e9a8cd4058860618c4" }, + "Region": 13, + "Seed": 91083, + "Activation": { "$date": { "$numberLong": "1696679401337" } }, + "Expiry": { "$date": { "$numberLong": "1696684380936" } }, + "Node": "SolNode204", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "64fc8f3d01ec398a439b9591" }, - "Region": 15, - "Seed": 796, - "Activation": { "$date": { "$numberLong": "1694273341885" } }, - "Expiry": { "$date": { "$numberLong": "1694279563471" } }, - "Node": "SolNode405", - "MissionType": "MT_SURVIVAL", + "_id": { "$oid": "6521471598d5a30788fcd678" }, + "Region": 2, + "Seed": 40411, + "Activation": { "$date": { "$numberLong": "1696679701357" } }, + "Expiry": { "$date": { "$numberLong": "1696683474465" } }, + "Node": "SolNode22", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "652147c976b9d3b75b6afcc0" }, + "Region": 8, + "Seed": 79478, + "Activation": { "$date": { "$numberLong": "1696679881901" } }, + "Expiry": { "$date": { "$numberLong": "1696685440728" } }, + "Node": "SolNode6", + "MissionType": "MT_EXCAVATE", "Modifier": "VoidT3" }, { - "_id": { "$oid": "64fc8f3d01ec398a439b9592" }, + "_id": { "$oid": "652147c976b9d3b75b6afcc1" }, "Region": 13, - "Seed": 60992, - "Activation": { "$date": { "$numberLong": "1694273341885" } }, - "Expiry": { "$date": { "$numberLong": "1694280236232" } }, + "Seed": 3426, + "Activation": { "$date": { "$numberLong": "1696679881901" } }, + "Expiry": { "$date": { "$numberLong": "1696683498425" } }, "Node": "SolNode217", "MissionType": "MT_RESCUE", "Modifier": "VoidT3" }, { - "_id": { "$oid": "64fc906a087149fdb25db907" }, - "Region": 7, - "Seed": 97749, - "Activation": { "$date": { "$numberLong": "1694273642007" } }, - "Expiry": { "$date": { "$numberLong": "1694277932757" } }, - "Node": "SolNode64", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "64fc906a087149fdb25db908" }, - "Region": 8, - "Seed": 95771, - "Activation": { "$date": { "$numberLong": "1694273642007" } }, - "Expiry": { "$date": { "$numberLong": "1694278750981" } }, - "Node": "SolNode17", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "64fc92853b1b87df542be292" }, + "_id": { "$oid": "65214ad6be19f804921d640d" }, "Region": 9, - "Seed": 32922, - "Activation": { "$date": { "$numberLong": "1694274181315" } }, - "Expiry": { "$date": { "$numberLong": "1694281167303" } }, - "Node": "SolNode48", - "MissionType": "MT_RESCUE", + "Seed": 93086, + "Activation": { "$date": { "$numberLong": "1696680662032" } }, + "Expiry": { "$date": { "$numberLong": "1696686210185" } }, + "Node": "SolNode43", + "MissionType": "MT_TERRITORY", "Modifier": "VoidT4" }, { - "_id": { "$oid": "64fc92853b1b87df542be293" }, - "Region": 12, - "Seed": 43324, - "Activation": { "$date": { "$numberLong": "1694274181315" } }, - "Expiry": { "$date": { "$numberLong": "1694280913668" } }, - "Node": "SolNode188", - "MissionType": "MT_INTEL", + "_id": { "$oid": "65214ad6be19f804921d640e" }, + "Region": 11, + "Seed": 60279, + "Activation": { "$date": { "$numberLong": "1696680662032" } }, + "Expiry": { "$date": { "$numberLong": "1696684268529" } }, + "Node": "SolNode172", + "MissionType": "MT_TERRITORY", "Modifier": "VoidT4" }, { - "_id": { "$oid": "64fc92fdf640de55c1637254" }, - "Region": 16, - "Seed": 8038, - "Activation": { "$date": { "$numberLong": "1694274301652" } }, - "Expiry": { "$date": { "$numberLong": "1694279727043" } }, - "Node": "SettlementNode1", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64fc946572c747766f98c757" }, - "Region": 3, - "Seed": 90863, - "Activation": { "$date": { "$numberLong": "1694274661443" } }, - "Expiry": { "$date": { "$numberLong": "1694279093677" } }, - "Node": "SolNode59", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64fc946572c747766f98c758" }, + "_id": { "$oid": "65214f49f6ded1a70ea4a661" }, "Region": 4, - "Seed": 91390, - "Activation": { "$date": { "$numberLong": "1694274661443" } }, - "Expiry": { "$date": { "$numberLong": "1694281292974" } }, - "Node": "SolNode41", - "MissionType": "MT_INTEL", + "Seed": 13745, + "Activation": { "$date": { "$numberLong": "1696681801544" } }, + "Expiry": { "$date": { "$numberLong": "1696688613036" } }, + "Node": "SolNode68", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "652154aedc16ac2a8ca7ab5e" }, + "Region": 10, + "Seed": 13361, + "Activation": { "$date": { "$numberLong": "1696683182127" } }, + "Expiry": { "$date": { "$numberLong": "1696689317002" } }, + "Node": "SolNode141", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "652154aedc16ac2a8ca7ab5f" }, + "Region": 4, + "Seed": 56649, + "Activation": { "$date": { "$numberLong": "1696683182127" } }, + "Expiry": { "$date": { "$numberLong": "1696689278295" } }, + "Node": "SolNode30", + "MissionType": "MT_ARTIFACT", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "64fc946572c747766f98c759" }, - "Region": 2, - "Seed": 96443, - "Activation": { "$date": { "$numberLong": "1694274661443" } }, - "Expiry": { "$date": { "$numberLong": "1694279650731" } }, - "Node": "SolNode123", - "MissionType": "MT_SURVIVAL", + "_id": { "$oid": "652154aedc16ac2a8ca7ab60" }, + "Region": 3, + "Seed": 70447, + "Activation": { "$date": { "$numberLong": "1696683182127" } }, + "Expiry": { "$date": { "$numberLong": "1696689919097" } }, + "Node": "SolNode39", + "MissionType": "MT_EXCAVATE", "Modifier": "VoidT1", "Hard": true } ], "GlobalUpgrades": [], "FlashSales": [ - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 195, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1037,20 +982,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 35, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1079,20 +1010,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 80, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1108,7 +1025,33 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "StartDate": { "$date": { "$numberLong": "1661173200000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "StartDate": { "$date": { "$numberLong": "1662422400000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1116,7 +1059,21 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 260, + "PremiumOverride": 80, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 195, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -1135,6 +1092,20 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 35, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, @@ -1145,108 +1116,37 @@ "BogoGet": 0, "PremiumOverride": 70, "StartDate": { "$date": { "$numberLong": "1688216400000" } }, - "EndDate": { "$date": { "$numberLong": "1722171600000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1689267600000" } }, - "EndDate": { "$date": { "$numberLong": "1894406400000" } } + "EndDate": { "$date": { "$numberLong": "1719838800000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": true, "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, + "RegularOverride": 0, "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1689267600000" } }, - "EndDate": { "$date": { "$numberLong": "1894406400000" } } + "BogoBuy": 0, + "BogoGet": 0 }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1689267600000" } }, - "EndDate": { "$date": { "$numberLong": "1894406400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1689267600000" } }, - "EndDate": { "$date": { "$numberLong": "1894406400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItemNoLogo", + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 260, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1691085600000" } }, - "EndDate": { "$date": { "$numberLong": "1694368800000" } } + "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeAkjagaraStoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1691085600000" } }, - "EndDate": { "$date": { "$numberLong": "1694368800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRollers", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 75, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/WaterFightNoggleBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 240, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple", + "TypeName": "/Lotus/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1255,138 +1155,23 @@ "BogoGet": 0, "PremiumOverride": 0, "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } + "StartDate": { "$date": { "$numberLong": "1696266000000" } }, + "EndDate": { "$date": { "$numberLong": "1704038340000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } }, { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead", + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFChargerBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFEngineerBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFGruntBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFHealerBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFHeavyBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFHellionBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFSniperBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Events/WFTankBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "StartDate": { "$date": { "$numberLong": "1693062000000" } }, - "EndDate": { "$date": { "$numberLong": "1695654000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1695654000000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "StartDate": { "$date": { "$numberLong": "1693591200000" } }, - "EndDate": { "$date": { "$numberLong": "1696097400000" } } + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696266000000" } }, + "EndDate": { "$date": { "$numberLong": "1704038340000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItemNoLogo", @@ -1401,6 +1186,20 @@ "StartDate": { "$date": { "$numberLong": "1694109600000" } }, "EndDate": { "$date": { "$numberLong": "1697392800000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696266000000" } }, + "EndDate": { "$date": { "$numberLong": "1704038340000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItem", "ShowInMarket": true, @@ -1413,6 +1212,1320 @@ "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1694109600000" } }, "EndDate": { "$date": { "$numberLong": "1697392800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 97, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteRogueBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaxion", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGrinlok", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenJatKittag", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 131, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteDuellistBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenDragonNikana", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteStrikerBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBasmu", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBuzlok", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenDaikyu", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Festivities/PumpkinHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 65, + "RegularOverride": 0, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "StartDate": { "$date": { "$numberLong": "1696431600000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenAmprex", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenImperator", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenKunai", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackII", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 108, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGorgon", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenKronen", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackD", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 135, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenGlyphBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 65, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenArchSword", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBraton", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGalatine", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackC", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 131, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleB", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 65, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBoltor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenDualZoren", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundleB", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenShipSkinBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenAngstrum", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Halloween2021GlyphBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 65, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenCrpCircArmorPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 75, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenAkvasto", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaive", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGrakata", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGram", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AcolyteNoggleBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 160, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteControlBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteHeavyBobbleHead", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/Halloween2014Wings/Halloween2014ArmArmor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSoma", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSobek", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenMarelok", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSkana", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSarpa", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenOpticor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenNikana", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenOrthos", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenRegorAxeShield", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSilvaAndAegis", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSimulor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenNukor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenParis", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenScindo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSonicor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinHalloween", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGrakatas", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSpira", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenStradavar", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenVasto", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGremlins", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenTonkor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircC", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 45, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenGrnBannerScarf", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 75, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenErosionCape", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Dethcube", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016C", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016D", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CreepyClem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016B", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhostChibiWisp", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019FrankenCorpus", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Loid", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhoulGrave", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CheshireKavat", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Pumpkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircL", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016A", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019Werefested", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenFireFlyScarf", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 90, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenKyropteraScarf", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019SlimeLoki", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019TrickOrBalas", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Lotus", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Liset/LisetSkinHalloween", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Grineer", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696327200000" } }, + "EndDate": { "$date": { "$numberLong": "1893751200000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenLato", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696431600000" } }, + "EndDate": { "$date": { "$numberLong": "1698850800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + }, + { + "TypeName": "/Lotus/Powersuits/EntratiMech/NechroTech", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 15, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 315, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696528800000" } }, + "EndDate": { "$date": { "$numberLong": "1699984800000" } } } ], "InGameMarket": { @@ -1424,24 +2537,28 @@ "Icon": "popular", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/HeirloomPackC", + "/Lotus/Types/StoreItems/Packages/HeirloomPackB", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItem", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/PaxDuviricusItemsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", - "/Lotus/Types/StoreItems/Packages/DuvArmorBundle", - "/Lotus/Types/StoreItems/Packages/NyxDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/StoreItems/Powersuits/Runner/Runner", + "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", + "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", + "/Lotus/StoreItems/Upgrades/Skins/Necramech/TefilahIridosSkin", + "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/StoreItems/Upgrades/Skins/Effects/WerewolfEphemera", + "/Lotus/StoreItems/Powersuits/PaxDuviricus/PaxDuviricus", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", + "/Lotus/StoreItems/Powersuits/Runner/Runner", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/StoreItems/Powersuits/Hoplite/Hoplite", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/FormaPack", "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", - "/Lotus/Types/StoreItems/Packages/HeirloomPackB", + "/Lotus/Types/StoreItems/Packages/HeirloomPackC", "/Lotus/Types/StoreItems/Packages/HeirloomPackA" ] }, @@ -1451,18 +2568,28 @@ "Icon": "seasonal", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/WaterFightNoggleBundle", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple", - "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerRollers", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFChargerBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFEngineerBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFGruntBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFHealerBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFHeavyBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFHellionBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFSniperBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/Events/WFTankBobbleHead" + "/Lotus/Types/StoreItems/Packages/Halloween2021GlyphBundle", + "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleA", + "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleB", + "/Lotus/Types/StoreItems/Packages/HalloweenGlyphBundle", + "/Lotus/Types/StoreItems/Packages/HalloweenCrpCircArmorPack", + "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundleB", + "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackD", + "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundle", + "/Lotus/Types/StoreItems/Packages/HalloweenShipSkinBundle", + "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackC", + "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackII", + "/Lotus/Types/StoreItems/Packages/HalloweenSkinPack", + "/Lotus/Types/StoreItems/Packages/AcolyteNoggleBundle", + "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteControlBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteDuellistBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteHeavyBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteRogueBobbleHead", + "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteStrikerBobbleHead", + "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemA", + "/Lotus/StoreItems/Upgrades/Skins/Armor/Halloween2014Wings/Halloween2014ArmArmor", + "/Lotus/StoreItems/Upgrades/Skins/Festivities/PumpkinHead" ] }, { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "AddToMenu": true, "Items": [] }, @@ -1487,180 +2614,132 @@ }, "Invasions": [ { - "_id": { "$oid": "64f8b972d9f8d6cf2ea85bd5" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode187", - "Count": -43853, - "Goal": 48000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64ea31e9c944b9f79afe8af2" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 60360, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeBlade", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 628420, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1694022462449" } } - }, - { - "_id": { "$oid": "64fb844a946b383d0eb96cd2" }, + "_id": { "$oid": "651e7e958fda5fab4e371291" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode73", - "Count": -10807, - "Goal": 45000, + "Node": "SolNode203", + "Count": -27448, + "Goal": 35000, "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "64f8be23fd051b936b837337" }, + "ChainID": { "$oid": "651e7e958fda5fab4e371291" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 449614, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 83204, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 72972, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1694205723043" } } + "DefenderMissionInfo": { "seed": 98538, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1696555671101" } } }, { - "_id": { "$oid": "64fb844a946b383d0eb96cd3" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode73", - "Count": 0, - "Goal": 34000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64f8be23fd051b936b837337" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 700883, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 124652, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1694205951364" } } - }, - { - "_id": { "$oid": "64fa2bc1415d3572285be782" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode51", - "Count": -30036, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "64fa09c68dbc74cc8f0accd9" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 449009, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 451225, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1694116801490" } } - }, - { - "_id": { "$oid": "64fbd075137757a46cd1c4b1" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode36", - "Count": -46296, - "Goal": 46000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 547886, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 105144, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1694228471621" } } - }, - { - "_id": { "$oid": "64fbf5f50eb9ab2a8a53562b" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode113", - "Count": -46744, - "Goal": 46000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 83903, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 597436, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1694234101266" } } - }, - { - "_id": { "$oid": "64fbf5f50eb9ab2a8a53562a" }, + "_id": { "$oid": "651f9325075a068cd0ecbe07" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", "Node": "SolNode99", - "Count": -15715, + "Count": -30033, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "651f6ed16db8195ea8496bfa" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 762847, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 453335, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1696568101347" } } + }, + { + "_id": { "$oid": "651ffdc917ad73e3413cfbc8" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode189", + "Count": 1521, + "Goal": 32000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "651ffdc917ad73e3413cfbc8" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 929145, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 191135, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1696672604720" } } + }, + { + "_id": { "$oid": "65206f76253fd83039d19c87" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode51", + "Count": -16430, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, + "ChainID": { "$oid": "65203ab9be25c667328a84b3" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 27812, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 891396, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1694234101266" } } + "AttackerMissionInfo": { "seed": 164429, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 565564, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1696624502088" } } }, { - "_id": { "$oid": "64fc10e98221fcd4c1a587a7" }, + "_id": { "$oid": "652100c571e7e6375bf77242" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode16", - "Count": -35462, + "Node": "SolNode19", + "Count": -30998, + "Goal": 46000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "652100c571e7e6375bf77242" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 93951, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 53986, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1696666502568" } } + }, + { + "_id": { "$oid": "65212e795b7ac1a22134717c" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode50", + "Count": -17774, + "Goal": 42000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "652100c571e7e6375bf77242" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 603840, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 535326, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1696673401176" } } + }, + { + "_id": { "$oid": "65212e795b7ac1a22134717d" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode96", + "Count": -14030, "Goal": 35000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, + "Completed": false, + "ChainID": { "$oid": "652100c571e7e6375bf77242" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 864981, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 358650, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 20074, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1696673401176" } } + }, + { + "_id": { "$oid": "65213db5ff9cc6c8c5eaaf98" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode70", + "Count": -1209, + "Goal": 36000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "652100c571e7e6375bf77242" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 451620, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 408864, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1694241001201" } } - }, - { - "_id": { "$oid": "64fc227d9e8753e952b14d69" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode65", - "Count": -38276, - "Goal": 38000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "64fbd075137757a46cd1c4b1" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 589077, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 221180, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1694245501312" } } - }, - { - "_id": { "$oid": "64fc4929ffa1bce792985e7e" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode4", - "Count": -17814, - "Goal": 32000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64fc4929ffa1bce792985e7e" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 116859, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 122162, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1694261120383" } } - }, - { - "_id": { "$oid": "64fc7cb9d8c0399f53b10164" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode102", - "Count": -646, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "64fc4929ffa1bce792985e7e" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 394302, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 623371, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1694268601730" } } + "DefenderMissionInfo": { "seed": 732385, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1696677301247" } } } ], "HubEvents": [], @@ -1668,7 +2747,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9639694 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9677402 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1687,82 +2766,86 @@ "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1694178000000" } }, - "Expiry": { "$date": { "$numberLong": "1694350800000" } }, + "Activation": { "$date": { "$numberLong": "1696597200000" } }, + "Expiry": { "$date": { "$numberLong": "1696770000000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "MercuryHUB", + "Node": "PlutoHUB", "Manifest": [ - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/GaussSentinelMask", "PrimePrice": 450, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrismaShadePowerSuit", "PrimePrice": 500, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponSnipersConvertAmmoModExpert", "PrimePrice": 400, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosALArmor", "PrimePrice": 50, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosARArmor", "PrimePrice": 50, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosChestArmor", "PrimePrice": 125, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLLArmor", "PrimePrice": 65, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/VTEos/VTEosLRArmor", "PrimePrice": 65, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/PrismaArrow", "PrimePrice": 350, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/ClawCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPrecepts/PrimedRegen", "PrimePrice": 300, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/Expert/PrimedWeaponCritDamageMod", "PrimePrice": 400, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/EarpieceBaroC", "PrimePrice": 500, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrismaRazorScarf", "PrimePrice": 350, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Pistols/GrineerBulbousSMG/Prisma/PrismaTwinGremlinsWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Camo/DesertDirigaSkin", "PrimePrice": 225, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG", "PrimePrice": 650, "RegularPrice": 550000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationH", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/WeGameNewYearOxSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BoredTennoPoster", "PrimePrice": 90, "RegularPrice": 120000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemB", "PrimePrice": 200, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Leverian/NezhaLeverian/NezhaLeverianPolearm", "PrimePrice": 350, "RegularPrice": 325000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2022EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropCorpusBasilisk", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/LavosAlchemistWallpaper", "PrimePrice": 275, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 }, - { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 } + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/GaussSentinelWings", "PrimePrice": 400, "RegularPrice": 500000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTDinoSpikeScarf", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/PrismaMechHeadMask", "PrimePrice": 175, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaSkana", "PrimePrice": 510, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveOnSixKillsBuffSecondary", "PrimePrice": 300, "RegularPrice": 115000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader", "PrimePrice": 220, "RegularPrice": 400000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroArrow", "PrimePrice": 375, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaMachete", "PrimePrice": 400, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/CorruptedHeavyGunnerBall", "PrimePrice": 100, "RegularPrice": 40000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/BaroKavatSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/BaroWallpaper", "PrimePrice": 250, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KavatBust", "PrimePrice": 220, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationE", "PrimePrice": 100, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Archwing/Rifle/Expert/ArchwingRifleDamageAmountModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/TnShinaiSword/TnShinaiSwordSkin", "PrimePrice": 375, "RegularPrice": 280000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/HeartOfDeimosAlbumCoverPoster", "PrimePrice": 80, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Glass/GaraAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", "PrimePrice": 350, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", "PrimePrice": 350, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorHalloweenA", "PrimePrice": 400, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTHalloweenDarkSword", "PrimePrice": 320, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Halloween/HalloweenDread", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GrendelTreat", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } ] } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1694109600000" } }, + "Activation": { "$date": { "$numberLong": "1696528800000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVZephyrPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVZephyrChromaPrimeDualPack", "PrimePrice": 10 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostMagPrimeDualPack", "PrimePrice": 10, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVWukongPrimeSinglePack", "PrimePrice": 6 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMagPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVChromaPrimeSinglePack", "PrimePrice": 6 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostPrimeSinglePack", "PrimePrice": 6, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Powersuits/MonkeyKing/WukongPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeWukongSyandana", "PrimePrice": 2 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVWukongPrimeKubrowArmor", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/EphemeraPrimeA", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeZhuge/PrimeZhugeCrossbow", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeNinkondi/PrimeNikondi", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/YinYang/EquinoxPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeCapeEquinox", "PrimePrice": 2 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNarvarrPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeStradavar/PrimeStradavarGun", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Staff/TipedoPrime/TipedoPrimeWeapon", "PrimePrice": 2 }, + { + "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMagPrimeSinglePack", + "PrimePrice": 6, + "StartDate": { "$date": { "$numberLong": "1693072800000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } } + }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Tengu/ZephyrPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVCommodorePrimeSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTiborPrimeKavatArmor", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Tonfa/TonfaContestWinnerPrime/TonfaContestWinnerPrimeWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTiberon/PrimeTiberonRifle", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Dragon/ChromaPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVImugiPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeChromaCape", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/RubicoPrime/RubicoPrimeWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeGram/PrimeGram", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Powersuits/Frost/FrostPrime", "PrimePrice": 3, @@ -1823,6 +2906,8 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ZephyrPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ChromaPrimeBobbleHead", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/FrostPrimeBobbleHead", "PrimePrice": 1, @@ -1835,16 +2920,12 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EquinoxPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EquinoxPrimeNightBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EquinoxPrimeDayBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/WukongPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionWukongEquinoxVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionWukongEquinoxVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionWukongEquinoxVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionChromaZephyrVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionChromaZephyrVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultABronze", "RegularPrice": 1, @@ -1876,7 +2957,7 @@ "EndDate": { "$date": { "$numberLong": "1704081540000" } } } ], - "Expiry": { "$date": { "$numberLong": "1696528800000" } }, + "Expiry": { "$date": { "$numberLong": "1698948000000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -1949,94 +3030,99 @@ "PreviewHiddenUntil": { "$date": { "$numberLong": "1692900000000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1698948000000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1698948000000" } } } + { + "Expiry": { "$date": { "$numberLong": "1698948000000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1695319200000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVZephyrChromaPrimeDualPack" + }, + { "Expiry": { "$date": { "$numberLong": "1701975600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1697738400000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "64fc83c2f60a6ba8ef8254cd" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1694272801821" } }, - "Expiry": { "$date": { "$numberLong": "1694278201821" } }, + "_id": { "$oid": "652135810a89429fb9b47868" }, + "Node": "CrewBattleNode522", + "Activation": { "$date": { "$numberLong": "1696677601821" } }, + "Expiry": { "$date": { "$numberLong": "1696683001821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64fc83c2f60a6ba8ef8254d0" }, - "Node": "CrewBattleNode525", - "Activation": { "$date": { "$numberLong": "1694272801829" } }, - "Expiry": { "$date": { "$numberLong": "1694278201829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "64fc83c2f60a6ba8ef8254d2" }, - "Node": "CrewBattleNode542", - "Activation": { "$date": { "$numberLong": "1694272801834" } }, - "Expiry": { "$date": { "$numberLong": "1694278201834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64fc83c2f60a6ba8ef8254cf" }, - "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1694272801827" } }, - "Expiry": { "$date": { "$numberLong": "1694278201827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64fc83c2f60a6ba8ef8254ce" }, - "Node": "CrewBattleNode515", - "Activation": { "$date": { "$numberLong": "1694272801825" } }, - "Expiry": { "$date": { "$numberLong": "1694278201825" } }, + "_id": { "$oid": "652135810a89429fb9b47869" }, + "Node": "CrewBattleNode512", + "Activation": { "$date": { "$numberLong": "1696677601825" } }, + "Expiry": { "$date": { "$numberLong": "1696683001825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64fc83c2f60a6ba8ef8254d1" }, - "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1694272801832" } }, - "Expiry": { "$date": { "$numberLong": "1694278201832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64fc8d210ca36d1ffaeef64b" }, - "Node": "CrewBattleNode518", - "Activation": { "$date": { "$numberLong": "1694276401821" } }, - "Expiry": { "$date": { "$numberLong": "1694281801821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64fc8d210ca36d1ffaeef64d" }, + "_id": { "$oid": "652135810a89429fb9b4786a" }, "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1694276401827" } }, - "Expiry": { "$date": { "$numberLong": "1694281801827" } }, + "Activation": { "$date": { "$numberLong": "1696677601827" } }, + "Expiry": { "$date": { "$numberLong": "1696683001827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "64fc8d210ca36d1ffaeef64c" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1694276401825" } }, - "Expiry": { "$date": { "$numberLong": "1694281801825" } }, + "_id": { "$oid": "652135810a89429fb9b4786c" }, + "Node": "CrewBattleNode529", + "Activation": { "$date": { "$numberLong": "1696677601832" } }, + "Expiry": { "$date": { "$numberLong": "1696683001832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "652135810a89429fb9b4786b" }, + "Node": "CrewBattleNode525", + "Activation": { "$date": { "$numberLong": "1696677601829" } }, + "Expiry": { "$date": { "$numberLong": "1696683001829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "652135810a89429fb9b4786d" }, + "Node": "CrewBattleNode538", + "Activation": { "$date": { "$numberLong": "1696677601834" } }, + "Expiry": { "$date": { "$numberLong": "1696683001834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65213ee25a7b8c142419a133" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1696681201825" } }, + "Expiry": { "$date": { "$numberLong": "1696686601825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64fc8d210ca36d1ffaeef64f" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1694276401832" } }, - "Expiry": { "$date": { "$numberLong": "1694281801832" } }, + "_id": { "$oid": "65213ee25a7b8c142419a136" }, + "Node": "CrewBattleNode531", + "Activation": { "$date": { "$numberLong": "1696681201832" } }, + "Expiry": { "$date": { "$numberLong": "1696686601832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "64fc8d210ca36d1ffaeef650" }, - "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1694276401834" } }, - "Expiry": { "$date": { "$numberLong": "1694281801834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64fc8d210ca36d1ffaeef64e" }, + "_id": { "$oid": "65213ee25a7b8c142419a135" }, "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1694276401829" } }, - "Expiry": { "$date": { "$numberLong": "1694281801829" } }, + "Activation": { "$date": { "$numberLong": "1696681201829" } }, + "Expiry": { "$date": { "$numberLong": "1696686601829" } }, "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "65213ee25a7b8c142419a134" }, + "Node": "CrewBattleNode534", + "Activation": { "$date": { "$numberLong": "1696681201827" } }, + "Expiry": { "$date": { "$numberLong": "1696686601827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "65213ee25a7b8c142419a132" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1696681201821" } }, + "Expiry": { "$date": { "$numberLong": "1696686601821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65213ee25a7b8c142419a137" }, + "Node": "CrewBattleNode555", + "Activation": { "$date": { "$numberLong": "1696681201834" } }, + "Expiry": { "$date": { "$numberLong": "1696686601834" } }, + "ActiveMissionTier": "VoidT4" } ], "PrimeAccessAvailability": { "State": "PRIME2" }, @@ -2044,122 +3130,34 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Types/Items/Research/EnergyComponent", - "Activation": { "$date": { "$numberLong": "1694185200000" } }, - "Expiry": { "$date": { "$numberLong": "1694278800000" } }, - "Discount": 10, - "OriginalPrice": 10, - "SalePrice": 9, - "AmountTotal": 200, - "AmountSold": 200 + "StoreItem": "/Lotus/StoreItems/Powersuits/Sandman/Sandman", + "Activation": { "$date": { "$numberLong": "1696618800000" } }, + "Expiry": { "$date": { "$numberLong": "1696712400000" } }, + "Discount": 30, + "OriginalPrice": 225, + "SalePrice": 157, + "AmountTotal": 100, + "AmountSold": 76 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "64fb6955db75be25441e921e" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb6955db75be25441e921f" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb6955db75be25441e9222" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryEASY", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb6955db75be25441e9220" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDomination_MEDIUM", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb6955db75be25441e9225" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksMEDIUM", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb6955db75be25441e9224" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesEASY", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb6955db75be25441e9221" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeHARD", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb6955db75be25441e9223" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationHARD", - "startDate": { "$date": { "$numberLong": "1694198101608" } }, - "endDate": { "$date": { "$numberLong": "1694284501608" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "64fb750de88ba58e0e0435cd" }, + "_id": { "$oid": "652061658c2dd79e73e73cf3" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1694201101760" } }, - "endDate": { "$date": { "$numberLong": "1694805901760" } }, + "startDate": { "$date": { "$numberLong": "1696620901641" } }, + "endDate": { "$date": { "$numberLong": "1697225701641" } }, "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "64fb750de88ba58e0e0435ca" }, { "$oid": "64fb750de88ba58e0e0435cb" }, { "$oid": "64fb750de88ba58e0e0435cc" }], + "subChallenges": [{ "$oid": "652061658c2dd79e73e73cf0" }, { "$oid": "652061658c2dd79e73e73cf1" }, { "$oid": "652061658c2dd79e73e73cf2" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "64fb750de88ba58e0e0435cb" }, + "_id": { "$oid": "652061658c2dd79e73e73cf1" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1694201101760" } }, - "endDate": { "$date": { "$numberLong": "1694805901760" } }, + "startDate": { "$date": { "$numberLong": "1696620901641" } }, + "endDate": { "$date": { "$numberLong": "1697225701641" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2167,10 +3165,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "64fb750de88ba58e0e0435ca" }, + "_id": { "$oid": "652061658c2dd79e73e73cf0" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1694201101760" } }, - "endDate": { "$date": { "$numberLong": "1694805901760" } }, + "startDate": { "$date": { "$numberLong": "1696620901641" } }, + "endDate": { "$date": { "$numberLong": "1697225701641" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2178,35 +3176,122 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "64fb750de88ba58e0e0435cc" }, + "_id": { "$oid": "652061658c2dd79e73e73cf2" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1694201101760" } }, - "endDate": { "$date": { "$numberLong": "1694805901760" } }, + "startDate": { "$date": { "$numberLong": "1696620901641" } }, + "endDate": { "$date": { "$numberLong": "1697225701641" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b616" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b619" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerMEDIUM", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b618" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirEASY", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b617" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b61a" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirEASY", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b61b" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b61c" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "652064ea5b0ab9b5f0d7b61d" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsEASY", + "startDate": { "$date": { "$numberLong": "1696621802038" } }, + "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [44.900011952136666, 97.84921778251658, 0], + "ProjectPct": [63.45097138274486, 3.1605555823473916, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Ivara", "Inaros", "Titania"] }, - { "Category": "EXC_HARD", "Choices": ["Zylok", "Sibear", "Dread", "Despair", "Hate"] } + { "Category": "EXC_NORMAL", "Choices": ["Excalibur", "Trinity", "Ember"] }, + { "Category": "EXC_HARD", "Choices": ["Lex", "Magistar", "Boltor", "Bronco", "CeramicDagger"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "535d438906c56f428386bfcd" }, "Name": "Elusive Dawn", "Tier": 1, "Emblem": true, "AllianceId": { "$oid": "5b81e30157904a79f92c09fa" } }, - { "_id": { "$oid": "62fad054e80609cf020f1b19" }, "Name": "Qian.Kun", "Tier": 2, "Emblem": true }, - { "_id": { "$oid": "54e44a5006c56f7eab0d5aa9" }, "Name": "Violet Church", "Tier": 3, "AllianceId": { "$oid": "56c44d0b08c56f5c367b4665" }, "Emblem": true }, - { "_id": { "$oid": "5d2467533f8d4a43ec30ae0d" }, "Name": "Castle Dimitrescu", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "62effbff16d15f746c04fe87" } }, - { "_id": { "$oid": "63b6cea9135de2e01403b579" }, "Name": "Dreadnova Galleon", "Tier": 5, "Emblem": true }, + { "_id": { "$oid": "62e501a21c98c2e86f0ca127" }, "Name": "Rise again", "Tier": 2, "Emblem": true, "AllianceId": { "$oid": "64aeb5c2e489fe78a90ea84d" } }, + { "_id": { "$oid": "5ad6ae822183db51113cad5a" }, "Name": "Ascension of Immortals", "Tier": 3, "Emblem": true, "AllianceId": { "$oid": "5b81e30157904a79f92c09fa" } }, + { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz", "Tier": 4, "Emblem": true }, + { "_id": { "$oid": "5f87e86562bebb2d216bce45" }, "Name": "The windy city", "Tier": 5, "Emblem": true }, { "_id": { "$oid": "559bb99d06c56f888a4b2f44" }, "Name": "--UMBRA--Lua Lycans", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "6365589e89dc6b94480fbb06" } } ], "SeasonInfo": { @@ -2218,69 +3303,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100160000000000000221" }, + "_id": { "$oid": "001100200000000000000277" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1694044800000" } }, - "Expiry": { "$date": { "$numberLong": "1694304000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyLiquidation" + "Activation": { "$date": { "$numberLong": "1696464000000" } }, + "Expiry": { "$date": { "$numberLong": "1696723200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTransmuteMods" }, { - "_id": { "$oid": "001100160000000000000222" }, + "_id": { "$oid": "001100200000000000000278" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1694131200000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithCorrosive" + "Activation": { "$date": { "$numberLong": "1696550400000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyThePersonalTouch" }, { - "_id": { "$oid": "001100160000000000000223" }, + "_id": { "$oid": "001100200000000000000279" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1694217600000" } }, - "Expiry": { "$date": { "$numberLong": "1694476800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemies" + "Activation": { "$date": { "$numberLong": "1696636800000" } }, + "Expiry": { "$date": { "$numberLong": "1696896000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyDeathFromAbove" }, { - "_id": { "$oid": "001100160000000000000211" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklySabotageCaches" + "_id": { "$oid": "001100200000000000000267" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyIsolationBounties" }, { - "_id": { "$oid": "001100160000000000000212" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPickUpRareMods" + "_id": { "$oid": "001100200000000000000268" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteTreasures" }, { - "_id": { "$oid": "001100160000000000000213" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyZarimanBountyHunter" + "_id": { "$oid": "001100200000000000000269" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEnemies" }, { - "_id": { "$oid": "001100160000000000000214" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSabotage" + "_id": { "$oid": "001100200000000000000270" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteCapture" }, { - "_id": { "$oid": "001100160000000000000215" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteVenusRace" + "_id": { "$oid": "001100200000000000000271" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillArchgunEnemies" }, { - "_id": { "$oid": "001100160000000000000216" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteSanctuaryOnslaught" + "_id": { "$oid": "001100200000000000000272" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardTheManyMadeWhole" }, { - "_id": { "$oid": "001100160000000000000217" }, - "Activation": { "$date": { "$numberLong": "1693785600000" } }, - "Expiry": { "$date": { "$numberLong": "1694390400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCollectUniqueResources" + "_id": { "$oid": "001100200000000000000273" }, + "Activation": { "$date": { "$numberLong": "1696204800000" } }, + "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillExploiterOrb" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":550}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":554}" } -- 2.47.2 From e4fcdfc84a40c65ba80e7f2b47288308519af13a Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 5 Nov 2023 11:40:55 +0100 Subject: [PATCH 046/522] update 34.0.6 (#80) --- config.json | 8 +- static/fixed_responses/worldState.json | 4104 ++++++++++-------------- 2 files changed, 1757 insertions(+), 2355 deletions(-) diff --git a/config.json b/config.json index 259f8867..eb573f27 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.09.12.09.10/aajswBESn+YL+VyL6y03zA", - "matchmakingBuildId": "5359904157077190191", - "version": "33.6.9", - "worldSeed": "n/lzs7WoAggi68FH+pYiDTk6o5rh7XhPQpfXg23J6H/8jfxCMG5XvYiiJwav3ibvkHwt30aZFNEcGm0w5tVBytUr/uFW/1Os8uytT4vB+JdIwQWRBWsiRmIbd5M+Td7HYk6C77HnAwhFHcO+UpsOGSmrkmgoxZRV9y4Obs9Y5nDl/X5xM/iNSRJT7BSh7fdG+EOuMeBSyKQBTeyetfrCDoP0+CvjQh6dmFOUcWMOjzGLuDem2de4GpDV/TGGbY/+CO6gV7JY/vW8uhyrjACP4FF2Dy/KnqOvxRIRdLdwCZ1rZARgTbsLfWO/k+83B1tE2Dfb8jnGTE2L9k9OEs9vZg==", + "buildLabel": "2023.10.26.09.51/140Z1pfbLIMU884jpJRytQ", + "matchmakingBuildId": "3526996083628366914", + "version": "34.0.6", + "worldSeed": "GLX2zk5TmPxaGkLJnfKSkxsg2FBBsQ0OsbI/4CCPldA9jZGLbFrjLl2jkIH9jVMibBzAxVzvuJ97p0UWC6EL/pcBr1X3BzsUffpDVqkFJs5tjwJRvdP5LzwseR5abaBhZqRoZI44ibYLE/kckut2A73QujEynr9aMPkmsoaT87CbVgrIDGBOE0kI/VAzkxfiI50WY/qtiJT61HiSRooGl+gLgBWdisMCJGBVFPlcgl2RYy9hnYIbl3vR69phzn5T6uRZGk7a+jIh8HLoh/CONUcYSkM0azt9BVQBnA2Wzf0DwfCm1/+FN7kaszsXZLWxoH/ne8HbL9aHcqPar2Kx9w==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 99de65b2..357ea3e5 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "n/lzs7WoAggi68FH+pYiDTk6o5rh7XhPQpfXg23J6H/8jfxCMG5XvYiiJwav3ibvkHwt30aZFNEcGm0w5tVBytUr/uFW/1Os8uytT4vB+JdIwQWRBWsiRmIbd5M+Td7HYk6C77HnAwhFHcO+UpsOGSmrkmgoxZRV9y4Obs9Y5nDl/X5xM/iNSRJT7BSh7fdG+EOuMeBSyKQBTeyetfrCDoP0+CvjQh6dmFOUcWMOjzGLuDem2de4GpDV/TGGbY/+CO6gV7JY/vW8uhyrjACP4FF2Dy/KnqOvxRIRdLdwCZ1rZARgTbsLfWO/k+83B1tE2Dfb8jnGTE2L9k9OEs9vZg==", + "WorldSeed": "GLX2zk5TmPxaGkLJnfKSkxsg2FBBsQ0OsbI/4CCPldA9jZGLbFrjLl2jkIH9jVMibBzAxVzvuJ97p0UWC6EL/pcBr1X3BzsUffpDVqkFJs5tjwJRvdP5LzwseR5abaBhZqRoZI44ibYLE/kckut2A73QujEynr9aMPkmsoaT87CbVgrIDGBOE0kI/VAzkxfiI50WY/qtiJT61HiSRooGl+gLgBWdisMCJGBVFPlcgl2RYy9hnYIbl3vR69phzn5T6uRZGk7a+jIh8HLoh/CONUcYSkM0azt9BVQBnA2Wzf0DwfCm1/+FN7kaszsXZLWxoH/ne8HbL9aHcqPar2Kx9w==", "Version": 10, - "MobileVersion": "4.15.16.0", - "BuildLabel": "2023.09.12.09.10/aajswBESn+YL+VyL6y03zA", - "Time": 1696683264, + "MobileVersion": "4.15.17.0", + "BuildLabel": "2023.10.26.09.51/140Z1pfbLIMU884jpJRytQ", + "Time": 1698925971, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -39,48 +39,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64ea3eea8df44dcb460a8564" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Heirloom Collections Now Available" }, - { "LanguageCode": "fr", "Message": "Collections Héritage disponibles maintenant" }, - { "LanguageCode": "it", "Message": "Le Prestigiose Collezioni Heirloom sono Ora Disponibili" }, - { "LanguageCode": "de", "Message": "Renommierte Heirloom-Kollektionen sind jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "Las prestigiosas colecciones Legado ya están disponibles" }, - { "LanguageCode": "pt", "Message": "As prestigiosas Coleções do Legado já estão disponíveis" }, - { "LanguageCode": "ru", "Message": "Престижные коллекции «Наследие» теперь доступны" }, - { "LanguageCode": "pl", "Message": "Prestiżowe Kolekcje Pamiątkowe są już dostępne" }, - { "LanguageCode": "uk", "Message": "Престижні колекції серії «Спадок» уже доступні" }, - { "LanguageCode": "tr", "Message": "Prestijli Heirloom Koleksiyonları Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "限定Heirloomコレクションが登場" }, - { "LanguageCode": "zh", "Message": "著名的传家宝组合包现已登场" }, - { "LanguageCode": "ko", "Message": "품격 넘치는 에어룸 컬렉션을 지금 만나보세요" }, - { "LanguageCode": "tc", "Message": "著名獨家祖傳組合包現已登場" } - ], - "Prop": "https://www.warframe.com/heirloom?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-HeirloomPackLaunch", - "Date": { "$date": { "$numberLong": "1693072740000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/e192146c38db2ff066038d0f7c29804e.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64eaadcefca369eee60e01fa" }, - "Messages": [{ "LanguageCode": "en", "Message": "Watch the Full TennoLive Demo!" }], - "Prop": "https://www.youtube.com/watch?v=EZEevs_RSPw?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-WatchtheFullTennoLiveDemo", - "Date": { "$date": { "$numberLong": "1693101240000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/5bfdf272bdb52e0ec103206919671b6a_800x450.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64eaae440d919f8a69068598" }, - "Messages": [{ "LanguageCode": "en", "Message": "All the reveals from TennoCon 2023" }], - "Prop": "https://www.warframe.com/news/tennocon-2023-recap?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-08-TennoConRecap", - "Date": { "$date": { "$numberLong": "1693101540000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/7a6ff188d098ff16289abf4b73e727f_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64ecb4895cc1d9f6570ad996" }, "Messages": [{ "LanguageCode": "fr", "Message": "Résumé TennoCon 2023 - version FR" }], @@ -91,15 +49,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64ef93d6d8ca7f26c910082d" }, - "Messages": [{ "LanguageCode": "en", "Message": "PSA: Heirloom Collection Platinum Changes & Lessons" }], - "Prop": "https://forums.warframe.com/topic/1364919-psa-heirloom-collection-platinum-changes-lessons/", - "Date": { "$date": { "$numberLong": "1693422480000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/e192146c38db2ff066038d0f7c29804e.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64f0cc64e65af842c407f41d" }, "Messages": [{ "LanguageCode": "ko", "Message": "텐노콘 2023 요약" }], @@ -109,84 +58,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65009b0f9e8eb1d26d051757" }, - "Messages": [{ "LanguageCode": "en", "Message": "Echoes of Duviri: Hotfix 33.6.9" }], - "Prop": "https://www.warframe.com/updates/pc/33-6-9", - "Date": { "$date": { "$numberLong": "1694538420000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "650343db094c9ff60706b92d" }, - "Messages": [{ "LanguageCode": "es", "Message": "Ecos de Duviri: Revisión 33.6.9" }], - "Prop": "https://forums.warframe.com/topic/1366027-ecos-de-duviri-revisi%C3%B3n-3369/", - "Date": { "$date": { "$numberLong": "1694709120000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65089123cd2131593b02912d" }, - "Messages": [{ "LanguageCode": "en", "Message": "PSA: Abyss of Dagath Development & Hotfixes" }], - "Prop": "https://forums.warframe.com/topic/1366274-update-abyss-of-dagath-development/", - "Date": { "$date": { "$numberLong": "1695060180000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6515cfa2f8dbeabcc6011c08" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Abyss of Dagath coming October 18" }, - { "LanguageCode": "fr", "Message": "Les Abysses de Dagath - dès le 18 octobre" }, - { "LanguageCode": "it", "Message": "Abisso di Dagath - in arrivo a Ottobre 18" }, - { "LanguageCode": "de", "Message": "Abgrund von Dagath' erscheint am 18. Oktober" }, - { "LanguageCode": "es", "Message": "«Abismo de Dagath» llegará el 18 de octubre" }, - { "LanguageCode": "pt", "Message": "O Abismo de Dagath chegará no dia 18 de outubro" }, - { "LanguageCode": "ru", "Message": "«Бездна Дагас» выйдет в октябре 18 года" }, - { "LanguageCode": "pl", "Message": "Otchłań Dagath przybywa w październiku 18" }, - { "LanguageCode": "uk", "Message": "«Безодня Даґат» з’явиться 18 жовтня" }, - { "LanguageCode": "tr", "Message": "Abyss of Dagath, 18 Ekim'de Sizlerle" }, - { "LanguageCode": "ja", "Message": "アップデート「Dagathの深淵」が10月19日に実装" }, - { "LanguageCode": "zh", "Message": "《Dagath 之深渊》将于美东夏令时间 10 月 18 日推出" }, - { "LanguageCode": "ko", "Message": "다가스의 나락이 북미 시각 10월 18일에 찾아옵니다" }, - { "LanguageCode": "tc", "Message": "《Dagath 的深淵》將於 10 月 18 日登場" } - ], - "Prop": "https://www.warframe.com/news/abyss-of-dagath?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-09-AbyssofDagathDateAnnounceDevstreamIGN", - "Date": { "$date": { "$numberLong": "1695928020000" } }, - "ImageUrl": "https://warframe-web-assets-dev.nyc3.cdn.digitaloceanspaces.com/uploads/ba0b484c4e89584bb8f673298eada2b9.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6516e4e5f9c31fbd8607a920" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Devstream 173" }], - "Prop": "https://forums.warframe.com/topic/1366847-devstream-173-r%C3%A9sum%C3%A9-fr/", - "Date": { "$date": { "$numberLong": "1695999000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fd5642ba41bbcf0ef9b720a59f8224a4_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "651afeea40db3e48bf021bf0" }, - "Messages": [{ "LanguageCode": "en", "Message": "QTCC Charity Stream & Twitch Drop Schedule: Oct 2-8" }], - "Prop": "https://forums.warframe.com/topic/1367083-qtcc-community-fundraising-streams-drops-oct-2-8/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-QTCC-Community-Streams-02", - "Date": { "$date": { "$numberLong": "1696267920000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "651b1852fedccf655d0af1df" }, - "Messages": [{ "LanguageCode": "ja", "Message": "10月2日~10月8日のQTCC配信スケジュール" }], - "Prop": "https://bit.ly/46bT60l", - "Date": { "$date": { "$numberLong": "1696274340000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.png.b692bbc659db9c8aedebc142bdb2d47e.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "651b20dc850a25e4620d227a" }, "Messages": [{ "LanguageCode": "tr", "Message": "Warframe Evreni 101" }], @@ -196,57 +67,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "651b246a1ce791085a06540b" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Streams QTCC : 2 - 8 Oct." }], - "Prop": "https://forums.warframe.com/topic/1367104-streams-de-collectes-de-fonds-qtcc-et-drops-2-8-oct/", - "Date": { "$date": { "$numberLong": "1696277520000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.thumb.png.01d31c3fab64979e127739fea4b1ef1a.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "651b265a030cbbcda60b0e39" }, - "Messages": [{ "LanguageCode": "fr", "Message": "[Ateliers des Devs] Index" }], - "Prop": "https://forums.warframe.com/topic/1367105-ateliers-des-devs-index-pour-les-abysses-de-dagath/", - "Date": { "$date": { "$numberLong": "1696278060000" } }, - "ImageUrl": "https://warframe-web-assets-dev.nyc3.cdn.digitaloceanspaces.com/uploads/ba0b484c4e89584bb8f673298eada2b9.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "651c54ed4ffd527d360cf566" }, - "Messages": [{ "LanguageCode": "es", "Message": "Streams y Twitch Drops de QTCC: 2 al 8 de octubre" }], - "Prop": "https://forums.warframe.com/topic/1367181-streams-y-twitch-drops-de-qtcc-2-al-8-de-octubre/", - "Date": { "$date": { "$numberLong": "1696355460000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "651d8b1f850a6f2d2f07afb0" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Earn Nights of Naberus Rewards!" }, - { "LanguageCode": "fr", "Message": "Gagnez des récompenses Nuits de Naberus !" }, - { "LanguageCode": "it", "Message": "Ottieni le Ricompense Notti di Naberus!" }, - { "LanguageCode": "de", "Message": "Verdient Naberus Nacht Belohnungen!" }, - { "LanguageCode": "es", "Message": "¡Obtén las recompensas de las Noches de Naberus!" }, - { "LanguageCode": "pt", "Message": "Obtenha Recompensas das Noites de Naberus!" }, - { "LanguageCode": "ru", "Message": "Получите новые награды в ночь Наберуса!" }, - { "LanguageCode": "pl", "Message": "Zdobądź nagrody za Noce Naberusa!" }, - { "LanguageCode": "uk", "Message": "Заробляйте нагороди Набера!" }, - { "LanguageCode": "tr", "Message": "Naberus Geceleri Ödüllerini Kazan!" }, - { "LanguageCode": "ja", "Message": "Naberusの夜で報酬をゲットしよう!" }, - { "LanguageCode": "zh", "Message": "获取全新的纳贝流士奖励!" }, - { "LanguageCode": "ko", "Message": "나베루스의 밤 보상을 획득해 보세요!" }, - { "LanguageCode": "tc", "Message": "賺取全新《納貝流士之夜》獎勵!" } - ], - "Prop": "https://www.warframe.com/news/nights-of-naberus-returns-en?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-NightsofNaberusReturnsLaunchIGN", - "Date": { "$date": { "$numberLong": "1696434660000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/06a647f96cc6f33fb6c95d712d0710a4_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "651efb8630eb1e374606be0e" }, "Messages": [ @@ -273,300 +93,601 @@ "MobileOnly": false }, { - "_id": { "$oid": "65207a558aee4ed86b055e48" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:システム変更とQOL全般" }], - "Prop": "https://bit.ly/45hKQL7", - "Date": { "$date": { "$numberLong": "1696627200000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "_id": { "$oid": "652ff3fd0b4e20294e085807" }, + "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Update 34" }], + "Prop": "https://www.warframe.com/updates/pc/34-0-0", + "Date": { "$date": { "$numberLong": "1697640840000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "652ff61922ce61c81d09480e" }, + "Messages": [{ "LanguageCode": "ja", "Message": "アップデート34:Dagathの深淵 パッチノート" }], + "Prop": "https://bit.ly/3S3XSsA", + "Date": { "$date": { "$numberLong": "1697641860000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "65207a858aee4ed86b055e49" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:アクセシビリティとHUD改善" }], - "Prop": "https://bit.ly/3rz7FfJ", - "Date": { "$date": { "$numberLong": "1696627260000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "_id": { "$oid": "652ff6526c4b32386f0875bb" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Riven性質の変動:2023年10月版" }], + "Prop": "https://bit.ly/46TQ5lp", + "Date": { "$date": { "$numberLong": "1697641980000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "65207ae48aee4ed86b055e4b" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:コンパニオン改変" }], - "Prop": "https://bit.ly/48F9uZ9", - "Date": { "$date": { "$numberLong": "1696627380000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "_id": { "$oid": "652ff6746c4b32386f0875c7" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Dagathの深淵:フィードバックスレッド" }], + "Prop": "https://bit.ly/46WpHaO", + "Date": { "$date": { "$numberLong": "1697642040000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "65207b06fc6cb2d7e20bdd11" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:新規プレイヤーの道のり" }], - "Prop": "https://bit.ly/3tdNdBh", - "Date": { "$date": { "$numberLong": "1696627380000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "_id": { "$oid": "652ff9fb6c4b32386f0875fa" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj : Dagath" }], + "Prop": "https://forums.warframe.com/topic/1368162-les-abysses-de-dagath-mise-%C3%A0-jour-34/", + "Date": { "$date": { "$numberLong": "1697642940000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/370d04da5187b9e07b99f850bccfb270.png", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "65207b35f6614bf45c0a6660" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Hydroidのリワーク" }], - "Prop": "https://bit.ly/3PLDqdx", - "Date": { "$date": { "$numberLong": "1696627440000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "_id": { "$oid": "652ffa87514198765c053540" }, + "Messages": [{ "LanguageCode": "pl", "Message": "OTCHŁAŃ DAGATH: AKTUALIZACJA 34 - NOTKI" }], + "Prop": "https://forums.warframe.com/topic/1368142-otch%C5%82a%C5%84-dagath-aktualizacja-34/", + "Date": { "$date": { "$numberLong": "1697643060000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/370d04da5187b9e07b99f850bccfb270.png", + "Priority": true, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "652ffe7ced7a6da19c039ccf" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Abyss of Dagath Available Now" }, + { "LanguageCode": "fr", "Message": "Les Abysses de Dagath sont maintenant disponibles" }, + { "LanguageCode": "it", "Message": "Abisso di Dagath - Ora Disponibile" }, + { "LanguageCode": "de", "Message": "Abgrund von Dagath ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "«Abismo de Dagath» ya está disponible" }, + { "LanguageCode": "pt", "Message": "O Abismo de Dagath já está disponível" }, + { "LanguageCode": "ru", "Message": "Бездна Дагаc уже доступна" }, + { "LanguageCode": "pl", "Message": "Otchłań Dagath jest już dostępna" }, + { "LanguageCode": "uk", "Message": "«Безодня Даґат» уже доступна" }, + { "LanguageCode": "tr", "Message": "Abyss of Dagath Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "アップデート「Dagathの深淵」が登場" }, + { "LanguageCode": "zh", "Message": "《Dagath 之深渊》现已推出" }, + { "LanguageCode": "ko", "Message": "다가스의 나락을 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "《Dagath 的深淵》現已登場" } + ], + "Prop": "https://www.warframe.com/news/abyss-of-dagath?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-AbyssofDagathLaunchIGN", + "Date": { "$date": { "$numberLong": "1697643780000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/901ae8af74582f796d0b744867def81e.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "653001a6be47fe5645028add" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Grendel Prime Access is available now!" }, + { "LanguageCode": "fr", "Message": "Le Prime Access Grendel Prime est maintenant disponible !" }, + { "LanguageCode": "it", "Message": "L'Accesso Grendel Prime è ora disponibile!" }, + { "LanguageCode": "de", "Message": "Grendel Prime Access ist jetzt verfügbar!" }, + { "LanguageCode": "es", "Message": "¡Prime Access de Grendel ya está disponible!" }, + { "LanguageCode": "pt", "Message": "O Prime Access do Grendel Prime já está disponível!" }, + { "LanguageCode": "ru", "Message": "Доступ Гренделя Прайм доступен уже сейчас!" }, + { "LanguageCode": "pl", "Message": "Grendel Prime Access już dostępny!" }, + { "LanguageCode": "tr", "Message": "Grendel Prime Access şimdi sizlerle!" }, + { "LanguageCode": "ja", "Message": "Grendel Prime Accessが登場!" }, + { "LanguageCode": "zh", "Message": "Grendel Prime Access 现已登场!" }, + { "LanguageCode": "ko", "Message": "그렌델 프라임 액세스를 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "Grendel Prime Access 現已登場!" } + ], + "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-GrendelPrimeLaunchIGN", + "Date": { "$date": { "$numberLong": "1697644500000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fc9e09a4ca79eddd55383762476c71e1_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65300215ed7a6da19c039ec4" }, + "Messages": [{ "LanguageCode": "ko", "Message": "다가스의 나락: 업데이트 34" }], + "Prop": "", + "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1368181-%EB%8B%A4%EA%B0%80%EC%8A%A4%EC%9D%98-%EB%82%98%EB%9D%BD-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-34/" }], + "Date": { "$date": { "$numberLong": "1697644980000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "653018c12a039099d3075b8a" }, + "Messages": [{ "LanguageCode": "es", "Message": "Notas de Actualización 34: Abismo de Dagath" }], + "Prop": "https://forums.warframe.com/topic/1368242-abismo-de-dagath-actualizaci%C3%B3n-34/", + "Date": { "$date": { "$numberLong": "1697650740000" } }, "Priority": false, "MobileOnly": false, "Community": true + }, + { + "_id": { "$oid": "65302a44bd9493463b0b49fe" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[Bugs] Les Abysses de Dagath" }], + "Prop": "https://forums.warframe.com/topic/1368262-bugs-les-abysses-de-dagath/", + "Date": { "$date": { "$numberLong": "1697655300000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/370d04da5187b9e07b99f850bccfb270.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65303836b3f0d70f280d629b" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Listen to the Warframe Soundtracks!" }, + { "LanguageCode": "fr", "Message": "Écoutez les Bandes originales de Warframe !" }, + { "LanguageCode": "it", "Message": "Ascolta le Colonne Sonore di Warframe!" }, + { "LanguageCode": "de", "Message": "Hört euch die Warframe Soundtracks an!" }, + { "LanguageCode": "es", "Message": "¡Escucha las bandas sonoras de Warframe!" }, + { "LanguageCode": "pt", "Message": "Ouça as Trilhas Sonoras do Warframe!" }, + { "LanguageCode": "ru", "Message": "Слушайте саундтреки Warframe!" }, + { "LanguageCode": "pl", "Message": "Posłuchajcie Ścieżek dźwiękowych Warframe!" }, + { "LanguageCode": "uk", "Message": "Слухайте саундтреки Warframe!" }, + { "LanguageCode": "tr", "Message": "Warframe Oyun Müziklerini dinle!" }, + { "LanguageCode": "ja", "Message": "Warframeサウンドトラックを聴こう!" }, + { "LanguageCode": "zh", "Message": "聆听 Warframe 官方原声带!" }, + { "LanguageCode": "ko", "Message": "워프레임 사운드트랙을 들어보세요!" }, + { "LanguageCode": "tc", "Message": "享受 Warframe 原聲音樂!" } + ], + "Prop": "https://www.warframe.com/news/warframe-soundtracks-available-now?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-WarframeSoundtrackDigitalRelease", + "Date": { "$date": { "$numberLong": "1697658660000" } }, + "EventStartDate": { "$date": { "$numberLong": "1697655600000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/091bf394ece5c739cb6facdb6d83103a_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "653175ab3a6e2143b50a9243" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第174回のお知らせ" }], + "Prop": "https://bit.ly/492XG2Q", + "Date": { "$date": { "$numberLong": "1697740140000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/3658798f18f3bd5b3e086c3b69b57e76.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6532efb2a6c68d36aa0b35ea" }, + "Messages": [{ "LanguageCode": "es", "Message": "Abismo de Dagath: Revisión 34.0.2 + 34.0.3" }], + "Prop": "https://forums.warframe.com/topic/1369074-abismo-de-dagath-revisi%C3%B3n-3402-3403/", + "Date": { "$date": { "$numberLong": "1697833260000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65368b9aa7625caedf0d6715" }, + "Messages": [{ "LanguageCode": "tr", "Message": "2023 Ürpertici Dojo Yarışması [Dagath'ın Çukuru]" }], + "Prop": "https://forums.warframe.com/topic/1369565-2023-%C3%BCrpertici-dojo-yar%C4%B1%C5%9Fmas%C4%B1-dagath%C4%B1n-%C3%A7ukuru/", + "Date": { "$date": { "$numberLong": "1698073320000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_09/Warframe5930.jpg.b61e0e1cb6c4a1dfa9294f94d328779e.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65382320239dbdb44b06ec93" }, + "Messages": [{ "LanguageCode": "es", "Message": "Abismo de Dagath: Revisión 34.0.4" }], + "Prop": "https://forums.warframe.com/topic/1369754-abismo-de-dagath-revisi%C3%B3n-3404/", + "Date": { "$date": { "$numberLong": "1698174120000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6538302d6e58888cc6051068" }, + "Messages": [{ "LanguageCode": "es", "Message": "YA DISPONIBLE: Juego entre plataformas de Clanes/Alianzas y amigos" }], + "Prop": "https://forums.warframe.com/topic/1369774-ya-disponible-juego-entre-plataformas-de-clanesalianzas-y-amigos/", + "Date": { "$date": { "$numberLong": "1698181140000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "653bddb39e4cb1318200a5b8" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Cross Platform Clans and Friends" }, + { "LanguageCode": "fr", "Message": "Clans et amis Cross-Platform" }, + { "LanguageCode": "it", "Message": "Clan e Amici Multipiattaforma" }, + { "LanguageCode": "de", "Message": "Cross-Platform-Clans & -Freunde" }, + { "LanguageCode": "es", "Message": "Clanes y amigos entre plataformas" }, + { "LanguageCode": "pt", "Message": "Clãs e Amigos Multiplataforma" }, + { "LanguageCode": "ru", "Message": "Кроссплатформенные кланы и друзья" }, + { "LanguageCode": "pl", "Message": "Klany międzyplatformowe i Przyjaciele" }, + { "LanguageCode": "uk", "Message": "Міжплатформні клани та друзі" }, + { "LanguageCode": "tr", "Message": "Çapraz Platform Klanları ve Arkadaşları" }, + { "LanguageCode": "ja", "Message": "クロスプラットフォーム:クランとフレンド" }, + { "LanguageCode": "ko", "Message": "크로스 플랫폼 클랜 및 친구 추가" } + ], + "Prop": "https://www.warframe.com/news/cross-platform-clans-and-friends?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-CrossPlayClanandFriendsIGN", + "Date": { "$date": { "$numberLong": "1698422040000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e5e7600d9b43d8707806c53d6bba3255_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "653d20bdcc79da182b09737d" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #174" }], + "Prop": "https://forums.warframe.com/topic/1370288-r%C3%A9sum%C3%A9-devstream-174-version-fr/", + "Date": { "$date": { "$numberLong": "1698504600000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.png.64e11d3e55c3f0a96a845e0147162f20.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "653fff02f138560d48060da3" }, + "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Hotfix 33.0.6" }], + "Prop": "https://www.warframe.com/updates/pc/34-0-6", + "Date": { "$date": { "$numberLong": "1698692280000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "654019ce3e71d844f10f4e0b" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Dullahan Mask + Dog Days Ephemera Removal on Nov 1st!" }], + "Prop": "https://forums.warframe.com/topic/1370661-psa-dullahan-mask-and-dog-days-ephemera-removal-nov-1-3pm-et/", + "Date": { "$date": { "$numberLong": "1698699660000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65426158e60609918a08b0e7" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Movember 2023 is live!" }, + { "LanguageCode": "fr", "Message": "Movember 2023 a commencé !" }, + { "LanguageCode": "it", "Message": "Movember 2023 è ora disponibile!" }, + { "LanguageCode": "de", "Message": "Movember 2023 ist live!" }, + { "LanguageCode": "es", "Message": "¡Comenzó Movember 2023!" }, + { "LanguageCode": "pt", "Message": "O Novembro Azul 2023 (Movember) já começou!" }, + { "LanguageCode": "ru", "Message": "Усабрь 2023 уже пришёл!" }, + { "LanguageCode": "pl", "Message": "Movember 2023 już trwa!" }, + { "LanguageCode": "uk", "Message": "«Вусопад 2023» вже в грі!" }, + { "LanguageCode": "tr", "Message": "Movember 2023 şimdi sizlerle!" }, + { "LanguageCode": "ja", "Message": "モーベンバー2023開催!" }, + { "LanguageCode": "zh", "Message": "2023 胡子月大赛开始啦!" }, + { "LanguageCode": "ko", "Message": "모벰버 2023이 시작되었습니다!" }, + { "LanguageCode": "tc", "Message": "鬍子月 2023 登場了!" } + ], + "Prop": "https://www.warframe.com/news/movember-2023-in-warframe?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Movember2023EventLaunch", + "Date": { "$date": { "$numberLong": "1698847200000" } }, + "EventStartDate": { "$date": { "$numberLong": "1698847200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/7f90b8f98c9530584e016641fa0360b0_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65427c92519487fc0c0f7877" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Drops Twitch : 1 - 4 nov" }], + "Prop": "https://forums.warframe.com/topic/1370845-horaire-des-streams-communautaires-du-1-au-4-nov/", + "Date": { "$date": { "$numberLong": "1698856020000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_11/image.png.50ccf1edef61b5eaec164938b1a927b1.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65427d445d1eb9a26505b7a2" }, + "Messages": [{ "LanguageCode": "ja", "Message": "11月1日~11月4日の配信スケジュール" }], + "Prop": "https://bit.ly/3sliPVu", + "Date": { "$date": { "$numberLong": "1698856200000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_11/image.png.50ccf1edef61b5eaec164938b1a927b1.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65428cd173b6dd552e075cc3" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream Schedule: Nov 1 - 4" }], + "Prop": "https://forums.warframe.com/topic/1370841-community-stream-schedule-nov-1-4/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Community-Streams-01", + "Date": { "$date": { "$numberLong": "1698860220000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65428f9bb572b592470eb299" }, + "Messages": [{ "LanguageCode": "es", "Message": "Programa de streams y Twitch Drops: 1 - 4 de noviembre" }], + "Prop": "https://forums.warframe.com/topic/1370856-programa-de-streams-y-twitch-drops-1-4-de-noviembre/", + "Date": { "$date": { "$numberLong": "1698860820000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6542920e4eb21dd3d4023256" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Quest to Conquer Cancer 2023" }, + { "LanguageCode": "fr", "Message": "Quête pour vaincre le cancer 2023" }, + { "LanguageCode": "it", "Message": "Quest to Conquer Cancer 2023" }, + { "LanguageCode": "de", "Message": "Kampf gegen Krebs 2023" }, + { "LanguageCode": "es", "Message": "Aventura para vencer el cáncer 2023" }, + { "LanguageCode": "pt", "Message": "Conquista na Batalha contra o Câncer 2023" }, + { "LanguageCode": "ru", "Message": "Кампания по борьбе с раком «Quest to Conquer Cancer 2023»" }, + { "LanguageCode": "pl", "Message": "Misja pokonania raka 2023" }, + { "LanguageCode": "uk", "Message": "Кампанія «Подолання раку» 2023" }, + { "LanguageCode": "tr", "Message": "Kanseri Fethetme Görevi 2023" }, + { "LanguageCode": "ja", "Message": "「Quest to Conquer Cancer」2023" }, + { "LanguageCode": "zh", "Message": "征服癌症活动 2023" }, + { "LanguageCode": "ko", "Message": "암을 이겨내기 위한 여정 2023" }, + { "LanguageCode": "tc", "Message": "征服癌症活動 2023" } + ], + "Prop": "https://www.warframe.com/qtcc?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-QTCC2023Endingnow", + "Date": { "$date": { "$numberLong": "1698859680000" } }, + "EventStartDate": { "$date": { "$numberLong": "1698865200000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.png.3182218b8298133e9337738f6b4f7ce8.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "654292994eb21dd3d4023272" }, + "Messages": [{ "LanguageCode": "en", "Message": "Nora's Mix Vol. 4 Ending + Vol. 5 Incoming!" }], + "Prop": "https://forums.warframe.com/topic/1370861-noras-mix-vol-4-ending-vol-5-incoming/", + "Date": { "$date": { "$numberLong": "1698861660000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6542a80ddd58248c8603ce9b" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Fin du Mix de Nora Vol. 4" }], + "Prop": "https://forums.warframe.com/topic/1370873-le-mix-de-nora-vol-4-se-termine-bient%C3%B4t-le-vol-5-arrive/", + "Date": { "$date": { "$numberLong": "1698867120000" } }, + "ImageUrl": "https://warframe-web-assets-dev.nyc3.cdn.digitaloceanspaces.com/uploads/cms/Nora's_Investigation_Templates_16x9_4k.png", + "Priority": false, + "MobileOnly": false } ], - "Goals": [ - { - "_id": { "$oid": "651acb58307d0f40e43bd3d3" }, - "Activation": { "$date": { "$numberLong": "1696431600000" } }, - "Expiry": { "$date": { "$numberLong": "1698850800000" } }, - "Count": 0, - "Goal": 0, - "Success": 0, - "Personal": true, - "Desc": "/Lotus/Language/Events/HalloweenNaberusName", - "ToolTip": "/Lotus/Language/Events/HalloweenNaberusDesc", - "Icon": "/Lotus/Interface/Icons/JackOLanternColour.png", - "Tag": "DeimosHalloween", - "Node": "DeimosHub" - } - ], + "Goals": [], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "65202b7dfc664471b15868bc" }, - "Activation": { "$date": { "$numberLong": "1696608000000" } }, - "Expiry": { "$date": { "$numberLong": "1696694400000" } }, + "_id": { "$oid": "6542727d2c427e6c0063a237" }, + "Activation": { "$date": { "$numberLong": "1698854400000" } }, + "Expiry": { "$date": { "$numberLong": "1698940800000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 33410, + "Seed": 44602, "Boss": "SORTIE_BOSS_ALAD", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_SECONDARY_ONLY", "node": "SolNode56", "tileset": "CorpusShipTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_PUNCTURE", "node": "SolNode49", "tileset": "CorpusShipTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode53", "tileset": "CorpusGasCityTileset" } + { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_PUNCTURE", "node": "SolNode51", "tileset": "CorpusOutpostTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_HAZARD_FIRE", "node": "SolNode104", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode53", "tileset": "CorpusGasCityTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "651a047daf12cceb1a5b2def" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "_id": { "$oid": "653eee7dfee282ff71f6f1da" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 66952, - "Boss": "SORTIE_BOSS_AMAR", + "Seed": 60913, + "Boss": "SORTIE_BOSS_NIRA", "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode106" }, - { "missionType": "MT_ARTIFACT", "node": "SolNode36" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } + { "missionType": "MT_INTEL", "node": "SolNode73" }, + { "missionType": "MT_DEFENSE", "node": "SolNode74" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "65202ec5e21ab9d49d8e1e37" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1d9" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "ArbitersSyndicate", - "Seed": 33410, - "Nodes": ["SolNode79", "SolNode22", "SolNode217", "SolNode707", "SolNode31", "SolNode139", "SolNode58"] + "Seed": 44602, + "Nodes": ["SolNode26", "SolNode113", "SolNode101", "SolNode42", "SolNode205", "SolNode153", "SolNode226"] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e38" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 50623, - "Nodes": ["SolNode15", "SolNode16", "SolNode128", "SettlementNode11", "SolNode118", "SolNode102", "SolNode405"] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e3a" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1dc" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "EventSyndicate", - "Seed": 8696, + "Seed": 35860, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e39" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1db" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "NecraloidSyndicate", - "Seed": 98160, + "Seed": 88519, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e3b" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1da" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 88898, + "Nodes": ["SolNode63", "SolNode46", "SolNode132", "SolNode96", "SettlementNode1", "SolNode74", "SolNode195"] + }, + { + "_id": { "$oid": "654275c5446fd3da1d66e1dd" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "KahlSyndicate", - "Seed": 98526, + "Seed": 54163, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e3c" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 13640, - "Nodes": ["SolNode30", "SolNode123", "SolNode211", "SolNode149", "SettlementNode15", "SolNode48", "SolNode103"] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e3d" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1df" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "QuillsSyndicate", - "Seed": 12566, + "Seed": 90424, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e3e" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1de" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 89415, + "Nodes": ["SolNode79", "SolNode107", "SolNode12", "SettlementNode11", "SolNode70", "SolNode30", "SolNode177"] + }, + { + "_id": { "$oid": "654275c5446fd3da1d66e1e0" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "PerrinSyndicate", - "Seed": 97638, - "Nodes": ["SolNode89", "SolNode113", "SolNode711", "SettlementNode2", "SolNode195", "SolNode109", "SolNode131"] + "Seed": 62303, + "Nodes": ["SolNode11", "SolNode15", "SettlementNode14", "SolNode224", "SolNode84", "SolNode188", "SolNode172"] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e3f" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1e1" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 12614, + "Seed": 79361, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e45" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 1984, - "Nodes": [] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e42" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 78248, - "Nodes": [] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e43" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 6042, - "Nodes": [] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e44" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 14674, - "Nodes": [] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e41" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 18639, - "Nodes": [] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e40" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1e2" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 44189, + "Seed": 64408, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e46" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c5446fd3da1d66e1e3" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 83997, + "Nodes": [] + }, + { + "_id": { "$oid": "654275c5446fd3da1d66e1e4" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 80412, + "Nodes": [] + }, + { + "_id": { "$oid": "654275c5446fd3da1d66e1e6" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 65449, + "Nodes": [] + }, + { + "_id": { "$oid": "654275c5446fd3da1d66e1e5" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 36678, + "Nodes": [] + }, + { + "_id": { "$oid": "654275c6446fd3da1d66e1e8" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 73219, + "Seed": 39272, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e47" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c6446fd3da1d66e1e9" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 29922, + "Seed": 91114, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e49" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c6446fd3da1d66e1e7" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 64565, + "Nodes": [] + }, + { + "_id": { "$oid": "654275c6446fd3da1d66e1ea" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 73486, + "Nodes": [] + }, + { + "_id": { "$oid": "654275c6446fd3da1d66e1ec" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 87386, + "Seed": 2659, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e48" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c6446fd3da1d66e1eb" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 25488, + "Seed": 13857, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e4a" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 6050, - "Nodes": ["SolNode45", "SolNode27", "SolNode101", "SolNode224", "SolNode82", "SolNode122", "SolNode402"] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e4c" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "VoxSyndicate", - "Seed": 94986, - "Nodes": [] - }, - { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e4b" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, + "_id": { "$oid": "654275c6446fd3da1d66e1ee" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, "Tag": "VentKidsSyndicate", - "Seed": 58217, + "Seed": 80484, "Nodes": [] }, { - "_id": { "$oid": "65202ec6e21ab9d49d8e1e4d" }, - "Activation": { "$date": { "$numberLong": "1696607941971" } }, - "Expiry": { "$date": { "$numberLong": "1696694340000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 92533, - "Nodes": ["SolNode85", "SolNode12", "SolNode107", "SolNode41", "SolNode125", "SolNode205", "SolNode191"] + "_id": { "$oid": "654275c6446fd3da1d66e1ed" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 48842, + "Nodes": ["SolNode223", "SolNode22", "SolNode216", "SolNode711", "SolNode181", "SettlementNode15", "SolNode126"] }, { - "_id": { "$oid": "65213ac80000000000000002" }, - "Activation": { "$date": { "$numberLong": "1696676552806" } }, - "Expiry": { "$date": { "$numberLong": "1696685551679" } }, + "_id": { "$oid": "654275c6446fd3da1d66e1ef" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "VoxSyndicate", + "Seed": 6504, + "Nodes": [] + }, + { + "_id": { "$oid": "654275c6446fd3da1d66e1f0" }, + "Activation": { "$date": { "$numberLong": "1698854341665" } }, + "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 8732, + "Nodes": ["SolNode128", "SolNode16", "SolNode103", "SolNode217", "SolNode175", "SolNode185", "SolNode19"] + }, + { + "_id": { "$oid": "65436b980000000000000002" }, + "Activation": { "$date": { "$numberLong": "1698917272632" } }, + "Expiry": { "$date": { "$numberLong": "1698926271505" } }, "Tag": "EntratiSyndicate", - "Seed": 28685, + "Seed": 88921, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, @@ -592,23 +713,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [17, 17, 17, 25] + "xpAmounts": [19, 19, 19, 29] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 39] + "xpAmounts": [23, 23, 23, 23, 45] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -645,118 +766,44 @@ ] }, { - "_id": { "$oid": "65213ac80000000000000022" }, - "Activation": { "$date": { "$numberLong": "1696676552806" } }, - "Expiry": { "$date": { "$numberLong": "1696685551679" } }, - "Tag": "SolarisSyndicate", - "Seed": 28685, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [400, 400, 400] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [740, 740, 740] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [660, 660, 660, 980] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [620, 620, 620, 620, 1210] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [720, 720, 720, 720, 1410] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [780, 780, 780, 780, 1540] - } - ] - }, - { - "_id": { "$oid": "65213ac80000000000000026" }, - "Activation": { "$date": { "$numberLong": "1696676552806" } }, - "Expiry": { "$date": { "$numberLong": "1696685551679" } }, - "Tag": "ZarimanSyndicate", - "Seed": 28686, - "Nodes": [] - }, - { - "_id": { "$oid": "65213ac80000000000000007" }, - "Activation": { "$date": { "$numberLong": "1696676552806" } }, - "Expiry": { "$date": { "$numberLong": "1696685551679" } }, + "_id": { "$oid": "65436b980000000000000007" }, + "Activation": { "$date": { "$numberLong": "1698917272632" } }, + "Expiry": { "$date": { "$numberLong": "1698926271505" } }, "Tag": "CetusSyndicate", - "Seed": 28685, + "Seed": 88921, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [470, 470, 470] + "xpAmounts": [420, 420, 420] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [720, 720, 720] + "xpAmounts": [590, 590, 590] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [670, 670, 670, 980] + "xpAmounts": [600, 600, 600, 880] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [570, 570, 570, 570, 1120] + "xpAmounts": [630, 630, 630, 630, 1240] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", @@ -764,10 +811,10 @@ "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [740, 740, 740, 740, 1450] + "xpAmounts": [700, 700, 700, 700, 1360] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -775,201 +822,554 @@ "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, + "xpAmounts": [760, 760, 760, 760, 1490] + } + ] + }, + { + "_id": { "$oid": "65436b980000000000000023" }, + "Activation": { "$date": { "$numberLong": "1698917272632" } }, + "Expiry": { "$date": { "$numberLong": "1698926271505" } }, + "Tag": "SolarisSyndicate", + "Seed": 88921, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [390, 390, 390] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [700, 700, 700] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [640, 640, 640, 940] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [550, 550, 550, 550, 1080] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [710, 710, 710, 710, 1390] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [790, 790, 790, 790, 1550] + } + ] + }, + { + "_id": { "$oid": "65436b980000000000000027" }, + "Activation": { "$date": { "$numberLong": "1698917272632" } }, + "Expiry": { "$date": { "$numberLong": "1698926271505" } }, + "Tag": "ZarimanSyndicate", + "Seed": 88921, + "Nodes": [] + }, + { + "_id": { "$oid": "65438ebf0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1698926271506" } }, + "Expiry": { "$date": { "$numberLong": "1698935270380" } }, + "Tag": "EntratiSyndicate", + "Seed": 2180, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [6, 6, 6] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [9, 9, 9] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", + "masteryReq": 5, + "minEnemyLevel": 25, + "maxEnemyLevel": 30, + "endless": true, + "bonusXpMultiplier": 0.15000001, + "xpAmounts": [14, 14, 14] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [19, 19, 19, 28] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [21, 21, 21, 21, 40] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [25, 25, 25, 25, 50] + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", + "masteryReq": 5, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [2, 2, 2, 4], + "locationTag": "ChamberB", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [4, 4, 4, 5], + "locationTag": "ChamberA", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", + "masteryReq": 5, + "minEnemyLevel": 50, + "maxEnemyLevel": 60, + "xpAmounts": [5, 5, 5, 7], + "locationTag": "ChamberC", + "isVault": true + } + ] + }, + { + "_id": { "$oid": "65438ebf0000000000000007" }, + "Activation": { "$date": { "$numberLong": "1698926271506" } }, + "Expiry": { "$date": { "$numberLong": "1698935270380" } }, + "Tag": "CetusSyndicate", + "Seed": 2180, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [440, 440, 440] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [590, 590, 590] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [610, 610, 610, 900] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [620, 620, 620, 620, 1210] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [690, 690, 690, 690, 1360] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [790, 790, 790, 790, 1550] + } + ] + }, + { + "_id": { "$oid": "65438ebf0000000000000023" }, + "Activation": { "$date": { "$numberLong": "1698926271506" } }, + "Expiry": { "$date": { "$numberLong": "1698935270380" } }, + "Tag": "SolarisSyndicate", + "Seed": 2180, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [460, 460, 460] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [590, 590, 590] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [630, 630, 630, 920] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [630, 630, 630, 630, 1230] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [740, 740, 740, 740, 1460] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, "xpAmounts": [810, 810, 810, 810, 1590] } ] + }, + { + "_id": { "$oid": "65438ebf0000000000000027" }, + "Activation": { "$date": { "$numberLong": "1698926271506" } }, + "Expiry": { "$date": { "$numberLong": "1698935270380" } }, + "Tag": "ZarimanSyndicate", + "Seed": 2180, + "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "652140fd7277809f43f147a3" }, - "Region": 19, - "Seed": 78462, - "Activation": { "$date": { "$numberLong": "1696678141853" } }, - "Expiry": { "$date": { "$numberLong": "1696683547833" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT5" + "_id": { "$oid": "65437c45a5a4a9c9e5a1262d" }, + "Region": 12, + "Seed": 13717, + "Activation": { "$date": { "$numberLong": "1698921541963" } }, + "Expiry": { "$date": { "$numberLong": "1698928260833" } }, + "Node": "SolNode181", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT4" }, { - "_id": { "$oid": "652140fd7277809f43f147a4" }, - "Region": 5, - "Seed": 24462, - "Activation": { "$date": { "$numberLong": "1696678141853" } }, - "Expiry": { "$date": { "$numberLong": "1696685125046" } }, - "Node": "SolNode74", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT2", + "_id": { "$oid": "65437c46a5a4a9c9e5a1262e" }, + "Region": 15, + "Seed": 31939, + "Activation": { "$date": { "$numberLong": "1698921541963" } }, + "Expiry": { "$date": { "$numberLong": "1698926902928" } }, + "Node": "SolNode408", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65437c81755b524ce29107d3" }, + "Region": 2, + "Seed": 22222, + "Activation": { "$date": { "$numberLong": "1698921601146" } }, + "Expiry": { "$date": { "$numberLong": "1698927477428" } }, + "Node": "SolNode66", + "MissionType": "MT_INTEL", + "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "652140fd7277809f43f147a5" }, - "Region": 16, - "Seed": 13260, - "Activation": { "$date": { "$numberLong": "1696678141853" } }, - "Expiry": { "$date": { "$numberLong": "1696685296121" } }, - "Node": "SettlementNode3", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT2", + "_id": { "$oid": "65437c81755b524ce29107d4" }, + "Region": 3, + "Seed": 41267, + "Activation": { "$date": { "$numberLong": "1698921601146" } }, + "Expiry": { "$date": { "$numberLong": "1698927259764" } }, + "Node": "SolNode59", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "652142a17097e26fdf3be782" }, + "_id": { "$oid": "65437dad4414f4b6f4d7abbf" }, + "Region": 10, + "Seed": 48422, + "Activation": { "$date": { "$numberLong": "1698921901588" } }, + "Expiry": { "$date": { "$numberLong": "1698926847046" } }, + "Node": "SolNode140", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "65437dad4414f4b6f4d7abc0" }, "Region": 16, - "Seed": 30148, - "Activation": { "$date": { "$numberLong": "1696678561819" } }, - "Expiry": { "$date": { "$numberLong": "1696683480119" } }, + "Seed": 17637, + "Activation": { "$date": { "$numberLong": "1698921901588" } }, + "Expiry": { "$date": { "$numberLong": "1698927913450" } }, "Node": "SettlementNode11", "MissionType": "MT_DEFENSE", "Modifier": "VoidT2" }, { - "_id": { "$oid": "6521440996aa0e64e8a09885" }, - "Region": 9, - "Seed": 35418, - "Activation": { "$date": { "$numberLong": "1696678921220" } }, - "Expiry": { "$date": { "$numberLong": "1696683507915" } }, - "Node": "SolNode102", + "_id": { "$oid": "65437e25a5aaadaaf2267991" }, + "Region": 10, + "Seed": 87791, + "Activation": { "$date": { "$numberLong": "1698922021550" } }, + "Expiry": { "$date": { "$numberLong": "1698927207138" } }, + "Node": "SolNode131", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65437e25a5aaadaaf2267992" }, + "Region": 5, + "Seed": 69763, + "Activation": { "$date": { "$numberLong": "1698922021550" } }, + "Expiry": { "$date": { "$numberLong": "1698927877073" } }, + "Node": "SolNode100", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65437f153cf8030bf2325f7f" }, + "Region": 7, + "Seed": 42112, + "Activation": { "$date": { "$numberLong": "1698922261157" } }, + "Expiry": { "$date": { "$numberLong": "1698928708401" } }, + "Node": "SolNode122", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "65437f153cf8030bf2325f80" }, + "Region": 8, + "Seed": 56630, + "Activation": { "$date": { "$numberLong": "1698922261157" } }, + "Expiry": { "$date": { "$numberLong": "1698927253123" } }, + "Node": "SolNode84", "MissionType": "MT_INTEL", - "Modifier": "VoidT4", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "65437f153cf8030bf2325f81" }, + "Region": 13, + "Seed": 2836, + "Activation": { "$date": { "$numberLong": "1698922261157" } }, + "Expiry": { "$date": { "$numberLong": "1698929339384" } }, + "Node": "SolNode215", + "MissionType": "MT_INTEL", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "65437f8d7bfcae03fbb35220" }, + "Region": 7, + "Seed": 42825, + "Activation": { "$date": { "$numberLong": "1698922381517" } }, + "Expiry": { "$date": { "$numberLong": "1698928435422" } }, + "Node": "SolNode64", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "6521440996aa0e64e8a09886" }, - "Region": 11, - "Seed": 73804, - "Activation": { "$date": { "$numberLong": "1696678921220" } }, - "Expiry": { "$date": { "$numberLong": "1696684951949" } }, - "Node": "SolNode175", - "MissionType": "MT_HIVE", - "Modifier": "VoidT4", + "_id": { "$oid": "65437f8d7bfcae03fbb35221" }, + "Region": 8, + "Seed": 36768, + "Activation": { "$date": { "$numberLong": "1698922381517" } }, + "Expiry": { "$date": { "$numberLong": "1698926140337" } }, + "Node": "SolNode49", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "652144bd102663ba7babcd1e" }, + "_id": { "$oid": "6543816d1d53538ae42d594a" }, "Region": 19, - "Seed": 80407, - "Activation": { "$date": { "$numberLong": "1696679101707" } }, - "Expiry": { "$date": { "$numberLong": "1696685335452" } }, + "Seed": 68830, + "Activation": { "$date": { "$numberLong": "1698922861519" } }, + "Expiry": { "$date": { "$numberLong": "1698926887328" } }, + "Node": "SolNode744", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "6543816d1d53538ae42d594b" }, + "Region": 19, + "Seed": 45266, + "Activation": { "$date": { "$numberLong": "1698922861519" } }, + "Expiry": { "$date": { "$numberLong": "1698927901289" } }, "Node": "SolNode748", "MissionType": "MT_RESCUE", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "652145e9a8cd4058860618c4" }, - "Region": 13, - "Seed": 91083, - "Activation": { "$date": { "$numberLong": "1696679401337" } }, - "Expiry": { "$date": { "$numberLong": "1696684380936" } }, - "Node": "SolNode204", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "6521471598d5a30788fcd678" }, - "Region": 2, - "Seed": 40411, - "Activation": { "$date": { "$numberLong": "1696679701357" } }, - "Expiry": { "$date": { "$numberLong": "1696683474465" } }, - "Node": "SolNode22", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "652147c976b9d3b75b6afcc0" }, - "Region": 8, - "Seed": 79478, - "Activation": { "$date": { "$numberLong": "1696679881901" } }, - "Expiry": { "$date": { "$numberLong": "1696685440728" } }, - "Node": "SolNode6", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "652147c976b9d3b75b6afcc1" }, - "Region": 13, - "Seed": 3426, - "Activation": { "$date": { "$numberLong": "1696679881901" } }, - "Expiry": { "$date": { "$numberLong": "1696683498425" } }, - "Node": "SolNode217", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "65214ad6be19f804921d640d" }, - "Region": 9, - "Seed": 93086, - "Activation": { "$date": { "$numberLong": "1696680662032" } }, - "Expiry": { "$date": { "$numberLong": "1696686210185" } }, - "Node": "SolNode43", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65214ad6be19f804921d640e" }, - "Region": 11, - "Seed": 60279, - "Activation": { "$date": { "$numberLong": "1696680662032" } }, - "Expiry": { "$date": { "$numberLong": "1696684268529" } }, - "Node": "SolNode172", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65214f49f6ded1a70ea4a661" }, - "Region": 4, - "Seed": 13745, - "Activation": { "$date": { "$numberLong": "1696681801544" } }, - "Expiry": { "$date": { "$numberLong": "1696688613036" } }, - "Node": "SolNode68", + "_id": { "$oid": "6543816d1d53538ae42d594c" }, + "Region": 19, + "Seed": 2027, + "Activation": { "$date": { "$numberLong": "1698922861519" } }, + "Expiry": { "$date": { "$numberLong": "1698926682735" } }, + "Node": "SolNode743", "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "654385e1aa164fc9fb36c5be" }, + "Region": 4, + "Seed": 21948, + "Activation": { "$date": { "$numberLong": "1698924001262" } }, + "Expiry": { "$date": { "$numberLong": "1698928015900" } }, + "Node": "SolNode41", + "MissionType": "MT_INTEL", "Modifier": "VoidT1" }, { - "_id": { "$oid": "652154aedc16ac2a8ca7ab5e" }, - "Region": 10, - "Seed": 13361, - "Activation": { "$date": { "$numberLong": "1696683182127" } }, - "Expiry": { "$date": { "$numberLong": "1696689317002" } }, - "Node": "SolNode141", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2" + "_id": { "$oid": "654385e1aa164fc9fb36c5bf" }, + "Region": 3, + "Seed": 82932, + "Activation": { "$date": { "$numberLong": "1698924001262" } }, + "Expiry": { "$date": { "$numberLong": "1698930987458" } }, + "Node": "SolNode39", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT1" }, { - "_id": { "$oid": "652154aedc16ac2a8ca7ab5f" }, - "Region": 4, - "Seed": 56649, - "Activation": { "$date": { "$numberLong": "1696683182127" } }, - "Expiry": { "$date": { "$numberLong": "1696689278295" } }, - "Node": "SolNode30", + "_id": { "$oid": "65438a55ce00fdac38cfd9ba" }, + "Region": 19, + "Seed": 73439, + "Activation": { "$date": { "$numberLong": "1698925141819" } }, + "Expiry": { "$date": { "$numberLong": "1698929773504" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65438a55ce00fdac38cfd9bb" }, + "Region": 19, + "Seed": 36825, + "Activation": { "$date": { "$numberLong": "1698925141819" } }, + "Expiry": { "$date": { "$numberLong": "1698931406495" } }, + "Node": "SolNode742", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65438b09e66e687393f9faba" }, + "Region": 12, + "Seed": 46172, + "Activation": { "$date": { "$numberLong": "1698925321611" } }, + "Expiry": { "$date": { "$numberLong": "1698929804293" } }, + "Node": "SolNode177", "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT1", + "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "652154aedc16ac2a8ca7ab60" }, - "Region": 3, - "Seed": 70447, - "Activation": { "$date": { "$numberLong": "1696683182127" } }, - "Expiry": { "$date": { "$numberLong": "1696689919097" } }, - "Node": "SolNode39", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT1", + "_id": { "$oid": "65438b09e66e687393f9fabb" }, + "Region": 15, + "Seed": 26087, + "Activation": { "$date": { "$numberLong": "1698925321611" } }, + "Expiry": { "$date": { "$numberLong": "1698931463028" } }, + "Node": "SolNode403", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4", "Hard": true } ], "GlobalUpgrades": [], "FlashSales": [ { - "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", + "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -977,7 +1377,7 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 20, + "PremiumOverride": 325, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -996,6 +1396,20 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 20, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1011,18 +1425,17 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "StartDate": { "$date": { "$numberLong": "1662422400000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, "HideFromMarket": false, - "SupporterPack": false, + "SupporterPack": true, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 325, + "PremiumOverride": 1, "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" + "BogoGet": 0 }, { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", @@ -1038,8 +1451,8 @@ "BogoGet": 0 }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "StartDate": { "$date": { "$numberLong": "1662422400000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, "HideFromMarket": false, @@ -1050,6 +1463,20 @@ "BogoBuy": 0, "BogoGet": 0 }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 195, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, { "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, @@ -1065,7 +1492,21 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696266000000" } }, + "EndDate": { "$date": { "$numberLong": "1704038340000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1073,7 +1514,7 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 195, + "PremiumOverride": 35, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -1093,7 +1534,7 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1101,7 +1542,7 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 35, + "PremiumOverride": 260, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -1118,33 +1559,6 @@ "StartDate": { "$date": { "$numberLong": "1688216400000" } }, "EndDate": { "$date": { "$numberLong": "1719838800000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 260, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", "ShowInMarket": true, @@ -1174,7 +1588,160 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItemNoLogo", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Powersuits/EntratiMech/NechroTech", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 281, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696528800000" } }, + "EndDate": { "$date": { "$numberLong": "1699984800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sigils/ConqueraSigil", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021C", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021A", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022A", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/Conquera2022Ephemera", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1183,25 +1750,11 @@ "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1694109600000" } }, - "EndDate": { "$date": { "$numberLong": "1697392800000" } } + "StartDate": { "$date": { "$numberLong": "1697542380000" } }, + "EndDate": { "$date": { "$numberLong": "1700146800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696266000000" } }, - "EndDate": { "$date": { "$numberLong": "1704038340000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeVervArmourStoreItem", + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1210,1282 +1763,8 @@ "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1694109600000" } }, - "EndDate": { "$date": { "$numberLong": "1697392800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 97, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteRogueBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaxion", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGrinlok", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenJatKittag", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPack", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 131, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteDuellistBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenDragonNikana", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteStrikerBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBasmu", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBuzlok", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenDaikyu", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Festivities/PumpkinHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 65, - "RegularOverride": 0, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "StartDate": { "$date": { "$numberLong": "1696431600000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenAmprex", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenImperator", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenKunai", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackII", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 108, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGorgon", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenKronen", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackD", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 135, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenGlyphBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 65, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenArchSword", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBraton", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGalatine", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackC", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 131, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleB", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 65, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenBoltor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenDualZoren", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundleB", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenShipSkinBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenAngstrum", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Halloween2021GlyphBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 65, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HalloweenCrpCircArmorPack", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 75, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenAkvasto", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaive", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGrakata", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenGram", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AcolyteNoggleBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 160, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteControlBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/AcolyteHeavyBobbleHead", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/Halloween2014Wings/Halloween2014ArmArmor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSoma", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSobek", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenMarelok", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSkana", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSarpa", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenOpticor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenNikana", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenOrthos", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenRegorAxeShield", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSilvaAndAegis", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSimulor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenNukor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenParis", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenScindo", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSonicor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinHalloween", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGrakatas", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenSpira", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenStradavar", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenVasto", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGremlins", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenTonkor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircC", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 45, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenGrnBannerScarf", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 75, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenErosionCape", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Dethcube", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016C", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016D", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CreepyClem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016B", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhostChibiWisp", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019FrankenCorpus", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Loid", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhoulGrave", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CheshireKavat", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Pumpkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircL", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016A", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019Werefested", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenFireFlyScarf", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 90, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Scarves/HalloweenKyropteraScarf", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019SlimeLoki", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019TrickOrBalas", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Lotus", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Liset/LisetSkinHalloween", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Grineer", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + "StartDate": { "$date": { "$numberLong": "1697542380000" } }, + "EndDate": { "$date": { "$numberLong": "1700146800000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", @@ -2497,35 +1776,148 @@ "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696327200000" } }, - "EndDate": { "$date": { "$numberLong": "1893751200000" } } + "StartDate": { "$date": { "$numberLong": "1696941480000" } }, + "EndDate": { "$date": { "$numberLong": "1894365480000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Halloween/HalloweenLato", + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache02", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696431600000" } }, - "EndDate": { "$date": { "$numberLong": "1698850800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1698850800000" } } + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, { - "TypeName": "/Lotus/Powersuits/EntratiMech/NechroTech", + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache03", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, - "Discount": 15, + "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 315, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696528800000" } }, - "EndDate": { "$date": { "$numberLong": "1699984800000" } } + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache04", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache07", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache05", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache08", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache06", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache10", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache09", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } } ], "InGameMarket": { @@ -2537,29 +1929,21 @@ "Icon": "popular", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/HeirloomPackB", - "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", - "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", - "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", - "/Lotus/StoreItems/Upgrades/Skins/Necramech/TefilahIridosSkin", - "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/StoreItems/Upgrades/Skins/Effects/WerewolfEphemera", - "/Lotus/StoreItems/Powersuits/PaxDuviricus/PaxDuviricus", + "/Lotus/Types/StoreItems/Packages/WarframeBundles/DagathItemsBundle", + "/Lotus/Types/StoreItems/Packages/Halloween2023CompleteBundle", + "/Lotus/Types/StoreItems/Packages/Halloween2023BatBundle", + "/Lotus/Types/StoreItems/Packages/HarrowDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", "/Lotus/StoreItems/Powersuits/Runner/Runner", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/StoreItems/Powersuits/Hoplite/Hoplite", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/FormaPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", - "/Lotus/Types/StoreItems/Packages/HeirloomPackC", - "/Lotus/Types/StoreItems/Packages/HeirloomPackA" + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/RevenantDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/RevenantDlxOperatorBundle", + "/Lotus/StoreItems/Powersuits/Wraith/Wraith", + "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", + "/Lotus/StoreItems/Types/Items/MiscItems/Forma", + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" ] }, { @@ -2568,28 +1952,29 @@ "Icon": "seasonal", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/Halloween2021GlyphBundle", - "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleA", - "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleB", - "/Lotus/Types/StoreItems/Packages/HalloweenGlyphBundle", - "/Lotus/Types/StoreItems/Packages/HalloweenCrpCircArmorPack", - "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundleB", - "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackD", - "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundle", - "/Lotus/Types/StoreItems/Packages/HalloweenShipSkinBundle", - "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackC", - "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackII", - "/Lotus/Types/StoreItems/Packages/HalloweenSkinPack", - "/Lotus/Types/StoreItems/Packages/AcolyteNoggleBundle", - "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteControlBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteDuellistBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteHeavyBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteRogueBobbleHead", - "/Lotus/StoreItems/Types/Items/ShipDecos/AcolyteStrikerBobbleHead", - "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemA", - "/Lotus/StoreItems/Upgrades/Skins/Armor/Halloween2014Wings/Halloween2014ArmArmor", - "/Lotus/StoreItems/Upgrades/Skins/Festivities/PumpkinHead" + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache02", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache03", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache04", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache05", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache06", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache07", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache08", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache09", + "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache10", + "/Lotus/StoreItems/Upgrades/Skins/Sigils/ConqueraSigil", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021C", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021D", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021A", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021B", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2022A", + "/Lotus/StoreItems/Types/Items/ShipDecos/Conquera2021Deco", + "/Lotus/StoreItems/Upgrades/Skins/Effects/ConqueraEphemera", + "/Lotus/StoreItems/Upgrades/Skins/Effects/Conquera2022Ephemera", + "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", + "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/TnCharityRibbonSyandana" ] }, { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "AddToMenu": true, "Items": [] }, @@ -2598,14 +1983,16 @@ "Name": "/Lotus/Language/Store/Store_PremiumBundles", "Icon": "premiumbundles", "Items": [ + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", "/Lotus/Types/StoreItems/Packages/HeirloomPackC", - "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "/Lotus/Types/StoreItems/Packages/HeirloomPackA", - "/Lotus/Types/StoreItems/Packages/HeirloomPackB" + "/Lotus/Types/StoreItems/Packages/HeirloomPackB", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier2StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier1StoreItem" ] }, { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] } @@ -2614,132 +2001,164 @@ }, "Invasions": [ { - "_id": { "$oid": "651e7e958fda5fab4e371291" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode203", - "Count": -27448, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "651e7e958fda5fab4e371291" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 83204, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 98538, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1696555671101" } } - }, - { - "_id": { "$oid": "651f9325075a068cd0ecbe07" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode99", - "Count": -30033, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "651f6ed16db8195ea8496bfa" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 762847, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 453335, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1696568101347" } } - }, - { - "_id": { "$oid": "651ffdc917ad73e3413cfbc8" }, + "_id": { "$oid": "6541905172ebde094bb9abc7" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", "Node": "SolNode189", - "Count": 1521, - "Goal": 32000, + "Count": 28488, + "Goal": 49000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "651ffdc917ad73e3413cfbc8" }, + "ChainID": { "$oid": "653adddd3cf07c066739049f" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 929145, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 695546, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 191135, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1696672604720" } } + "DefenderMissionInfo": { "seed": 485828, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1698796198922" } } }, { - "_id": { "$oid": "65206f76253fd83039d19c87" }, + "_id": { "$oid": "653f9036ffbb56495a399b6e" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode100", + "Count": -39005, + "Goal": 39000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "653f9036ffbb56495a399b6e" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 774734, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 14347, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1698747767870" } } + }, + { + "_id": { "$oid": "6541179d0a9a83bb73c86588" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode51", - "Count": -16430, + "Node": "SolNode210", + "Count": -30057, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "6540e089ff320027eb61af9a" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 985515, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 488760, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1698764701179" } } + }, + { + "_id": { "$oid": "6542a9911b5bd8bc8d833196" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode144", + "Count": -22886, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "65203ab9be25c667328a84b3" }, + "ChainID": { "$oid": "65428b190a64e74577a20b0b" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 164429, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 565564, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1696624502088" } } + "AttackerMissionInfo": { "seed": 357861, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 683894, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1698867601449" } } }, { - "_id": { "$oid": "652100c571e7e6375bf77242" }, + "_id": { "$oid": "6542a9911b5bd8bc8d833195" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode19", - "Count": -30998, + "Node": "SolNode147", + "Count": -37415, + "Goal": 37000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "65428b190a64e74577a20b0b" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 689471, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 989270, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1698867601449" } } + }, + { + "_id": { "$oid": "6542c22d324c74254b38f529" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode131", + "Count": -46084, "Goal": 46000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "652100c571e7e6375bf77242" }, + "Completed": true, + "ChainID": { "$oid": "65428b190a64e74577a20b0b" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 93951, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 53986, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1696666502568" } } + "AttackerMissionInfo": { "seed": 56284, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 711535, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1698873901736" } } }, { - "_id": { "$oid": "65212e795b7ac1a22134717c" }, + "_id": { "$oid": "654302a12c68c509388c722d" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode50", - "Count": -17774, + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode38", + "Count": -36753, + "Goal": 36000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "654302a12c68c509388c722d" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 224035, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 965449, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1698896586760" } } + }, + { + "_id": { "$oid": "654339b685eaf50c46074bc6" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode102", + "Count": -35305, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "654302a12c68c509388c722d" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 439077, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 71180, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1698904502041" } } + }, + { + "_id": { "$oid": "65434ecdccfd30bd45a1a80c" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode4", + "Count": -28256, + "Goal": 48000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "654302a12c68c509388c722d" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 165582, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 290740, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1698909901619" } } + }, + { + "_id": { "$oid": "65434ecdccfd30bd45a1a80d" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode48", + "Count": -30107, "Goal": 42000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "652100c571e7e6375bf77242" }, + "ChainID": { "$oid": "654302a12c68c509388c722d" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 603840, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 535326, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1696673401176" } } - }, - { - "_id": { "$oid": "65212e795b7ac1a22134717d" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode96", - "Count": -14030, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "652100c571e7e6375bf77242" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 358650, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 20074, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1696673401176" } } - }, - { - "_id": { "$oid": "65213db5ff9cc6c8c5eaaf98" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode70", - "Count": -1209, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "652100c571e7e6375bf77242" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 451620, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 732385, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1696677301247" } } + "AttackerMissionInfo": { "seed": 221317, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 687525, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1698909901619" } } } ], "HubEvents": [], @@ -2747,7 +2166,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9677402 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9715110 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -2766,45 +2185,11 @@ "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1696597200000" } }, - "Expiry": { "$date": { "$numberLong": "1696770000000" } }, + "Activation": { "$date": { "$numberLong": "1699016400000" } }, + "Expiry": { "$date": { "$numberLong": "1699189200000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "PlutoHUB", - "Manifest": [ - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/GaussSentinelWings", "PrimePrice": 400, "RegularPrice": 500000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTDinoSpikeScarf", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/PrismaMechHeadMask", "PrimePrice": 175, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaSkana", "PrimePrice": 510, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponGlaiveOnSixKillsBuffSecondary", "PrimePrice": 300, "RegularPrice": 115000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader", "PrimePrice": 220, "RegularPrice": 400000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/BaroArrow", "PrimePrice": 375, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaMachete", "PrimePrice": 400, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/CorruptedHeavyGunnerBall", "PrimePrice": 100, "RegularPrice": 40000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/BaroKavatSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/QuartersWallpapers/BaroWallpaper", "PrimePrice": 250, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/KavatBust", "PrimePrice": 220, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroKiTeerDecorationE", "PrimePrice": 100, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Archwing/Rifle/Expert/ArchwingRifleDamageAmountModExpert", "PrimePrice": 350, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/TnShinaiSword/TnShinaiSwordSkin", "PrimePrice": 375, "RegularPrice": 280000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/HeartOfDeimosAlbumCoverPoster", "PrimePrice": 80, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Glass/GaraAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", "PrimePrice": 350, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", "PrimePrice": 350, "RegularPrice": 375000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorHalloweenA", "PrimePrice": 400, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTHalloweenDarkSword", "PrimePrice": 320, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Halloween/HalloweenDread", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GrendelTreat", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } - ] + "Node": "MercuryHUB" } ], "PrimeVaultTraders": [ @@ -3035,140 +2420,123 @@ "PreviewHiddenUntil": { "$date": { "$numberLong": "1695319200000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVZephyrChromaPrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1701975600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1697738400000" } } } + { + "Expiry": { "$date": { "$numberLong": "1703185200000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1697738400000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNezhaOctaviaPrimeDualPack" + }, + { "Expiry": { "$date": { "$numberLong": "1704394800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1704394800000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "652135810a89429fb9b47868" }, - "Node": "CrewBattleNode522", - "Activation": { "$date": { "$numberLong": "1696677601821" } }, - "Expiry": { "$date": { "$numberLong": "1696683001821" } }, + "_id": { "$oid": "65436e7102e41fffaaacd44e" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1698920401821" } }, + "Expiry": { "$date": { "$numberLong": "1698925801821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "652135810a89429fb9b47869" }, - "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1696677601825" } }, - "Expiry": { "$date": { "$numberLong": "1696683001825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "652135810a89429fb9b4786a" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1696677601827" } }, - "Expiry": { "$date": { "$numberLong": "1696683001827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "652135810a89429fb9b4786c" }, - "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1696677601832" } }, - "Expiry": { "$date": { "$numberLong": "1696683001832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "652135810a89429fb9b4786b" }, - "Node": "CrewBattleNode525", - "Activation": { "$date": { "$numberLong": "1696677601829" } }, - "Expiry": { "$date": { "$numberLong": "1696683001829" } }, + "_id": { "$oid": "65436e7102e41fffaaacd451" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1698920401829" } }, + "Expiry": { "$date": { "$numberLong": "1698925801829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "652135810a89429fb9b4786d" }, - "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1696677601834" } }, - "Expiry": { "$date": { "$numberLong": "1696683001834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65213ee25a7b8c142419a133" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1696681201825" } }, - "Expiry": { "$date": { "$numberLong": "1696686601825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65213ee25a7b8c142419a136" }, - "Node": "CrewBattleNode531", - "Activation": { "$date": { "$numberLong": "1696681201832" } }, - "Expiry": { "$date": { "$numberLong": "1696686601832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65213ee25a7b8c142419a135" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1696681201829" } }, - "Expiry": { "$date": { "$numberLong": "1696686601829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "65213ee25a7b8c142419a134" }, - "Node": "CrewBattleNode534", - "Activation": { "$date": { "$numberLong": "1696681201827" } }, - "Expiry": { "$date": { "$numberLong": "1696686601827" } }, + "_id": { "$oid": "65436e7102e41fffaaacd450" }, + "Node": "CrewBattleNode501", + "Activation": { "$date": { "$numberLong": "1698920401827" } }, + "Expiry": { "$date": { "$numberLong": "1698925801827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "65213ee25a7b8c142419a132" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1696681201821" } }, - "Expiry": { "$date": { "$numberLong": "1696686601821" } }, - "ActiveMissionTier": "VoidT1" + "_id": { "$oid": "65436e7102e41fffaaacd452" }, + "Node": "CrewBattleNode536", + "Activation": { "$date": { "$numberLong": "1698920401832" } }, + "Expiry": { "$date": { "$numberLong": "1698925801832" } }, + "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "65213ee25a7b8c142419a137" }, + "_id": { "$oid": "65436e7102e41fffaaacd453" }, "Node": "CrewBattleNode555", - "Activation": { "$date": { "$numberLong": "1696681201834" } }, - "Expiry": { "$date": { "$numberLong": "1696686601834" } }, + "Activation": { "$date": { "$numberLong": "1698920401834" } }, + "Expiry": { "$date": { "$numberLong": "1698925801834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65436e7102e41fffaaacd44f" }, + "Node": "CrewBattleNode512", + "Activation": { "$date": { "$numberLong": "1698920401825" } }, + "Expiry": { "$date": { "$numberLong": "1698925801825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65437c8127cd64a88e16bfe7" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1698924001821" } }, + "Expiry": { "$date": { "$numberLong": "1698929401821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65437c8127cd64a88e16bfe9" }, + "Node": "CrewBattleNode535", + "Activation": { "$date": { "$numberLong": "1698924001827" } }, + "Expiry": { "$date": { "$numberLong": "1698929401827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "65437c8127cd64a88e16bfeb" }, + "Node": "CrewBattleNode529", + "Activation": { "$date": { "$numberLong": "1698924001832" } }, + "Expiry": { "$date": { "$numberLong": "1698929401832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65437c8127cd64a88e16bfe8" }, + "Node": "CrewBattleNode515", + "Activation": { "$date": { "$numberLong": "1698924001825" } }, + "Expiry": { "$date": { "$numberLong": "1698929401825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65437c8127cd64a88e16bfea" }, + "Node": "CrewBattleNode525", + "Activation": { "$date": { "$numberLong": "1698924001829" } }, + "Expiry": { "$date": { "$numberLong": "1698929401829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "65437c8127cd64a88e16bfec" }, + "Node": "CrewBattleNode554", + "Activation": { "$date": { "$numberLong": "1698924001834" } }, + "Expiry": { "$date": { "$numberLong": "1698929401834" } }, "ActiveMissionTier": "VoidT4" } ], - "PrimeAccessAvailability": { "State": "PRIME2" }, + "PrimeAccessAvailability": { "State": "PRIME1" }, "PrimeVaultAvailabilities": [false, false, false, false, false], "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Powersuits/Sandman/Sandman", - "Activation": { "$date": { "$numberLong": "1696618800000" } }, - "Expiry": { "$date": { "$numberLong": "1696712400000" } }, + "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/DualCleaverWeapon", + "Activation": { "$date": { "$numberLong": "1698865200000" } }, + "Expiry": { "$date": { "$numberLong": "1698958800000" } }, "Discount": 30, "OriginalPrice": 225, "SalePrice": 157, - "AmountTotal": 100, - "AmountSold": 76 + "AmountTotal": 200, + "AmountSold": 10 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "652061658c2dd79e73e73cf3" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1696620901641" } }, - "endDate": { "$date": { "$numberLong": "1697225701641" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], - "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "652061658c2dd79e73e73cf0" }, { "$oid": "652061658c2dd79e73e73cf1" }, { "$oid": "652061658c2dd79e73e73cf2" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" - }, - { - "_id": { "$oid": "652061658c2dd79e73e73cf1" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1696620901641" } }, - "endDate": { "$date": { "$numberLong": "1697225701641" } }, - "params": [{ "n": "ScriptParamValue", "v": 20 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "652061658c2dd79e73e73cf0" }, + "_id": { "$oid": "653c14694565609e1b47d22f" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1696620901641" } }, - "endDate": { "$date": { "$numberLong": "1697225701641" } }, + "startDate": { "$date": { "$numberLong": "1698436201724" } }, + "endDate": { "$date": { "$numberLong": "1699041001724" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -3176,10 +2544,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "652061658c2dd79e73e73cf2" }, + "_id": { "$oid": "653c14694565609e1b47d231" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1696620901641" } }, - "endDate": { "$date": { "$numberLong": "1697225701641" } }, + "startDate": { "$date": { "$numberLong": "1698436201724" } }, + "endDate": { "$date": { "$numberLong": "1699041001724" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -3187,43 +2555,65 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b616" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "_id": { "$oid": "653c14694565609e1b47d230" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", + "startDate": { "$date": { "$numberLong": "1698436201724" } }, + "endDate": { "$date": { "$numberLong": "1699041001724" } }, + "params": [{ "n": "ScriptParamValue", "v": 20 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "653c14694565609e1b47d232" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1698436201724" } }, + "endDate": { "$date": { "$numberLong": "1699041001724" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], + "isGenerated": true, + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "653c14694565609e1b47d22f" }, { "$oid": "653c14694565609e1b47d230" }, { "$oid": "653c14694565609e1b47d231" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + }, + { + "_id": { "$oid": "6542bb25f643ee81d2d4756b" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerEASY", + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "PVPMode": "PVPMODE_TEAMDEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b619" }, + "_id": { "$oid": "6542bb25f643ee81d2d4756d" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirEASY", + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6542bb25f643ee81d2d4756e" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerMEDIUM", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b618" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirEASY", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b617" }, + "_id": { "$oid": "6542bb25f643ee81d2d47569" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -3231,139 +2621,151 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b61a" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirEASY", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b61b" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b61c" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "652064ea5b0ab9b5f0d7b61d" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsEASY", - "startDate": { "$date": { "$numberLong": "1696621802038" } }, - "endDate": { "$date": { "$numberLong": "1696708202038" } }, + "_id": { "$oid": "6542bb25f643ee81d2d4756f" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesEASY", + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6542bb25f643ee81d2d4756c" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirMEDIUM", + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6542bb25f643ee81d2d4756a" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6542bb25f643ee81d2d47570" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD", + "startDate": { "$date": { "$numberLong": "1698872101892" } }, + "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "65438a92612d7e92d6159e3d" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedAffectorSuperPistolDamage", + "startDate": { "$date": { "$numberLong": "1698925202023" } }, + "endDate": { "$date": { "$numberLong": "1698925802023" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_MODEAFFECTOR" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [63.45097138274486, 3.1605555823473916, 0], + "ProjectPct": [82.54077929121944, 37.85609463710761, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Excalibur", "Trinity", "Ember"] }, - { "Category": "EXC_HARD", "Choices": ["Lex", "Magistar", "Boltor", "Bronco", "CeramicDagger"] } + { "Category": "EXC_NORMAL", "Choices": ["Nekros", "Valkyr", "Oberon"] }, + { "Category": "EXC_HARD", "Choices": ["Braton", "Lato", "Skana", "Paris", "Kunai"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "62e501a21c98c2e86f0ca127" }, "Name": "Rise again", "Tier": 2, "Emblem": true, "AllianceId": { "$oid": "64aeb5c2e489fe78a90ea84d" } }, - { "_id": { "$oid": "5ad6ae822183db51113cad5a" }, "Name": "Ascension of Immortals", "Tier": 3, "Emblem": true, "AllianceId": { "$oid": "5b81e30157904a79f92c09fa" } }, - { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz", "Tier": 4, "Emblem": true }, - { "_id": { "$oid": "5f87e86562bebb2d216bce45" }, "Name": "The windy city", "Tier": 5, "Emblem": true }, - { "_id": { "$oid": "559bb99d06c56f888a4b2f44" }, "Name": "--UMBRA--Lua Lycans", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "6365589e89dc6b94480fbb06" } } + { "_id": { "$oid": "61b20d2473865f6f4e746b64" }, "Name": "- ATOM -#862", "Tier": 1, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "62e501a21c98c2e86f0ca127" }, "Name": "Rise again#654", "Tier": 2, "Emblem": true, "AllianceId": { "$oid": "64aeb5c2e489fe78a90ea84d" }, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5ad6ae822183db51113cad5a" }, "Name": "Ascension of Immortals#695", "Tier": 3, "Emblem": true, "AllianceId": { "$oid": "5b81e30157904a79f92c09fa" }, "OriginalPlatform": 0 }, + { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz#996", "Tier": 4, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5f87e86562bebb2d216bce45" }, "Name": "The windy city#684", "Tier": 5, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "559bb99d06c56f888a4b2f44" }, "Name": "--UMBRA--Lua Lycans#447", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "6365589e89dc6b94480fbb06" }, "OriginalPlatform": 0 } ], "SeasonInfo": { "Activation": { "$date": { "$numberLong": "1684951200000" } }, - "Expiry": { "$date": { "$numberLong": "1702857600000" } }, + "Expiry": { "$date": { "$numberLong": "1700679600000" } }, "AffiliationTag": "RadioLegionIntermission8Syndicate", "Season": 10, "Phase": 0, "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100200000000000000277" }, + "_id": { "$oid": "001100240000000000000331" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1696464000000" } }, - "Expiry": { "$date": { "$numberLong": "1696723200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTransmuteMods" + "Activation": { "$date": { "$numberLong": "1698710400000" } }, + "Expiry": { "$date": { "$numberLong": "1698969600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCompleteMissionSecondary" }, { - "_id": { "$oid": "001100200000000000000278" }, + "_id": { "$oid": "001100240000000000000332" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1696550400000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyThePersonalTouch" + "Activation": { "$date": { "$numberLong": "1698796800000" } }, + "Expiry": { "$date": { "$numberLong": "1699056000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithCorrosive" }, { - "_id": { "$oid": "001100200000000000000279" }, + "_id": { "$oid": "001100240000000000000333" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1696636800000" } }, - "Expiry": { "$date": { "$numberLong": "1696896000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyDeathFromAbove" + "Activation": { "$date": { "$numberLong": "1698883200000" } }, + "Expiry": { "$date": { "$numberLong": "1699142400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFire" }, { - "_id": { "$oid": "001100200000000000000267" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, + "_id": { "$oid": "001100240000000000000323" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRailjackHijackDestroyThree" + }, + { + "_id": { "$oid": "001100240000000000000324" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyIsolationBounties" }, { - "_id": { "$oid": "001100200000000000000268" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteTreasures" + "_id": { "$oid": "001100240000000000000325" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyDestroyCrewshipArtillery" }, { - "_id": { "$oid": "001100200000000000000269" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEnemies" + "_id": { "$oid": "001100240000000000000326" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyMineRareVenusResources" }, { - "_id": { "$oid": "001100200000000000000270" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteCapture" + "_id": { "$oid": "001100240000000000000327" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteDisruptionConduits" }, { - "_id": { "$oid": "001100200000000000000271" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillArchgunEnemies" + "_id": { "$oid": "001100240000000000000328" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsSurvival" }, { - "_id": { "$oid": "001100200000000000000272" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardTheManyMadeWhole" - }, - { - "_id": { "$oid": "001100200000000000000273" }, - "Activation": { "$date": { "$numberLong": "1696204800000" } }, - "Expiry": { "$date": { "$numberLong": "1696809600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillExploiterOrb" + "_id": { "$oid": "001100240000000000000329" }, + "Activation": { "$date": { "$numberLong": "1698624000000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKuvaSurvivalNoCapsules" } ] }, -- 2.47.2 From dfe9f54928778ea0d4ee8368bafd8a542f00b497 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 5 Nov 2023 12:01:27 +0100 Subject: [PATCH 047/522] update 34.0.7 (#81) --- config.json | 8 +- static/fixed_responses/worldState.json | 2259 +++++++++++------------- 2 files changed, 1030 insertions(+), 1237 deletions(-) diff --git a/config.json b/config.json index eb573f27..e915fd2b 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.10.26.09.51/140Z1pfbLIMU884jpJRytQ", - "matchmakingBuildId": "3526996083628366914", - "version": "34.0.6", - "worldSeed": "GLX2zk5TmPxaGkLJnfKSkxsg2FBBsQ0OsbI/4CCPldA9jZGLbFrjLl2jkIH9jVMibBzAxVzvuJ97p0UWC6EL/pcBr1X3BzsUffpDVqkFJs5tjwJRvdP5LzwseR5abaBhZqRoZI44ibYLE/kckut2A73QujEynr9aMPkmsoaT87CbVgrIDGBOE0kI/VAzkxfiI50WY/qtiJT61HiSRooGl+gLgBWdisMCJGBVFPlcgl2RYy9hnYIbl3vR69phzn5T6uRZGk7a+jIh8HLoh/CONUcYSkM0azt9BVQBnA2Wzf0DwfCm1/+FN7kaszsXZLWxoH/ne8HbL9aHcqPar2Kx9w==", + "buildLabel": "2023.10.26.09.51/g7gbGLwXqPGGnYpd-msfng", + "matchmakingBuildId": "4348494671438582941", + "version": "34.0.7", + "worldSeed": "iFE2JF4wKdnXBI5UG3/AB1gS9Wfu8wEvUgw05DJyZG/5x+Qwn1DS2nPDEYfgdInlY5XARWlsJnAfXqDP1oqacvlk5F0mYeyKIXayXTBI0+uF7bO7MjrL3FKHkvLrY7UJrmsXuDaZP0JOy1Uac3WlMkLv9e6H7wGHk4K/M9fjZeEX+rCpC61vRJ2blt4Bb0T80abOEcpE7VENuoAag1aT6L1Dd4Sev9IaSXy8SigOvzzvgqR6mCJo8Cl0o02WcKfqYaqJfWlYoi1hcaC1AhhCURKuHkY/tSBBn+Uqm4APK8vjv/X2DkTSH0hfxrOMx4JQEL5HWEGC3I3KmNsWcPjGsg==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 357ea3e5..cf29caa3 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "GLX2zk5TmPxaGkLJnfKSkxsg2FBBsQ0OsbI/4CCPldA9jZGLbFrjLl2jkIH9jVMibBzAxVzvuJ97p0UWC6EL/pcBr1X3BzsUffpDVqkFJs5tjwJRvdP5LzwseR5abaBhZqRoZI44ibYLE/kckut2A73QujEynr9aMPkmsoaT87CbVgrIDGBOE0kI/VAzkxfiI50WY/qtiJT61HiSRooGl+gLgBWdisMCJGBVFPlcgl2RYy9hnYIbl3vR69phzn5T6uRZGk7a+jIh8HLoh/CONUcYSkM0azt9BVQBnA2Wzf0DwfCm1/+FN7kaszsXZLWxoH/ne8HbL9aHcqPar2Kx9w==", + "WorldSeed": "iFE2JF4wKdnXBI5UG3/AB1gS9Wfu8wEvUgw05DJyZG/5x+Qwn1DS2nPDEYfgdInlY5XARWlsJnAfXqDP1oqacvlk5F0mYeyKIXayXTBI0+uF7bO7MjrL3FKHkvLrY7UJrmsXuDaZP0JOy1Uac3WlMkLv9e6H7wGHk4K/M9fjZeEX+rCpC61vRJ2blt4Bb0T80abOEcpE7VENuoAag1aT6L1Dd4Sev9IaSXy8SigOvzzvgqR6mCJo8Cl0o02WcKfqYaqJfWlYoi1hcaC1AhhCURKuHkY/tSBBn+Uqm4APK8vjv/X2DkTSH0hfxrOMx4JQEL5HWEGC3I3KmNsWcPjGsg==", "Version": 10, "MobileVersion": "4.15.17.0", - "BuildLabel": "2023.10.26.09.51/140Z1pfbLIMU884jpJRytQ", - "Time": 1698925971, + "BuildLabel": "2023.10.26.09.51/g7gbGLwXqPGGnYpd-msfng", + "Time": 1699179541, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -67,39 +67,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "651efb8630eb1e374606be0e" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Chroma Prime and Zephyr Prime are back!" }, - { "LanguageCode": "fr", "Message": "Chroma Prime et Zephyr Prime sont de retour !" }, - { "LanguageCode": "it", "Message": "Chroma Prime e Zephyr Prime sono tornati!" }, - { "LanguageCode": "de", "Message": "Chroma Prime und Zephyr Prime sind zurück!" }, - { "LanguageCode": "es", "Message": "¡Chroma Prime y Zephyr Prime están de vuelta!" }, - { "LanguageCode": "pt", "Message": "O Chroma Prime e a Zephyr Prime voltaram!" }, - { "LanguageCode": "ru", "Message": "Хрома Прайм и Зефир Прайм вернулись!" }, - { "LanguageCode": "pl", "Message": "Chroma Prime i Zephyr Prime powrócili!" }, - { "LanguageCode": "uk", "Message": "Хрома-прайм і Зефіра-прайм повертаються!" }, - { "LanguageCode": "tr", "Message": "Chroma Prime ve Zephyr Prime geri döndü!" }, - { "LanguageCode": "ja", "Message": "Chroma PrimeとZephyr Primeが復帰!" }, - { "LanguageCode": "zh", "Message": "Chroma Prime 和 Zephyr Prime 现已回归!" }, - { "LanguageCode": "ko", "Message": "크로마 프라임 및 제피르 프라임이 돌아왔습니다!" }, - { "LanguageCode": "tc", "Message": "Chroma Prime 以及 Zephyr Prime 回歸了!" } - ], - "Prop": "https://www.warframe.com/news/zephyr-and-chroma-prime-vault-en?utm_medium=in-game&utm_source=in-game&utm_campaign=2021-10-PrimeResurgence", - "Date": { "$date": { "$numberLong": "1696489200000" } }, - "EventStartDate": { "$date": { "$numberLong": "1696489200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/3ec8cb5c44f40c68e02c705875af713c.jpeg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "652ff3fd0b4e20294e085807" }, - "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Update 34" }], - "Prop": "https://www.warframe.com/updates/pc/34-0-0", - "Date": { "$date": { "$numberLong": "1697640840000" } }, - "Priority": true, - "MobileOnly": false - }, { "_id": { "$oid": "652ff61922ce61c81d09480e" }, "Messages": [{ "LanguageCode": "ja", "Message": "アップデート34:Dagathの深淵 パッチノート" }], @@ -329,23 +296,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "653fff02f138560d48060da3" }, - "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Hotfix 33.0.6" }], - "Prop": "https://www.warframe.com/updates/pc/34-0-6", - "Date": { "$date": { "$numberLong": "1698692280000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "654019ce3e71d844f10f4e0b" }, - "Messages": [{ "LanguageCode": "en", "Message": "PSA: Dullahan Mask + Dog Days Ephemera Removal on Nov 1st!" }], - "Prop": "https://forums.warframe.com/topic/1370661-psa-dullahan-mask-and-dog-days-ephemera-removal-nov-1-3pm-et/", - "Date": { "$date": { "$numberLong": "1698699660000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "65426158e60609918a08b0e7" }, "Messages": [ @@ -449,23 +399,95 @@ "ImageUrl": "https://warframe-web-assets-dev.nyc3.cdn.digitaloceanspaces.com/uploads/cms/Nora's_Investigation_Templates_16x9_4k.png", "Priority": false, "MobileOnly": false + }, + { + "_id": { "$oid": "6543ba493017ebbe9803aacd" }, + "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Hotfix 34.0.7" }], + "Prop": "https://www.warframe.com/updates/pc/34-0-7", + "Date": { "$date": { "$numberLong": "1698935940000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "6543e628b1a68db9800fb00e" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Nezha Prime and Octavia Prime are back!" }, + { "LanguageCode": "fr", "Message": "Nezha Prime et Octavia Prime sont de retour !" }, + { "LanguageCode": "it", "Message": "Nezha Prime e Octavia Prime stanno tornando!" }, + { "LanguageCode": "de", "Message": "Nezha Prime und Octavia Prime sind zurück!" }, + { "LanguageCode": "es", "Message": "¡Nezha Prime y Octavia Prime están de vuelta!" }, + { "LanguageCode": "pt", "Message": "O Nezha Prime e a Octavia Prime voltaram!" }, + { "LanguageCode": "ru", "Message": "Нэчжа Прайм и Октавия Прайм возвращаются!" }, + { "LanguageCode": "pl", "Message": "Nezha Prime i Octavia Prime powrócili!" }, + { "LanguageCode": "uk", "Message": "Неджа-прайм і Октавія-прайм повертаються!" }, + { "LanguageCode": "tr", "Message": "Nezha Prime ve Octavia Prime geri döndü!" }, + { "LanguageCode": "ja", "Message": "Nezha PrimeとOctavia Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Nezha Prime 和 Octavia Prime 现已回归!" }, + { "LanguageCode": "ko", "Message": "나타 프라임과 옥타비아 프라임이 돌아왔습니다!" }, + { "LanguageCode": "tc", "Message": "Nezha Prime 以及 Octavia Prime 回歸了!" } + ], + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-PrimeResurgenceNezhaOctaviaIGN", + "Date": { "$date": { "$numberLong": "1698948480000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/prime-resurgence/rotations/nezha-octavia/masthead-keyart-desktop.png", + "Priority": false, + "MobileOnly": false } ], "Goals": [], - "Alerts": [], + "Alerts": [ + { + "_id": { "$oid": "6543f40fa0ae5796cf06c709" }, + "Activation": { "$date": { "$numberLong": "1699034400000" } }, + "Expiry": { "$date": { "$numberLong": "1700247600000" } }, + "MissionInfo": { + "location": "SolNode43", + "missionType": "MT_TERRITORY", + "faction": "FC_CORPUS", + "difficulty": 1, + "missionReward": { "credits": 10000, "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/Forma", "ItemCount": 3 }] }, + "levelOverride": "/Lotus/Levels/Proc/Corpus/CorpusOutpostInterception", + "enemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadDefenseB", + "minEnemyLevel": 20, + "maxEnemyLevel": 30, + "descText": "/Lotus/Language/Alerts/TennoUnitedAlert", + "maxWaveNum": 2 + }, + "Tag": "LotusGift", + "ForceUnlock": true + }, + { + "_id": { "$oid": "6543f47b76f923206c0bda1a" }, + "Activation": { "$date": { "$numberLong": "1699034400000" } }, + "Expiry": { "$date": { "$numberLong": "1700247600000" } }, + "MissionInfo": { + "location": "SolNode164", + "missionType": "MT_DEFENSE", + "faction": "FC_INFESTATION", + "difficulty": 1, + "missionReward": { "credits": 10000, "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/FormaUmbra", "ItemCount": 1 }] }, + "levelOverride": "/Lotus/Levels/Proc/Infestation/InfestedCorpusShipDefense", + "enemySpec": "/Lotus/Types/Game/EnemySpecs/InfestedDefenseB", + "minEnemyLevel": 20, + "maxEnemyLevel": 30, + "descText": "/Lotus/Language/Alerts/TennoUnitedAlert", + "maxWaveNum": 10 + }, + "Tag": "LotusGift" + } + ], "Sorties": [ { - "_id": { "$oid": "6542727d2c427e6c0063a237" }, - "Activation": { "$date": { "$numberLong": "1698854400000" } }, - "Expiry": { "$date": { "$numberLong": "1698940800000" } }, + "_id": { "$oid": "654666fdc8c4aea29f442468" }, + "Activation": { "$date": { "$numberLong": "1699113600000" } }, + "Expiry": { "$date": { "$numberLong": "1699203600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 44602, - "Boss": "SORTIE_BOSS_ALAD", + "Seed": 79608, + "Boss": "SORTIE_BOSS_VOR", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_PUNCTURE", "node": "SolNode51", "tileset": "CorpusOutpostTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_HAZARD_FIRE", "node": "SolNode104", "tileset": "CorpusShipTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode53", "tileset": "CorpusGasCityTileset" } + { "missionType": "MT_RETRIEVAL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode144", "tileset": "GrineerShipyardsTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode24", "tileset": "GrineerForestTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", "node": "SolNode108", "tileset": "GrineerAsteroidTileset" } ], "Twitter": true } @@ -487,435 +509,208 @@ ], "SyndicateMissions": [ { - "_id": { "$oid": "654275c5446fd3da1d66e1d9" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934162" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "ArbitersSyndicate", - "Seed": 44602, - "Nodes": ["SolNode26", "SolNode113", "SolNode101", "SolNode42", "SolNode205", "SolNode153", "SolNode226"] + "Seed": 79608, + "Nodes": ["SolNode79", "SolNode103", "SettlementNode2", "SolNode205", "SolNode78", "SolNode64", "SolNode401"] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1dc" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "EventSyndicate", - "Seed": 35860, - "Nodes": [] - }, - { - "_id": { "$oid": "654275c5446fd3da1d66e1db" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 88519, - "Nodes": [] - }, - { - "_id": { "$oid": "654275c5446fd3da1d66e1da" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934163" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 88898, - "Nodes": ["SolNode63", "SolNode46", "SolNode132", "SolNode96", "SettlementNode1", "SolNode74", "SolNode195"] + "Seed": 73673, + "Nodes": ["SolNode59", "SolNode224", "SolNode710", "SolNode209", "SolNode48", "SolNode57", "SettlementNode14"] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1dd" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934164" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 31396, + "Nodes": [] + }, + { + "_id": { "$oid": "65466a4573ca98af11934166" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "KahlSyndicate", - "Seed": 54163, + "Seed": 73120, "Nodes": [] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1df" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "QuillsSyndicate", - "Seed": 90424, + "_id": { "$oid": "65466a4573ca98af11934165" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "EventSyndicate", + "Seed": 32981, "Nodes": [] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1de" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934167" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "NewLokaSyndicate", - "Seed": 89415, - "Nodes": ["SolNode79", "SolNode107", "SolNode12", "SettlementNode11", "SolNode70", "SolNode30", "SolNode177"] + "Seed": 8913, + "Nodes": ["SolNode119", "SolNode63", "SolNode25", "SolNode46", "SolNode204", "SolNode175", "SolNode408"] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1e0" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934168" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "QuillsSyndicate", + "Seed": 18024, + "Nodes": [] + }, + { + "_id": { "$oid": "65466a4573ca98af11934169" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "PerrinSyndicate", - "Seed": 62303, - "Nodes": ["SolNode11", "SolNode15", "SettlementNode14", "SolNode224", "SolNode84", "SolNode188", "SolNode172"] + "Seed": 60812, + "Nodes": ["SolNode107", "SolNode45", "SolNode217", "SolNode19", "SolNode21", "SolNode167", "SolNode62"] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1e1" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af1193416a" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 79361, + "Seed": 41529, "Nodes": [] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1e2" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af1193416b" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 64408, + "Seed": 78967, "Nodes": [] }, { - "_id": { "$oid": "654275c5446fd3da1d66e1e3" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 83997, - "Nodes": [] - }, - { - "_id": { "$oid": "654275c5446fd3da1d66e1e4" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 80412, - "Nodes": [] - }, - { - "_id": { "$oid": "654275c5446fd3da1d66e1e6" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 65449, - "Nodes": [] - }, - { - "_id": { "$oid": "654275c5446fd3da1d66e1e5" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af1193416e" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 36678, + "Seed": 91746, "Nodes": [] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1e8" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 39272, - "Nodes": [] - }, - { - "_id": { "$oid": "654275c6446fd3da1d66e1e9" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 91114, - "Nodes": [] - }, - { - "_id": { "$oid": "654275c6446fd3da1d66e1e7" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934170" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 64565, + "Seed": 10529, "Nodes": [] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1ea" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af1193416d" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 80310, + "Nodes": [] + }, + { + "_id": { "$oid": "65466a4573ca98af1193416c" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 96318, + "Nodes": [] + }, + { + "_id": { "$oid": "65466a4573ca98af1193416f" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 54391, + "Nodes": [] + }, + { + "_id": { "$oid": "65466a4573ca98af11934173" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 73486, + "Seed": 73847, "Nodes": [] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1ec" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 2659, + "_id": { "$oid": "65466a4573ca98af11934171" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 43183, "Nodes": [] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1eb" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934172" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 65009, + "Nodes": [] + }, + { + "_id": { "$oid": "65466a4573ca98af11934174" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 13857, + "Seed": 74943, "Nodes": [] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1ee" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 80484, + "_id": { "$oid": "65466a4573ca98af11934175" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 69841, "Nodes": [] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1ed" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, + "_id": { "$oid": "65466a4573ca98af11934176" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, "Tag": "RedVeilSyndicate", - "Seed": 48842, - "Nodes": ["SolNode223", "SolNode22", "SolNode216", "SolNode711", "SolNode181", "SettlementNode15", "SolNode126"] + "Seed": 11935, + "Nodes": ["SolNode109", "SolNode89", "SolNode125", "SettlementNode12", "SolNode409", "SolNode6", "SolNode196"] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1ef" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "VoxSyndicate", - "Seed": 6504, + "_id": { "$oid": "65466a4573ca98af11934177" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 82234, "Nodes": [] }, { - "_id": { "$oid": "654275c6446fd3da1d66e1f0" }, - "Activation": { "$date": { "$numberLong": "1698854341665" } }, - "Expiry": { "$date": { "$numberLong": "1698940740000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 8732, - "Nodes": ["SolNode128", "SolNode16", "SolNode103", "SolNode217", "SolNode175", "SolNode185", "SolNode19"] + "_id": { "$oid": "65466a4573ca98af11934178" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "VoxSyndicate", + "Seed": 85645, + "Nodes": [] }, { - "_id": { "$oid": "65436b980000000000000002" }, - "Activation": { "$date": { "$numberLong": "1698917272632" } }, - "Expiry": { "$date": { "$numberLong": "1698926271505" } }, + "_id": { "$oid": "65466a4573ca98af11934179" }, + "Activation": { "$date": { "$numberLong": "1699113541408" } }, + "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 10636, + "Nodes": ["SolNode2", "SolNode15", "SolNode58", "SolNode225", "SettlementNode15", "SolNode171", "SolNode102"] + }, + { + "_id": { "$oid": "654767000000000000000002" }, + "Activation": { "$date": { "$numberLong": "1699178240001" } }, + "Expiry": { "$date": { "$numberLong": "1699187238875" } }, "Tag": "EntratiSyndicate", - "Seed": 88921, + "Seed": 85537, "Nodes": [], "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [5, 5, 5] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [11, 11, 11] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", - "masteryReq": 5, - "minEnemyLevel": 25, - "maxEnemyLevel": 30, - "endless": true, - "bonusXpMultiplier": 0.15000001, - "xpAmounts": [14, 14, 14] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", - "masteryReq": 2, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 29] - }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [23, 23, 23, 23, 45] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [25, 25, 25, 25, 50] - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", - "masteryReq": 5, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [2, 2, 2, 4], - "locationTag": "ChamberB", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [4, 4, 4, 5], - "locationTag": "ChamberA", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", - "masteryReq": 5, - "minEnemyLevel": 50, - "maxEnemyLevel": 60, - "xpAmounts": [5, 5, 5, 7], - "locationTag": "ChamberC", - "isVault": true - } - ] - }, - { - "_id": { "$oid": "65436b980000000000000007" }, - "Activation": { "$date": { "$numberLong": "1698917272632" } }, - "Expiry": { "$date": { "$numberLong": "1698926271505" } }, - "Tag": "CetusSyndicate", - "Seed": 88921, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [590, 590, 590] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [600, 600, 600, 880] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [630, 630, 630, 630, 1240] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [700, 700, 700, 700, 1360] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [760, 760, 760, 760, 1490] - } - ] - }, - { - "_id": { "$oid": "65436b980000000000000023" }, - "Activation": { "$date": { "$numberLong": "1698917272632" } }, - "Expiry": { "$date": { "$numberLong": "1698926271505" } }, - "Tag": "SolarisSyndicate", - "Seed": 88921, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [390, 390, 390] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [700, 700, 700] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [640, 640, 640, 940] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 550, 1080] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [710, 710, 710, 710, 1390] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [790, 790, 790, 790, 1550] - } - ] - }, - { - "_id": { "$oid": "65436b980000000000000027" }, - "Activation": { "$date": { "$numberLong": "1698917272632" } }, - "Expiry": { "$date": { "$numberLong": "1698926271505" } }, - "Tag": "ZarimanSyndicate", - "Seed": 88921, - "Nodes": [] - }, - { - "_id": { "$oid": "65438ebf0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1698926271506" } }, - "Expiry": { "$date": { "$numberLong": "1698935270380" } }, - "Tag": "EntratiSyndicate", - "Seed": 2180, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, @@ -923,11 +718,11 @@ }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [9, 9, 9] + "xpAmounts": [12, 12, 12] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", @@ -945,18 +740,18 @@ "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 28] + "xpAmounts": [19, 19, 19, 29] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 40] + "xpAmounts": [20, 20, 20, 20, 39] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -964,7 +759,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -973,7 +768,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -982,7 +777,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -993,48 +788,48 @@ ] }, { - "_id": { "$oid": "65438ebf0000000000000007" }, - "Activation": { "$date": { "$numberLong": "1698926271506" } }, - "Expiry": { "$date": { "$numberLong": "1698935270380" } }, + "_id": { "$oid": "654767000000000000000007" }, + "Activation": { "$date": { "$numberLong": "1699178240001" } }, + "Expiry": { "$date": { "$numberLong": "1699187238875" } }, "Tag": "CetusSyndicate", - "Seed": 2180, + "Seed": 85537, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [440, 440, 440] + "xpAmounts": [470, 470, 470] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [590, 590, 590] + "xpAmounts": [610, 610, 610] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 900] + "xpAmounts": [570, 570, 570, 840] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [620, 620, 620, 620, 1210] + "xpAmounts": [600, 600, 600, 600, 1170] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, @@ -1042,81 +837,15 @@ }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [790, 790, 790, 790, 1550] - } - ] - }, - { - "_id": { "$oid": "65438ebf0000000000000023" }, - "Activation": { "$date": { "$numberLong": "1698926271506" } }, - "Expiry": { "$date": { "$numberLong": "1698935270380" } }, - "Tag": "SolarisSyndicate", - "Seed": 2180, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [460, 460, 460] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [590, 590, 590] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [630, 630, 630, 920] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [630, 630, 630, 630, 1230] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [740, 740, 740, 740, 1460] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, @@ -1125,251 +854,296 @@ ] }, { - "_id": { "$oid": "65438ebf0000000000000027" }, - "Activation": { "$date": { "$numberLong": "1698926271506" } }, - "Expiry": { "$date": { "$numberLong": "1698935270380" } }, + "_id": { "$oid": "654767000000000000000023" }, + "Activation": { "$date": { "$numberLong": "1699178240001" } }, + "Expiry": { "$date": { "$numberLong": "1699187238875" } }, + "Tag": "SolarisSyndicate", + "Seed": 85537, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [370, 370, 370] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [750, 750, 750] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [620, 620, 620, 920] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [630, 630, 630, 630, 1240] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [700, 700, 700, 700, 1380] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [780, 780, 780, 780, 1520] + } + ] + }, + { + "_id": { "$oid": "654767000000000000000027" }, + "Activation": { "$date": { "$numberLong": "1699178240001" } }, + "Expiry": { "$date": { "$numberLong": "1699187238875" } }, "Tag": "ZarimanSyndicate", - "Seed": 2180, + "Seed": 85538, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "65437c45a5a4a9c9e5a1262d" }, - "Region": 12, - "Seed": 13717, - "Activation": { "$date": { "$numberLong": "1698921541963" } }, - "Expiry": { "$date": { "$numberLong": "1698928260833" } }, - "Node": "SolNode181", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65437c46a5a4a9c9e5a1262e" }, - "Region": 15, - "Seed": 31939, - "Activation": { "$date": { "$numberLong": "1698921541963" } }, - "Expiry": { "$date": { "$numberLong": "1698926902928" } }, - "Node": "SolNode408", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65437c81755b524ce29107d3" }, - "Region": 2, - "Seed": 22222, - "Activation": { "$date": { "$numberLong": "1698921601146" } }, - "Expiry": { "$date": { "$numberLong": "1698927477428" } }, - "Node": "SolNode66", - "MissionType": "MT_INTEL", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "65437c81755b524ce29107d4" }, - "Region": 3, - "Seed": 41267, - "Activation": { "$date": { "$numberLong": "1698921601146" } }, - "Expiry": { "$date": { "$numberLong": "1698927259764" } }, - "Node": "SolNode59", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "65437dad4414f4b6f4d7abbf" }, - "Region": 10, - "Seed": 48422, - "Activation": { "$date": { "$numberLong": "1698921901588" } }, - "Expiry": { "$date": { "$numberLong": "1698926847046" } }, - "Node": "SolNode140", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "65437dad4414f4b6f4d7abc0" }, - "Region": 16, - "Seed": 17637, - "Activation": { "$date": { "$numberLong": "1698921901588" } }, - "Expiry": { "$date": { "$numberLong": "1698927913450" } }, - "Node": "SettlementNode11", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "65437e25a5aaadaaf2267991" }, - "Region": 10, - "Seed": 87791, - "Activation": { "$date": { "$numberLong": "1698922021550" } }, - "Expiry": { "$date": { "$numberLong": "1698927207138" } }, - "Node": "SolNode131", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "65437e25a5aaadaaf2267992" }, - "Region": 5, - "Seed": 69763, - "Activation": { "$date": { "$numberLong": "1698922021550" } }, - "Expiry": { "$date": { "$numberLong": "1698927877073" } }, - "Node": "SolNode100", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "65437f153cf8030bf2325f7f" }, + "_id": { "$oid": "65475af9997395c499a80733" }, "Region": 7, - "Seed": 42112, - "Activation": { "$date": { "$numberLong": "1698922261157" } }, - "Expiry": { "$date": { "$numberLong": "1698928708401" } }, + "Seed": 51742, + "Activation": { "$date": { "$numberLong": "1699175161380" } }, + "Expiry": { "$date": { "$numberLong": "1699179891235" } }, "Node": "SolNode122", "MissionType": "MT_DEFENSE", "Modifier": "VoidT3" }, { - "_id": { "$oid": "65437f153cf8030bf2325f80" }, - "Region": 8, - "Seed": 56630, - "Activation": { "$date": { "$numberLong": "1698922261157" } }, - "Expiry": { "$date": { "$numberLong": "1698927253123" } }, - "Node": "SolNode84", - "MissionType": "MT_INTEL", - "Modifier": "VoidT3" + "_id": { "$oid": "65475badd8fff525866c1634" }, + "Region": 19, + "Seed": 37307, + "Activation": { "$date": { "$numberLong": "1699175341893" } }, + "Expiry": { "$date": { "$numberLong": "1699182116561" } }, + "Node": "SolNode745", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT5", + "Hard": true }, { - "_id": { "$oid": "65437f153cf8030bf2325f81" }, + "_id": { "$oid": "65475badd8fff525866c1636" }, + "Region": 19, + "Seed": 96430, + "Activation": { "$date": { "$numberLong": "1699175341893" } }, + "Expiry": { "$date": { "$numberLong": "1699180277704" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "65475e41eadcc91cf3dd3f94" }, + "Region": 15, + "Seed": 94732, + "Activation": { "$date": { "$numberLong": "1699176001572" } }, + "Expiry": { "$date": { "$numberLong": "1699180882653" } }, + "Node": "SolNode400", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "65475e41eadcc91cf3dd3f95" }, "Region": 13, - "Seed": 2836, - "Activation": { "$date": { "$numberLong": "1698922261157" } }, - "Expiry": { "$date": { "$numberLong": "1698929339384" } }, - "Node": "SolNode215", - "MissionType": "MT_INTEL", - "Modifier": "VoidT3" + "Seed": 29827, + "Activation": { "$date": { "$numberLong": "1699176001572" } }, + "Expiry": { "$date": { "$numberLong": "1699179705423" } }, + "Node": "SolNode204", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3", + "Hard": true }, { - "_id": { "$oid": "65437f8d7bfcae03fbb35220" }, + "_id": { "$oid": "65475e41eadcc91cf3dd3f96" }, "Region": 7, - "Seed": 42825, - "Activation": { "$date": { "$numberLong": "1698922381517" } }, - "Expiry": { "$date": { "$numberLong": "1698928435422" } }, + "Seed": 95373, + "Activation": { "$date": { "$numberLong": "1699176001572" } }, + "Expiry": { "$date": { "$numberLong": "1699182065511" } }, "Node": "SolNode64", "MissionType": "MT_TERRITORY", "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "65437f8d7bfcae03fbb35221" }, - "Region": 8, - "Seed": 36768, - "Activation": { "$date": { "$numberLong": "1698922381517" } }, - "Expiry": { "$date": { "$numberLong": "1698926140337" } }, - "Node": "SolNode49", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "6543816d1d53538ae42d594a" }, - "Region": 19, - "Seed": 68830, - "Activation": { "$date": { "$numberLong": "1698922861519" } }, - "Expiry": { "$date": { "$numberLong": "1698926887328" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "6543816d1d53538ae42d594b" }, - "Region": 19, - "Seed": 45266, - "Activation": { "$date": { "$numberLong": "1698922861519" } }, - "Expiry": { "$date": { "$numberLong": "1698927901289" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "6543816d1d53538ae42d594c" }, - "Region": 19, - "Seed": 2027, - "Activation": { "$date": { "$numberLong": "1698922861519" } }, - "Expiry": { "$date": { "$numberLong": "1698926682735" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "654385e1aa164fc9fb36c5be" }, - "Region": 4, - "Seed": 21948, - "Activation": { "$date": { "$numberLong": "1698924001262" } }, - "Expiry": { "$date": { "$numberLong": "1698928015900" } }, - "Node": "SolNode41", + "_id": { "$oid": "65475eb97f1faf59a60e50e0" }, + "Region": 10, + "Seed": 41646, + "Activation": { "$date": { "$numberLong": "1699176121917" } }, + "Expiry": { "$date": { "$numberLong": "1699180065098" } }, + "Node": "SolNode132", "MissionType": "MT_INTEL", - "Modifier": "VoidT1" + "Modifier": "VoidT2", + "Hard": true }, { - "_id": { "$oid": "654385e1aa164fc9fb36c5bf" }, - "Region": 3, - "Seed": 82932, - "Activation": { "$date": { "$numberLong": "1698924001262" } }, - "Expiry": { "$date": { "$numberLong": "1698930987458" } }, - "Node": "SolNode39", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT1" + "_id": { "$oid": "65475eb97f1faf59a60e50e1" }, + "Region": 16, + "Seed": 86992, + "Activation": { "$date": { "$numberLong": "1699176121917" } }, + "Expiry": { "$date": { "$numberLong": "1699181416840" } }, + "Node": "SettlementNode14", + "MissionType": "MT_INTEL", + "Modifier": "VoidT2", + "Hard": true }, { - "_id": { "$oid": "65438a55ce00fdac38cfd9ba" }, + "_id": { "$oid": "6547609943506d770bdacde2" }, + "Region": 9, + "Seed": 93332, + "Activation": { "$date": { "$numberLong": "1699176601141" } }, + "Expiry": { "$date": { "$numberLong": "1699182303043" } }, + "Node": "SolNode102", + "MissionType": "MT_INTEL", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "6547609943506d770bdacde3" }, + "Region": 12, + "Seed": 45711, + "Activation": { "$date": { "$numberLong": "1699176601141" } }, + "Expiry": { "$date": { "$numberLong": "1699182235151" } }, + "Node": "SolNode196", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "6547641df12f496e869bc3e7" }, "Region": 19, - "Seed": 73439, - "Activation": { "$date": { "$numberLong": "1698925141819" } }, - "Expiry": { "$date": { "$numberLong": "1698929773504" } }, + "Seed": 29763, + "Activation": { "$date": { "$numberLong": "1699177501817" } }, + "Expiry": { "$date": { "$numberLong": "1699181686342" } }, "Node": "SolNode746", "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT5" }, { - "_id": { "$oid": "65438a55ce00fdac38cfd9bb" }, + "_id": { "$oid": "6547641df12f496e869bc3e8" }, "Region": 19, - "Seed": 36825, - "Activation": { "$date": { "$numberLong": "1698925141819" } }, - "Expiry": { "$date": { "$numberLong": "1698931406495" } }, - "Node": "SolNode742", - "MissionType": "MT_DEFENSE", + "Seed": 12372, + "Activation": { "$date": { "$numberLong": "1699177501817" } }, + "Expiry": { "$date": { "$numberLong": "1699181530003" } }, + "Node": "SolNode747", + "MissionType": "MT_INTEL", "Modifier": "VoidT5" }, { - "_id": { "$oid": "65438b09e66e687393f9faba" }, - "Region": 12, - "Seed": 46172, - "Activation": { "$date": { "$numberLong": "1698925321611" } }, - "Expiry": { "$date": { "$numberLong": "1698929804293" } }, - "Node": "SolNode177", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT4", + "_id": { "$oid": "65476459683b569786b00a67" }, + "Region": 15, + "Seed": 87955, + "Activation": { "$date": { "$numberLong": "1699177561882" } }, + "Expiry": { "$date": { "$numberLong": "1699182415892" } }, + "Node": "SolNode401", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65476459683b569786b00a68" }, + "Region": 11, + "Seed": 5731, + "Activation": { "$date": { "$numberLong": "1699177561882" } }, + "Expiry": { "$date": { "$numberLong": "1699183172690" } }, + "Node": "SolNode173", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "6547663948ceacb7c1f811fe" }, + "Region": 3, + "Seed": 18436, + "Activation": { "$date": { "$numberLong": "1699178041884" } }, + "Expiry": { "$date": { "$numberLong": "1699182228755" } }, + "Node": "SolNode39", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "65438b09e66e687393f9fabb" }, - "Region": 15, - "Seed": 26087, - "Activation": { "$date": { "$numberLong": "1698925321611" } }, - "Expiry": { "$date": { "$numberLong": "1698931463028" } }, - "Node": "SolNode403", + "_id": { "$oid": "654766ed829193a435ae8a82" }, + "Region": 5, + "Seed": 35638, + "Activation": { "$date": { "$numberLong": "1699178221590" } }, + "Expiry": { "$date": { "$numberLong": "1699183893884" } }, + "Node": "SolNode121", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "654766ed829193a435ae8a83" }, + "Region": 16, + "Seed": 24194, + "Activation": { "$date": { "$numberLong": "1699178221590" } }, + "Expiry": { "$date": { "$numberLong": "1699183418620" } }, + "Node": "SettlementNode15", "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4", - "Hard": true + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "65476a71255a7b25fddd6ce3" }, + "Region": 3, + "Seed": 44609, + "Activation": { "$date": { "$numberLong": "1699179121372" } }, + "Expiry": { "$date": { "$numberLong": "1699185765195" } }, + "Node": "SolNode89", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "65476a71255a7b25fddd6ce4" }, + "Region": 4, + "Seed": 87110, + "Activation": { "$date": { "$numberLong": "1699179121372" } }, + "Expiry": { "$date": { "$numberLong": "1699184283552" } }, + "Node": "SolNode46", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "65476a71255a7b25fddd6ce5" }, + "Region": 2, + "Seed": 15621, + "Activation": { "$date": { "$numberLong": "1699179121372" } }, + "Expiry": { "$date": { "$numberLong": "1699186296580" } }, + "Node": "SolNode123", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT1" } ], "GlobalUpgrades": [], "FlashSales": [ { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", + "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1377,7 +1151,7 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 325, + "PremiumOverride": 20, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -1397,7 +1171,7 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", + "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1405,28 +1179,14 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 20, + "PremiumOverride": 325, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 430, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "StartDate": { "$date": { "$numberLong": "1662422400000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, "HideFromMarket": false, @@ -1451,20 +1211,7 @@ "BogoGet": 0 }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, @@ -1472,63 +1219,7 @@ "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 195, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 80, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696266000000" } }, - "EndDate": { "$date": { "$numberLong": "1704038340000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 35, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 165, + "PremiumOverride": 430, "BogoBuy": 0, "BogoGet": 0, "UrlOverride": "" @@ -1573,6 +1264,89 @@ "EndDate": { "$date": { "$numberLong": "1704038340000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 80, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "StartDate": { "$date": { "$numberLong": "1662422400000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696266000000" } }, + "EndDate": { "$date": { "$numberLong": "1704038340000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 35, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 195, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 165, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, { "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", "ShowInMarket": true, @@ -1588,7 +1362,20 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D", + "TypeName": "/Lotus/Powersuits/EntratiMech/NechroTech", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 25, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 281, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1696528800000" } }, + "EndDate": { "$date": { "$numberLong": "1699984800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sigils/ConqueraSigil", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1616,20 +1403,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Powersuits/EntratiMech/NechroTech", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 281, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696528800000" } }, - "EndDate": { "$date": { "$numberLong": "1699984800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Sigils/ConqueraSigil", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1671,35 +1445,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022A", + "TypeName": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1727,7 +1473,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022A", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1741,30 +1487,32 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", + "TypeName": "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1697542380000" } }, - "EndDate": { "$date": { "$numberLong": "1700146800000" } } + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1697542380000" } }, - "EndDate": { "$date": { "$numberLong": "1700146800000" } } + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", @@ -1779,6 +1527,19 @@ "StartDate": { "$date": { "$numberLong": "1696941480000" } }, "EndDate": { "$date": { "$numberLong": "1894365480000" } } }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1697542380000" } }, + "EndDate": { "$date": { "$numberLong": "1700146800000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache02", "ShowInMarket": true, @@ -1793,6 +1554,33 @@ "EndDate": { "$date": { "$numberLong": "1701403140000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1697542380000" } }, + "EndDate": { "$date": { "$numberLong": "1700146800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache04", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache03", "ShowInMarket": true, @@ -1807,34 +1595,6 @@ "EndDate": { "$date": { "$numberLong": "1701403140000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache04", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache07", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, { "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache05", "ShowInMarket": true, @@ -1849,34 +1609,6 @@ "EndDate": { "$date": { "$numberLong": "1701403140000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache08", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache06", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, { "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache10", "ShowInMarket": true, @@ -1892,7 +1624,21 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache", + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache06", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache08", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1918,6 +1664,34 @@ "StartDate": { "$date": { "$numberLong": "1698847200000" } }, "EndDate": { "$date": { "$numberLong": "1701403140000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache07", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } } ], "InGameMarket": { @@ -1929,21 +1703,21 @@ "Icon": "popular", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "/Lotus/Types/StoreItems/Packages/WarframeBundles/DagathItemsBundle", "/Lotus/Types/StoreItems/Packages/Halloween2023CompleteBundle", "/Lotus/Types/StoreItems/Packages/Halloween2023BatBundle", + "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", "/Lotus/Types/StoreItems/Packages/HarrowDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", "/Lotus/StoreItems/Powersuits/Runner/Runner", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/RevenantDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/RevenantDlxOperatorBundle", "/Lotus/StoreItems/Powersuits/Wraith/Wraith", - "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", "/Lotus/StoreItems/Types/Items/MiscItems/Forma", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem" ] }, { @@ -2001,164 +1775,164 @@ }, "Invasions": [ { - "_id": { "$oid": "6541905172ebde094bb9abc7" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode189", - "Count": 28488, - "Goal": 49000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "653adddd3cf07c066739049f" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 695546, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 485828, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1698796198922" } } - }, - { - "_id": { "$oid": "653f9036ffbb56495a399b6e" }, + "_id": { "$oid": "6544ca7e1d67687356a824a9" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode100", - "Count": -39005, - "Goal": 39000, + "Node": "SolNode212", + "Count": -3186, + "Goal": 50000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "654318e69ad0e9d8e8df7f10" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 954260, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 792639, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1699008116743" } } + }, + { + "_id": { "$oid": "6544ca7e1d67687356a824aa" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode212", + "Count": -34005, + "Goal": 34000, "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "653f9036ffbb56495a399b6e" }, + "ChainID": { "$oid": "654318e69ad0e9d8e8df7f10" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 774734, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 765200, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 14347, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1698747767870" } } + "DefenderMissionInfo": { "seed": 342262, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1699008116916" } } }, { - "_id": { "$oid": "6541179d0a9a83bb73c86588" }, + "_id": { "$oid": "654525e6c1df329b692f18aa" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode210", - "Count": -30057, + "Node": "SolNode51", + "Count": -30062, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": true, - "ChainID": { "$oid": "6540e089ff320027eb61af9a" }, + "ChainID": { "$oid": "6544eb4d9f8e95ffc244da10" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 985515, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 351011, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 488760, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1698764701179" } } + "DefenderMissionInfo": { "seed": 970769, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1699030502018" } } }, { - "_id": { "$oid": "6542a9911b5bd8bc8d833196" }, + "_id": { "$oid": "6545aa51a943aee915ed350f" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode144", - "Count": -22886, + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode53", + "Count": -30048, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "65428b190a64e74577a20b0b" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 357861, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 683894, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1698867601449" } } - }, - { - "_id": { "$oid": "6542a9911b5bd8bc8d833195" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode147", - "Count": -37415, - "Goal": 37000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "65428b190a64e74577a20b0b" }, + "ChainID": { "$oid": "65456e8e9a3f1ea8ba915b8f" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 689471, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 989270, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1698867601449" } } + "AttackerMissionInfo": { "seed": 66233, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 251063, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1699064401427" } } }, { - "_id": { "$oid": "6542c22d324c74254b38f529" }, + "_id": { "$oid": "654657c15150463957963b1f" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode19", + "Count": 0, + "Goal": 45000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "654657c15150463957963b1f" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 972959, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 707943, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1699179430714" } } + }, + { + "_id": { "$oid": "6546faa53f86d21ba40bb10e" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode131", - "Count": -46084, + "Node": "SolNode36", + "Count": -46501, "Goal": 46000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "65428b190a64e74577a20b0b" }, + "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 56284, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 711535, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1698873901736" } } + "AttackerMissionInfo": { "seed": 857827, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 864930, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1699156753034" } } }, { - "_id": { "$oid": "654302a12c68c509388c722d" }, + "_id": { "$oid": "65472859852c6678d5e2baf5" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode38", - "Count": -36753, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode113", + "Count": -25597, "Goal": 36000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "654302a12c68c509388c722d" }, + "Completed": false, + "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 224035, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 965449, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1698896586760" } } + "AttackerMissionInfo": { "seed": 401144, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 256755, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1699162201765" } } }, { - "_id": { "$oid": "654339b685eaf50c46074bc6" }, + "_id": { "$oid": "65472859852c6678d5e2baf4" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode102", - "Count": -35305, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "654302a12c68c509388c722d" }, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode99", + "Count": -7689, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": false, + "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 439077, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 71180, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1698904502041" } } + "AttackerMissionInfo": { "seed": 579106, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 482300, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1699162201765" } } }, { - "_id": { "$oid": "65434ecdccfd30bd45a1a80c" }, + "_id": { "$oid": "654746d138ba2d65c9678f30" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode4", - "Count": -28256, - "Goal": 48000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode16", + "Count": -1238, + "Goal": 43000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "654302a12c68c509388c722d" }, + "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 165582, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 290740, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1698909901619" } } + "AttackerMissionInfo": { "seed": 784057, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 732776, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1699170001671" } } }, { - "_id": { "$oid": "65434ecdccfd30bd45a1a80d" }, + "_id": { "$oid": "65470d65655bf890085023c2" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode48", - "Count": -30107, - "Goal": 42000, + "Node": "SolNode17", + "Count": -39641, + "Goal": 44000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "654302a12c68c509388c722d" }, + "ChainID": { "$oid": "65470d65655bf890085023c2" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 221317, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 213481, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 687525, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1698909901619" } } + "DefenderMissionInfo": { "seed": 804175, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1699161916497" } } } ], "HubEvents": [], @@ -2189,26 +1963,55 @@ "Expiry": { "$date": { "$numberLong": "1699189200000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "MercuryHUB" + "Node": "MercuryHUB", + "Manifest": [ + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnOrokinRifle/GrnOrokinRifleWeapon", "PrimePrice": 675, "RegularPrice": 625000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/DualStat/ElectEventShotgunMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/VoidTraderGorgon/VTGorgon", "PrimePrice": 600, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/GlaiveCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/PedistalPrime", "PrimePrice": 0, "RegularPrice": 1000000 }, + { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/BaroFireWorksCrate", "PrimePrice": 50, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA", "PrimePrice": 150, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorVoidTraderA", "PrimePrice": 500, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/SummerSolstice/SummerSolsticeTwinGrakatas", "PrimePrice": 300, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem", "PrimePrice": 450, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroTiara", "PrimePrice": 525, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropOstRugBaro", "PrimePrice": 225, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrineerLeverActionRifle/PrismaGrinlokWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisLatronPistol", "PrimePrice": 400, "RegularPrice": 215000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConH", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorA", "PrimePrice": 315, "RegularPrice": 215000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorL", "PrimePrice": 300, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorC", "PrimePrice": 325, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Wisp/WispAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape3Scarf", "PrimePrice": 500, "RegularPrice": 500000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroPlanter", "PrimePrice": 125, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } + ] } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1696528800000" } }, + "Activation": { "$date": { "$numberLong": "1698948000000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVZephyrPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVZephyrChromaPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNezhaPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNezhaOctaviaPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOctaviaPrimeSinglePack", "PrimePrice": 6 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostMagPrimeDualPack", "PrimePrice": 10, "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVChromaPrimeSinglePack", "PrimePrice": 6 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostPrimeSinglePack", "PrimePrice": 6, @@ -2221,16 +2024,17 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Tengu/ZephyrPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVCommodorePrimeSuit", "PrimePrice": 2 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTiborPrimeKavatArmor", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Tonfa/TonfaContestWinnerPrime/TonfaContestWinnerPrimeWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTiberon/PrimeTiberonRifle", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Dragon/ChromaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVImugiPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeChromaCape", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/RubicoPrime/RubicoPrimeWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeGram/PrimeGram", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Nezha/NezhaPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRanshaPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/EphemeraNezhaPrime", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Polearms/PrimeGuandao/PrimeGuandaoWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeZakti/PrimeZaktiPistol", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Bard/OctaviaPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVGlissandaPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeOctaviaSyandana", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropShawzinPrime", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTenora/TenoraPrimeWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimePandero/PanderoPrimeWeapon", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Powersuits/Frost/FrostPrime", "PrimePrice": 3, @@ -2291,8 +2095,8 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ZephyrPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ChromaPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NezhaPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OctaviaPrimeBobbleHead", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/FrostPrimeBobbleHead", "PrimePrice": 1, @@ -2305,12 +2109,12 @@ "StartDate": { "$date": { "$numberLong": "1693072800000" } }, "EndDate": { "$date": { "$numberLong": "1704081540000" } } }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionChromaZephyrVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionChromaZephyrVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionChromaZephyrVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNezhaOctaviaVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNezhaOctaviaVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultABronze", "RegularPrice": 1, @@ -2342,7 +2146,7 @@ "EndDate": { "$date": { "$numberLong": "1704081540000" } } } ], - "Expiry": { "$date": { "$numberLong": "1698948000000" } }, + "Expiry": { "$date": { "$numberLong": "1703185200000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -2431,88 +2235,88 @@ ], "VoidStorms": [ { - "_id": { "$oid": "65436e7102e41fffaaacd44e" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1698920401821" } }, - "Expiry": { "$date": { "$numberLong": "1698925801821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65436e7102e41fffaaacd451" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1698920401829" } }, - "Expiry": { "$date": { "$numberLong": "1698925801829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "65436e7102e41fffaaacd450" }, - "Node": "CrewBattleNode501", - "Activation": { "$date": { "$numberLong": "1698920401827" } }, - "Expiry": { "$date": { "$numberLong": "1698925801827" } }, + "_id": { "$oid": "65475031ecacab194fefd911" }, + "Node": "CrewBattleNode533", + "Activation": { "$date": { "$numberLong": "1699176001827" } }, + "Expiry": { "$date": { "$numberLong": "1699181401827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "65436e7102e41fffaaacd452" }, - "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1698920401832" } }, - "Expiry": { "$date": { "$numberLong": "1698925801832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65436e7102e41fffaaacd453" }, - "Node": "CrewBattleNode555", - "Activation": { "$date": { "$numberLong": "1698920401834" } }, - "Expiry": { "$date": { "$numberLong": "1698925801834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65436e7102e41fffaaacd44f" }, - "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1698920401825" } }, - "Expiry": { "$date": { "$numberLong": "1698925801825" } }, + "_id": { "$oid": "65475031ecacab194fefd910" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1699176001825" } }, + "Expiry": { "$date": { "$numberLong": "1699181401825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65437c8127cd64a88e16bfe7" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1698924001821" } }, - "Expiry": { "$date": { "$numberLong": "1698929401821" } }, + "_id": { "$oid": "65475031ecacab194fefd90f" }, + "Node": "CrewBattleNode522", + "Activation": { "$date": { "$numberLong": "1699176001821" } }, + "Expiry": { "$date": { "$numberLong": "1699181401821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65437c8127cd64a88e16bfe9" }, - "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1698924001827" } }, - "Expiry": { "$date": { "$numberLong": "1698929401827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "65437c8127cd64a88e16bfeb" }, + "_id": { "$oid": "65475031ecacab194fefd913" }, "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1698924001832" } }, - "Expiry": { "$date": { "$numberLong": "1698929401832" } }, + "Activation": { "$date": { "$numberLong": "1699176001832" } }, + "Expiry": { "$date": { "$numberLong": "1699181401832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "65437c8127cd64a88e16bfe8" }, - "Node": "CrewBattleNode515", - "Activation": { "$date": { "$numberLong": "1698924001825" } }, - "Expiry": { "$date": { "$numberLong": "1698929401825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65437c8127cd64a88e16bfea" }, - "Node": "CrewBattleNode525", - "Activation": { "$date": { "$numberLong": "1698924001829" } }, - "Expiry": { "$date": { "$numberLong": "1698929401829" } }, + "_id": { "$oid": "65475031ecacab194fefd912" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1699176001829" } }, + "Expiry": { "$date": { "$numberLong": "1699181401829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "65437c8127cd64a88e16bfec" }, - "Node": "CrewBattleNode554", - "Activation": { "$date": { "$numberLong": "1698924001834" } }, - "Expiry": { "$date": { "$numberLong": "1698929401834" } }, + "_id": { "$oid": "654754e1054e5b9a475ba2ad" }, + "Node": "CrewBattleNode555", + "Activation": { "$date": { "$numberLong": "1699176001834" } }, + "Expiry": { "$date": { "$numberLong": "1699181401834" } }, "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "654762f148291c43458dc474" }, + "Node": "CrewBattleNode518", + "Activation": { "$date": { "$numberLong": "1699179601821" } }, + "Expiry": { "$date": { "$numberLong": "1699185001821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "654762f148291c43458dc477" }, + "Node": "CrewBattleNode524", + "Activation": { "$date": { "$numberLong": "1699179601829" } }, + "Expiry": { "$date": { "$numberLong": "1699185001829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "654762f148291c43458dc475" }, + "Node": "CrewBattleNode515", + "Activation": { "$date": { "$numberLong": "1699179601825" } }, + "Expiry": { "$date": { "$numberLong": "1699185001825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "654762f148291c43458dc479" }, + "Node": "CrewBattleNode538", + "Activation": { "$date": { "$numberLong": "1699179601834" } }, + "Expiry": { "$date": { "$numberLong": "1699185001834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "654762f148291c43458dc478" }, + "Node": "CrewBattleNode531", + "Activation": { "$date": { "$numberLong": "1699179601832" } }, + "Expiry": { "$date": { "$numberLong": "1699185001832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "654762f148291c43458dc476" }, + "Node": "CrewBattleNode501", + "Activation": { "$date": { "$numberLong": "1699179601827" } }, + "Expiry": { "$date": { "$numberLong": "1699185001827" } }, + "ActiveMissionTier": "VoidT2" } ], "PrimeAccessAvailability": { "State": "PRIME1" }, @@ -2520,23 +2324,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/DualCleaverWeapon", - "Activation": { "$date": { "$numberLong": "1698865200000" } }, - "Expiry": { "$date": { "$numberLong": "1698958800000" } }, - "Discount": 30, - "OriginalPrice": 225, - "SalePrice": 157, - "AmountTotal": 200, - "AmountSold": 10 + "StoreItem": "/Lotus/StoreItems/Weapons/Corpus/Pistols/CorpusMinigun/CorpusMinigun", + "Activation": { "$date": { "$numberLong": "1699146000000" } }, + "Expiry": { "$date": { "$numberLong": "1699239600000" } }, + "Discount": 50, + "OriginalPrice": 175, + "SalePrice": 87, + "AmountTotal": 80, + "AmountSold": 11 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "653c14694565609e1b47d22f" }, + "_id": { "$oid": "654550154737eeb97d8f103d" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1698436201724" } }, - "endDate": { "$date": { "$numberLong": "1699041001724" } }, + "startDate": { "$date": { "$numberLong": "1699041301422" } }, + "endDate": { "$date": { "$numberLong": "1699649701422" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2544,21 +2348,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "653c14694565609e1b47d231" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1698436201724" } }, - "endDate": { "$date": { "$numberLong": "1699041001724" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "653c14694565609e1b47d230" }, + "_id": { "$oid": "654550154737eeb97d8f103e" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1698436201724" } }, - "endDate": { "$date": { "$numberLong": "1699041001724" } }, + "startDate": { "$date": { "$numberLong": "1699041301422" } }, + "endDate": { "$date": { "$numberLong": "1699649701422" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2566,54 +2359,54 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "653c14694565609e1b47d232" }, + "_id": { "$oid": "654550154737eeb97d8f1040" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1698436201724" } }, - "endDate": { "$date": { "$numberLong": "1699041001724" } }, + "startDate": { "$date": { "$numberLong": "1699041301422" } }, + "endDate": { "$date": { "$numberLong": "1699649701422" } }, "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "653c14694565609e1b47d22f" }, { "$oid": "653c14694565609e1b47d230" }, { "$oid": "653c14694565609e1b47d231" }], + "subChallenges": [{ "$oid": "654550154737eeb97d8f103d" }, { "$oid": "654550154737eeb97d8f103e" }, { "$oid": "654550154737eeb97d8f103f" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "6542bb25f643ee81d2d4756b" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerEASY", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "_id": { "$oid": "654550154737eeb97d8f103f" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1699041301422" } }, + "endDate": { "$date": { "$numberLong": "1699649701422" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "6546b1fd94ce5277508959b8" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6546b1fd94ce5277508959ba" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6542bb25f643ee81d2d4756d" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirEASY", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6542bb25f643ee81d2d4756e" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerMEDIUM", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6542bb25f643ee81d2d47569" }, + "_id": { "$oid": "6546b1fd94ce5277508959b9" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2621,65 +2414,65 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6542bb25f643ee81d2d4756f" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesEASY", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "_id": { "$oid": "6546b1fd94ce5277508959bb" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6546b1fd94ce5277508959bc" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreak_MEDIUM", + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6546b1fd94ce5277508959bd" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationHARD", + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6546b1fd94ce5277508959be" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6542bb25f643ee81d2d4756c" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirMEDIUM", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6542bb25f643ee81d2d4756a" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6542bb25f643ee81d2d47570" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD", - "startDate": { "$date": { "$numberLong": "1698872101892" } }, - "endDate": { "$date": { "$numberLong": "1698958501892" } }, + "_id": { "$oid": "6546b1fd94ce5277508959bf" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesHARD", + "startDate": { "$date": { "$numberLong": "1699131901628" } }, + "endDate": { "$date": { "$numberLong": "1699221901628" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "65438a92612d7e92d6159e3d" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedAffectorSuperPistolDamage", - "startDate": { "$date": { "$numberLong": "1698925202023" } }, - "endDate": { "$date": { "$numberLong": "1698925802023" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_MODEAFFECTOR" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [82.54077929121944, 37.85609463710761, 0], + "ProjectPct": [85.80854078402494, 40.95978290573566, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], @@ -2705,25 +2498,25 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100240000000000000331" }, + "_id": { "$oid": "001100240000000000000334" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1698710400000" } }, - "Expiry": { "$date": { "$numberLong": "1698969600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCompleteMissionSecondary" + "Activation": { "$date": { "$numberLong": "1698969600000" } }, + "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithAbilities" }, { - "_id": { "$oid": "001100240000000000000332" }, + "_id": { "$oid": "001100240000000000000335" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1698796800000" } }, - "Expiry": { "$date": { "$numberLong": "1699056000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithCorrosive" + "Activation": { "$date": { "$numberLong": "1699056000000" } }, + "Expiry": { "$date": { "$numberLong": "1699315200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithHeadshots" }, { - "_id": { "$oid": "001100240000000000000333" }, + "_id": { "$oid": "001100240000000000000336" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1698883200000" } }, - "Expiry": { "$date": { "$numberLong": "1699142400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFire" + "Activation": { "$date": { "$numberLong": "1699142400000" } }, + "Expiry": { "$date": { "$numberLong": "1699401600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithSecondary" }, { "_id": { "$oid": "001100240000000000000323" }, @@ -2769,5 +2562,5 @@ } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":554}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":550}" } -- 2.47.2 From 02ef5c1264c467a9eb01602bf819d0d468e4800f Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 5 Nov 2023 20:47:00 +0100 Subject: [PATCH 048/522] Revert "Bump mongoose from 7.4.1 to 7.6.3 (#73)" (#84) --- package-lock.json | 61 +++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 33 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 128ad8b4..b3e60e77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.6.3", + "mongoose": "^7.4.1", "warframe-items": "1.1260.121" }, "devDependencies": { @@ -214,15 +214,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", - "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -428,9 +419,9 @@ "dev": true }, "node_modules/@types/webidl-conversions": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.2.tgz", - "integrity": "sha512-uNv6b/uGRLlCVmelat2rA8bcVd3k/42mV2EmjhPh6JLkd35T5bgwR/t6xy7a9MWhd9sixIeBUzhBenvk3NO+DQ==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", @@ -1149,9 +1140,9 @@ } }, "node_modules/bson": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz", - "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", + "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", "engines": { "node": ">=14.20.1" } @@ -2515,11 +2506,11 @@ } }, "node_modules/mongodb": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.0.tgz", - "integrity": "sha512-g+GCMHN1CoRUA+wb1Agv0TI4YTSiWr42B5ulkiAfLLHitGK1R+PkSAf3Lr5rPZwi/3F04LiaZEW0Kxro9Fi2TA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", + "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", "dependencies": { - "bson": "^5.5.0", + "bson": "^5.4.0", "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, @@ -2527,12 +2518,12 @@ "node": ">=14.20.1" }, "optionalDependencies": { - "@mongodb-js/saslprep": "^1.1.0" + "saslprep": "^1.0.3" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.0.0", - "kerberos": "^1.0.0 || ^2.0.0", + "@aws-sdk/credential-providers": "^3.201.0", + "@mongodb-js/zstd": "^1.1.0", + "kerberos": "^2.0.1", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -2564,13 +2555,13 @@ } }, "node_modules/mongoose": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.6.3.tgz", - "integrity": "sha512-moYP2qWCOdWRDeBxqB/zYwQmQnTBsF5DoolX5uPyI218BkiA1ujGY27P0NTd4oWIX+LLkZPw0LDzlc/7oh1plg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.1.tgz", + "integrity": "sha512-o3E5KHHiHdaiwCJG3+9r70sncRKki71Ktf/TfXdW6myu+53rtZ56uLl5ylkQiCf60V3COJuOeekcxXVsjQ7cBA==", "dependencies": { - "bson": "^5.5.0", + "bson": "^5.4.0", "kareem": "2.5.1", - "mongodb": "5.9.0", + "mongodb": "5.7.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -3232,6 +3223,18 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", diff --git a/package.json b/package.json index 1bc28824..7c971d7a 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.6.3", + "mongoose": "^7.4.1", "warframe-items": "1.1260.121" }, "devDependencies": { -- 2.47.2 From 125d03d03aeeca28893072109c51dec4d7c36cee Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 12 Nov 2023 15:57:33 +0100 Subject: [PATCH 049/522] update 34.0.8 (#90) --- config.json | 8 +- static/fixed_responses/worldState.json | 2009 ++++++++++++------------ 2 files changed, 1029 insertions(+), 988 deletions(-) diff --git a/config.json b/config.json index e915fd2b..158a6821 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.10.26.09.51/g7gbGLwXqPGGnYpd-msfng", - "matchmakingBuildId": "4348494671438582941", - "version": "34.0.7", - "worldSeed": "iFE2JF4wKdnXBI5UG3/AB1gS9Wfu8wEvUgw05DJyZG/5x+Qwn1DS2nPDEYfgdInlY5XARWlsJnAfXqDP1oqacvlk5F0mYeyKIXayXTBI0+uF7bO7MjrL3FKHkvLrY7UJrmsXuDaZP0JOy1Uac3WlMkLv9e6H7wGHk4K/M9fjZeEX+rCpC61vRJ2blt4Bb0T80abOEcpE7VENuoAag1aT6L1Dd4Sev9IaSXy8SigOvzzvgqR6mCJo8Cl0o02WcKfqYaqJfWlYoi1hcaC1AhhCURKuHkY/tSBBn+Uqm4APK8vjv/X2DkTSH0hfxrOMx4JQEL5HWEGC3I3KmNsWcPjGsg==", + "buildLabel": "2023.11.06.13.39/1TcsxlckBF8b8jiE4E3eQg", + "matchmakingBuildId": "9186822613720189878", + "version": "34.0.8", + "worldSeed": "LPilWYzp4Sgk9VoUjNUeQ0St81TzYSKmtjx/yZRdT26a6C/Rd8/5q9QrTbLPD08iv1z+Byulw+0fVagfp7JB0b3uUi8G03Bq37HHFtqARTmukBuW3FYmrr5pyLhSz5woWo/HR63oUSaX6lGvnjmWLf6/5AW/QNkjgD2lDqaYIh/IumYtBon+RtlKn/np62ljsK+vlnorw2zfXA95gdvQAMeBNk/G2SMTPjlQJdlRTjVhfRuJTlywsIv+Qy4ammWGEcms3uzRnbS8KzQohiD7wpd5GW6nbjim6BOkbgaTGjz0HOix8oVoqrJJNLgwH6rcFWWvh2MuOo+ehbNfW3Z5Bg==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index cf29caa3..bd216092 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "iFE2JF4wKdnXBI5UG3/AB1gS9Wfu8wEvUgw05DJyZG/5x+Qwn1DS2nPDEYfgdInlY5XARWlsJnAfXqDP1oqacvlk5F0mYeyKIXayXTBI0+uF7bO7MjrL3FKHkvLrY7UJrmsXuDaZP0JOy1Uac3WlMkLv9e6H7wGHk4K/M9fjZeEX+rCpC61vRJ2blt4Bb0T80abOEcpE7VENuoAag1aT6L1Dd4Sev9IaSXy8SigOvzzvgqR6mCJo8Cl0o02WcKfqYaqJfWlYoi1hcaC1AhhCURKuHkY/tSBBn+Uqm4APK8vjv/X2DkTSH0hfxrOMx4JQEL5HWEGC3I3KmNsWcPjGsg==", + "WorldSeed": "LPilWYzp4Sgk9VoUjNUeQ0St81TzYSKmtjx/yZRdT26a6C/Rd8/5q9QrTbLPD08iv1z+Byulw+0fVagfp7JB0b3uUi8G03Bq37HHFtqARTmukBuW3FYmrr5pyLhSz5woWo/HR63oUSaX6lGvnjmWLf6/5AW/QNkjgD2lDqaYIh/IumYtBon+RtlKn/np62ljsK+vlnorw2zfXA95gdvQAMeBNk/G2SMTPjlQJdlRTjVhfRuJTlywsIv+Qy4ammWGEcms3uzRnbS8KzQohiD7wpd5GW6nbjim6BOkbgaTGjz0HOix8oVoqrJJNLgwH6rcFWWvh2MuOo+ehbNfW3Z5Bg==", "Version": 10, "MobileVersion": "4.15.17.0", - "BuildLabel": "2023.10.26.09.51/g7gbGLwXqPGGnYpd-msfng", - "Time": 1699179541, + "BuildLabel": "2023.11.06.13.39/1TcsxlckBF8b8jiE4E3eQg", + "Time": 1699800661, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -39,16 +39,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64ecb4895cc1d9f6570ad996" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Résumé TennoCon 2023 - version FR" }], - "Prop": "https://forums.warframe.com/topic/1364683-r%C3%A9sum%C3%A9-tennocon-2023-version-fr/", - "Date": { "$date": { "$numberLong": "1693234200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/2b90772068288612d6e81acbca5076c0_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "64f0cc64e65af842c407f41d" }, "Messages": [{ "LanguageCode": "ko", "Message": "텐노콘 2023 요약" }], @@ -77,26 +67,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "652ff6526c4b32386f0875bb" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Riven性質の変動:2023年10月版" }], - "Prop": "https://bit.ly/46TQ5lp", - "Date": { "$date": { "$numberLong": "1697641980000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "652ff6746c4b32386f0875c7" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Dagathの深淵:フィードバックスレッド" }], - "Prop": "https://bit.ly/46WpHaO", - "Date": { "$date": { "$numberLong": "1697642040000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "652ff9fb6c4b32386f0875fa" }, "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj : Dagath" }], @@ -217,16 +187,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "653175ab3a6e2143b50a9243" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第174回のお知らせ" }], - "Prop": "https://bit.ly/492XG2Q", - "Date": { "$date": { "$numberLong": "1697740140000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/3658798f18f3bd5b3e086c3b69b57e76.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "6532efb2a6c68d36aa0b35ea" }, "Messages": [{ "LanguageCode": "es", "Message": "Abismo de Dagath: Revisión 34.0.2 + 34.0.3" }], @@ -321,68 +281,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65427c92519487fc0c0f7877" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Drops Twitch : 1 - 4 nov" }], - "Prop": "https://forums.warframe.com/topic/1370845-horaire-des-streams-communautaires-du-1-au-4-nov/", - "Date": { "$date": { "$numberLong": "1698856020000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_11/image.png.50ccf1edef61b5eaec164938b1a927b1.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65427d445d1eb9a26505b7a2" }, - "Messages": [{ "LanguageCode": "ja", "Message": "11月1日~11月4日の配信スケジュール" }], - "Prop": "https://bit.ly/3sliPVu", - "Date": { "$date": { "$numberLong": "1698856200000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_11/image.png.50ccf1edef61b5eaec164938b1a927b1.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65428cd173b6dd552e075cc3" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Stream Schedule: Nov 1 - 4" }], - "Prop": "https://forums.warframe.com/topic/1370841-community-stream-schedule-nov-1-4/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Community-Streams-01", - "Date": { "$date": { "$numberLong": "1698860220000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65428f9bb572b592470eb299" }, - "Messages": [{ "LanguageCode": "es", "Message": "Programa de streams y Twitch Drops: 1 - 4 de noviembre" }], - "Prop": "https://forums.warframe.com/topic/1370856-programa-de-streams-y-twitch-drops-1-4-de-noviembre/", - "Date": { "$date": { "$numberLong": "1698860820000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6542920e4eb21dd3d4023256" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Quest to Conquer Cancer 2023" }, - { "LanguageCode": "fr", "Message": "Quête pour vaincre le cancer 2023" }, - { "LanguageCode": "it", "Message": "Quest to Conquer Cancer 2023" }, - { "LanguageCode": "de", "Message": "Kampf gegen Krebs 2023" }, - { "LanguageCode": "es", "Message": "Aventura para vencer el cáncer 2023" }, - { "LanguageCode": "pt", "Message": "Conquista na Batalha contra o Câncer 2023" }, - { "LanguageCode": "ru", "Message": "Кампания по борьбе с раком «Quest to Conquer Cancer 2023»" }, - { "LanguageCode": "pl", "Message": "Misja pokonania raka 2023" }, - { "LanguageCode": "uk", "Message": "Кампанія «Подолання раку» 2023" }, - { "LanguageCode": "tr", "Message": "Kanseri Fethetme Görevi 2023" }, - { "LanguageCode": "ja", "Message": "「Quest to Conquer Cancer」2023" }, - { "LanguageCode": "zh", "Message": "征服癌症活动 2023" }, - { "LanguageCode": "ko", "Message": "암을 이겨내기 위한 여정 2023" }, - { "LanguageCode": "tc", "Message": "征服癌症活動 2023" } - ], - "Prop": "https://www.warframe.com/qtcc?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-QTCC2023Endingnow", - "Date": { "$date": { "$numberLong": "1698859680000" } }, - "EventStartDate": { "$date": { "$numberLong": "1698865200000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.png.3182218b8298133e9337738f6b4f7ce8.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "654292994eb21dd3d4023272" }, "Messages": [{ "LanguageCode": "en", "Message": "Nora's Mix Vol. 4 Ending + Vol. 5 Incoming!" }], @@ -400,14 +298,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "6543ba493017ebbe9803aacd" }, - "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Hotfix 34.0.7" }], - "Prop": "https://www.warframe.com/updates/pc/34-0-7", - "Date": { "$date": { "$numberLong": "1698935940000" } }, - "Priority": true, - "MobileOnly": false - }, { "_id": { "$oid": "6543e628b1a68db9800fb00e" }, "Messages": [ @@ -431,9 +321,228 @@ "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/prime-resurgence/rotations/nezha-octavia/masthead-keyart-desktop.png", "Priority": false, "MobileOnly": false + }, + { + "_id": { "$oid": "654940a38a899732aa0d09c1" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream Schedule: Nov 6 - 10 " }], + "Prop": "https://forums.warframe.com/topic/1371398-community-stream-schedule-nov-6-10/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Community-Streams-06", + "Date": { "$date": { "$numberLong": "1699299420000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65494d8eae516ee0620cbfa7" }, + "Messages": [{ "LanguageCode": "ja", "Message": "11月6日~11月10日の配信スケジュール" }], + "Prop": "https://bit.ly/46ZfkmZ", + "Date": { "$date": { "$numberLong": "1699302720000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_11/UniversalMedallion.png.77c37ff5cc77679310041b52ab14d6e7.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "654a60bd4cc72868230eeb48" }, + "Messages": [{ "LanguageCode": "en", "Message": "Full Details On How To Play Plague Star!" }], + "Prop": "https://forums.warframe.com/topic/1371415-live-on-all-platforms-operation-plague-star-how-to-faq/", + "Date": { "$date": { "$numberLong": "1699372860000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/00f8832b92926fe968e0407f6d409e17.png", + "Priority": true, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "654a635bd86fbf17f5094d48" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Play Plague Star today!" }, + { "LanguageCode": "fr", "Message": "Jouez au Fléau Céleste !" }, + { "LanguageCode": "it", "Message": "Gioca a Plague Star oggi stesso!" }, + { "LanguageCode": "de", "Message": "Spielt noch heute Plagenstern!" }, + { "LanguageCode": "es", "Message": "¡Juega Estrella Infestada hoy mismo!" }, + { "LanguageCode": "pt", "Message": "Jogue a Praga Estelar hoje mesmo!" }, + { "LanguageCode": "ru", "Message": "Сыграйте в «Чумную звезду» уже сегодня!" }, + { "LanguageCode": "pl", "Message": "Zagraj w Plagę z Gwiazd już dziś!" }, + { "LanguageCode": "uk", "Message": "Грайте в операцію «Морова зірка» вже сьогодні!" }, + { "LanguageCode": "tr", "Message": "Salgın Yıldızını hemen oynamaya başla!" }, + { "LanguageCode": "ja", "Message": "「疫病の星」作戦を今すぐプレイ!" }, + { "LanguageCode": "zh", "Message": "今天就来玩《瘟疫之星》吧!" }, + { "LanguageCode": "ko", "Message": "오늘 플레이그 스타를 플레이해보세요!" }, + { "LanguageCode": "tc", "Message": "今天就來遊玩《瘟疫之星》吧!" } + ], + "Prop": "https://www.warframe.com/news/plague-star-is-back?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-PlagueStarLaunch", + "Date": { "$date": { "$numberLong": "1699373640000" } }, + "EventStartDate": { "$date": { "$numberLong": "1699372800000" } }, + "EventEndDate": { "$date": { "$numberLong": "1700582400000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/c21040f179c8d299f9869073977c3aa6_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "654a649af7a870b7820650e8" }, + "Messages": [{ "LanguageCode": "ja", "Message": "「疫病の星」作戦プレイガイド" }], + "Prop": "https://bit.ly/463Pqx3", + "Date": { "$date": { "$numberLong": "1699374180000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/00f8832b92926fe968e0407f6d409e17.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "654a64a946a65a886100284b" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Fléau Céleste - FAQ" }], + "Prop": "https://forums.warframe.com/topic/1371498-dispo-sur-toutes-les-plateformes-op%C3%A9ration%C2%A0%C2%A0fl%C3%A9au-c%C3%A9leste-conseils-et-faq/", + "Date": { "$date": { "$numberLong": "1699374180000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/00f8832b92926fe968e0407f6d409e17.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "654a88b29727773d6f02e3b4" }, + "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops 6 - 10 de noviembre" }], + "Prop": "https://forums.warframe.com/topic/1371521-programa-de-streams-y-twitch-drops-6-10-de-noviembre/", + "Date": { "$date": { "$numberLong": "1699383360000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "654ac60b941def0313097bff" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Operation Plague Star Bounty Standing Changes" }], + "Prop": "https://forums.warframe.com/topic/1371541-psa-operation-plague-star-bounty-standing-changes/", + "Date": { "$date": { "$numberLong": "1699399140000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "654d21fa2832bdb80d0e4332" }, + "Messages": [{ "LanguageCode": "en", "Message": "Give your dojo a place of honour on the Starchart!" }], + "Prop": "https://forums.warframe.com/topic/1371407-star-chart-dojo-showcase-autumn-2023/", + "Date": { "$date": { "$numberLong": "1699553700000" } }, + "EventStartDate": { "$date": { "$numberLong": "1699506000000" } }, + "EventEndDate": { "$date": { "$numberLong": "1700802000000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "654d34a42737ba454202fd8f" }, + "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Hotfix 34.0.8" }], + "Prop": "https://www.warframe.com/updates/pc/34-0-8", + "Date": { "$date": { "$numberLong": "1699558500000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "654d4a3573ea4f53bc0c7c18" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes : 34.0.8" }], + "Prop": "https://forums.warframe.com/topic/1371728-les-abysses-de-dagath%C2%A0-correctif-3408/", + "Date": { "$date": { "$numberLong": "1699564020000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "654d4e11bbfcd1a99e0eb0c7" }, + "Messages": [{ "LanguageCode": "es", "Message": "Abismo de Dagath: Revisión 34.0.8" }], + "Prop": "https://forums.warframe.com/topic/1371737-abismo-de-dagath-revisi%C3%B3n-3408/", + "Date": { "$date": { "$numberLong": "1699564980000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "654e5a60b8336c43bc007747" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Vasca Kavat Floof Plush Available Now!" }, + { "LanguageCode": "fr", "Message": "Peluche Kavat Vasca disponible!" }, + { "LanguageCode": "it", "Message": "Peluche Floof Vasca Kavat - Ora Disponibile!" }, + { "LanguageCode": "de", "Message": "Floof-Plüschtier: Vasca Kavat ist jetzt verfügbar!" }, + { "LanguageCode": "es", "Message": "¡El peluche del Floof de kavat Vasca ya está disponible!" }, + { "LanguageCode": "pt", "Message": "Floof de Pelúcia do Kavat Vasca Já Disponível!" }, + { "LanguageCode": "ru", "Message": "Пушистик Васка Кават уже доступен!" }, + { "LanguageCode": "pl", "Message": "Pluszak Kavata Vasca już dostępny!" }, + { "LanguageCode": "uk", "Message": "Плюш васкозного кавата вже доступний!" }, + { "LanguageCode": "tr", "Message": "Vasca Kavat Peluşu Şimdi Sizlerle!" }, + { "LanguageCode": "ja", "Message": "Vasca キャバットのぬいぐるみが登場!" }, + { "LanguageCode": "zh", "Message": "噬血型库娃毛绒玩偶现已登场!" }, + { "LanguageCode": "ko", "Message": "바스카 카밧 플루프 봉제인형을 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "噬血型庫娃毛絨玩偶現已登場!" } + ], + "Prop": "https://store.warframe.com/products/vasca-kavat-floof-plush?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Merch-VascaFloofLaunch", + "Date": { "$date": { "$numberLong": "1699633440000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/2c5efbd804bbcc60de119b82e407489c_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "654e5b5d0d02a46783044c99" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Black Friday Merch Sale" }, + { "LanguageCode": "fr", "Message": "Promo sur les Produits Dérivés du Black Friday" }, + { "LanguageCode": "it", "Message": "Offerte Merch Black Friday" }, + { "LanguageCode": "de", "Message": "Black Friday Merch-Angebote" }, + { "LanguageCode": "es", "Message": "Productos en oferta por Black Friday" }, + { "LanguageCode": "pt", "Message": "Promoção de Produtos da Black Friday" }, + { "LanguageCode": "ru", "Message": "Распродажа товаров Чёрной Пятницы" }, + { "LanguageCode": "pl", "Message": "Wyprzedaż Czarnego Piątku" }, + { "LanguageCode": "uk", "Message": "Розпродаж товарів на Чорну п’ятницю" }, + { "LanguageCode": "tr", "Message": "Efsane Cuma Ürün İndirimleri" }, + { "LanguageCode": "ja", "Message": "ブラックフライデーグッズセール" }, + { "LanguageCode": "zh", "Message": "黑色星期五周边商品促销活动" }, + { "LanguageCode": "ko", "Message": "블랙 프라이데이 굿즈 세일" }, + { "LanguageCode": "tc", "Message": "黑色星期五周边商品促销活动" } + ], + "Prop": "https://store.warframe.com/collections/clearance?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Merch-BlackFridaySale", + "Date": { "$date": { "$numberLong": "1699633800000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/6562efad3861076ae401127ed6de907f_1600x900.png", + "Priority": false, + "MobileOnly": false + } + ], + "Goals": [ + { + "_id": { "$oid": "654a5058c757487cdb11824f" }, + "Activation": { "$date": { "$numberLong": "1699372800000" } }, + "Expiry": { "$date": { "$numberLong": "1700582400000" } }, + "Tag": "InfestedPlains", + "RegionIdx": 2, + "Faction": "FC_INFESTATION", + "Desc": "/Lotus/Language/InfestedPlainsEvent/InfestedPlainsBountyName", + "ToolTip": "/Lotus/Language/InfestedPlainsEvent/InfestedPlainsBountyDesc", + "Icon": "/Lotus/Materials/Emblems/PlagueStarEventBadge_e.png", + "JobAffiliationTag": "EventSyndicate", + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/InfestedPlainsBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/PlagueStarTableRewards", + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [50, 300, 100, 575] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/InfestedPlainsBountyAdvanced", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/PlagueStarTableRewards", + "minEnemyLevel": 55, + "maxEnemyLevel": 65, + "xpAmounts": [200, 1000, 300, 1700], + "requiredItems": ["/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventIngredient", "/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventClanIngredient"], + "useRequiredItemsAsMiscItemFee": true + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/InfestedPlainsBountySteelPath", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/PlagueStarTableSteelPathRewards", + "minEnemyLevel": 100, + "maxEnemyLevel": 110, + "xpAmounts": [200, 1100, 400, 2100], + "masteryReq": 10, + "requiredItems": ["/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventIngredient", "/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventClanIngredient"], + "useRequiredItemsAsMiscItemFee": true + } + ], + "Transmission": "/Lotus/Sounds/Dialog/PlainsMeteorLeadUp/LeadUp/DLeadUp0021Lotus", + "InstructionalItem": "/Lotus/Types/StoreItems/Packages/PlagueStarEventStoreItem" } ], - "Goals": [], "Alerts": [ { "_id": { "$oid": "6543f40fa0ae5796cf06c709" }, @@ -477,252 +586,252 @@ ], "Sorties": [ { - "_id": { "$oid": "654666fdc8c4aea29f442468" }, - "Activation": { "$date": { "$numberLong": "1699113600000" } }, - "Expiry": { "$date": { "$numberLong": "1699203600000" } }, + "_id": { "$oid": "654faf8dabd662d926f8b75d" }, + "Activation": { "$date": { "$numberLong": "1699722000000" } }, + "Expiry": { "$date": { "$numberLong": "1699808400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 79608, - "Boss": "SORTIE_BOSS_VOR", + "Seed": 20945, + "Boss": "SORTIE_BOSS_INFALAD", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_RETRIEVAL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode144", "tileset": "GrineerShipyardsTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode24", "tileset": "GrineerForestTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", "node": "SolNode108", "tileset": "GrineerAsteroidTileset" } + { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_SECONDARY_ONLY", "node": "SolNode24", "tileset": "GrineerForestTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode48", "tileset": "CorpusOutpostTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_MAGNETIC", "node": "SolNode166", "tileset": "InfestedCorpusShipTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "653eee7dfee282ff71f6f1da" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, + "_id": { "$oid": "654828fda5da5fcb5331f09c" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 60913, - "Boss": "SORTIE_BOSS_NIRA", + "Seed": 20998, + "Boss": "SORTIE_BOSS_BOREAL", "Missions": [ - { "missionType": "MT_INTEL", "node": "SolNode73" }, - { "missionType": "MT_DEFENSE", "node": "SolNode74" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } + { "missionType": "MT_EXTERMINATION", "node": "SolNode59" }, + { "missionType": "MT_DEFENSE", "node": "SolNode75" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "65466a4573ca98af11934162" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0ae5" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "ArbitersSyndicate", - "Seed": 79608, - "Nodes": ["SolNode79", "SolNode103", "SettlementNode2", "SolNode205", "SolNode78", "SolNode64", "SolNode401"] + "Seed": 20945, + "Nodes": ["SolNode226", "SolNode123", "SolNode209", "SolNode85", "SolNode4", "SolNode45", "SolNode400"] }, { - "_id": { "$oid": "65466a4573ca98af11934163" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0ae6" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 73673, - "Nodes": ["SolNode59", "SolNode224", "SolNode710", "SolNode209", "SolNode48", "SolNode57", "SettlementNode14"] + "Seed": 56908, + "Nodes": ["SolNode119", "SolNode23", "SolNode14", "SolNode25", "SolNode412", "SolNode76", "SolNode49"] }, { - "_id": { "$oid": "65466a4573ca98af11934164" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0ae7" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "NecraloidSyndicate", - "Seed": 31396, + "Seed": 48195, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934166" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, - "Tag": "KahlSyndicate", - "Seed": 73120, - "Nodes": [] - }, - { - "_id": { "$oid": "65466a4573ca98af11934165" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0ae8" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "EventSyndicate", - "Seed": 32981, + "Seed": 81647, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934167" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0ae9" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "Tag": "KahlSyndicate", + "Seed": 19395, + "Nodes": [] + }, + { + "_id": { "$oid": "654fb2d5935447c35c5a0aea" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "NewLokaSyndicate", - "Seed": 8913, - "Nodes": ["SolNode119", "SolNode63", "SolNode25", "SolNode46", "SolNode204", "SolNode175", "SolNode408"] + "Seed": 7425, + "Nodes": ["SolNode16", "SolNode223", "SolNode139", "SettlementNode2", "SolNode39", "SolNode2", "SolNode205"] }, { - "_id": { "$oid": "65466a4573ca98af11934168" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0aeb" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "QuillsSyndicate", - "Seed": 18024, + "Seed": 101, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934169" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0aec" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "PerrinSyndicate", - "Seed": 60812, - "Nodes": ["SolNode107", "SolNode45", "SolNode217", "SolNode19", "SolNode21", "SolNode167", "SolNode62"] + "Seed": 58090, + "Nodes": ["SolNode224", "SolNode66", "SolNode710", "SolNode20", "SolNode215", "SettlementNode12", "SolNode97"] }, { - "_id": { "$oid": "65466a4573ca98af1193416a" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0aed" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 41529, + "Seed": 66815, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af1193416b" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0aee" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 78967, + "Seed": 71306, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af1193416e" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 91746, - "Nodes": [] - }, - { - "_id": { "$oid": "65466a4573ca98af11934170" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 10529, - "Nodes": [] - }, - { - "_id": { "$oid": "65466a4573ca98af1193416d" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 80310, - "Nodes": [] - }, - { - "_id": { "$oid": "65466a4573ca98af1193416c" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0aef" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 96318, + "Seed": 43673, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af1193416f" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0af0" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 26200, + "Nodes": [] + }, + { + "_id": { "$oid": "654fb2d5935447c35c5a0af1" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 1910, + "Nodes": [] + }, + { + "_id": { "$oid": "654fb2d5935447c35c5a0af2" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 54391, + "Seed": 83458, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934173" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, - "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 73847, + "_id": { "$oid": "654fb2d5935447c35c5a0af3" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 68685, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934171" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d5935447c35c5a0af4" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 43183, + "Seed": 62837, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934172" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d6935447c35c5a0af5" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 65009, + "Seed": 67457, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934174" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d6935447c35c5a0af6" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 35940, + "Nodes": [] + }, + { + "_id": { "$oid": "654fb2d6935447c35c5a0af7" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 74943, + "Seed": 95754, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934175" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d6935447c35c5a0af8" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 69841, + "Seed": 37335, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934176" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d6935447c35c5a0af9" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "RedVeilSyndicate", - "Seed": 11935, - "Nodes": ["SolNode109", "SolNode89", "SolNode125", "SettlementNode12", "SolNode409", "SolNode6", "SolNode196"] + "Seed": 69629, + "Nodes": ["SolNode22", "SolNode225", "SolNode79", "SolNode214", "SolNode189", "SolNode30", "SolNode406"] }, { - "_id": { "$oid": "65466a4573ca98af11934177" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d6935447c35c5a0afa" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "VentKidsSyndicate", - "Seed": 82234, + "Seed": 92938, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934178" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d6935447c35c5a0afb" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "VoxSyndicate", - "Seed": 85645, + "Seed": 38402, "Nodes": [] }, { - "_id": { "$oid": "65466a4573ca98af11934179" }, - "Activation": { "$date": { "$numberLong": "1699113541408" } }, - "Expiry": { "$date": { "$numberLong": "1699203540000" } }, + "_id": { "$oid": "654fb2d6935447c35c5a0afc" }, + "Activation": { "$date": { "$numberLong": "1699721941149" } }, + "Expiry": { "$date": { "$numberLong": "1699808340000" } }, "Tag": "SteelMeridianSyndicate", - "Seed": 10636, - "Nodes": ["SolNode2", "SolNode15", "SolNode58", "SolNode225", "SettlementNode15", "SolNode171", "SolNode102"] + "Seed": 93407, + "Nodes": ["SolNode130", "SolNode107", "SolNode217", "SolNode126", "SolNode59", "SolNode57", "SettlementNode1"] }, { - "_id": { "$oid": "654767000000000000000002" }, - "Activation": { "$date": { "$numberLong": "1699178240001" } }, - "Expiry": { "$date": { "$numberLong": "1699187238875" } }, + "_id": { "$oid": "6550e07a0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1699799162362" } }, + "Expiry": { "$date": { "$numberLong": "1699808161236" } }, "Tag": "EntratiSyndicate", - "Seed": 85537, + "Seed": 84413, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [6, 6, 6] + "xpAmounts": [4, 4, 4] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [12, 12, 12] + "xpAmounts": [10, 10, 10] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", @@ -735,23 +844,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 29] + "xpAmounts": [19, 19, 19, 28] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 39] + "xpAmounts": [21, 21, 21, 21, 41] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -788,56 +897,56 @@ ] }, { - "_id": { "$oid": "654767000000000000000007" }, - "Activation": { "$date": { "$numberLong": "1699178240001" } }, - "Expiry": { "$date": { "$numberLong": "1699187238875" } }, + "_id": { "$oid": "6550e07a0000000000000007" }, + "Activation": { "$date": { "$numberLong": "1699799162362" } }, + "Expiry": { "$date": { "$numberLong": "1699808161236" } }, "Tag": "CetusSyndicate", - "Seed": 85537, + "Seed": 84413, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [470, 470, 470] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [610, 610, 610] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [570, 570, 570, 840] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [600, 600, 600, 600, 1170] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1360] + "xpAmounts": [340, 340, 340] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [700, 700, 700] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [620, 620, 620, 910] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [620, 620, 620, 620, 1210] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [720, 720, 720, 720, 1410] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -845,7 +954,7 @@ }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, @@ -854,290 +963,260 @@ ] }, { - "_id": { "$oid": "654767000000000000000023" }, - "Activation": { "$date": { "$numberLong": "1699178240001" } }, - "Expiry": { "$date": { "$numberLong": "1699187238875" } }, + "_id": { "$oid": "6550e07a0000000000000023" }, + "Activation": { "$date": { "$numberLong": "1699799162362" } }, + "Expiry": { "$date": { "$numberLong": "1699808161236" } }, "Tag": "SolarisSyndicate", - "Seed": 85537, + "Seed": 84413, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [370, 370, 370] + "xpAmounts": [340, 340, 340] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [750, 750, 750] + "xpAmounts": [590, 590, 590] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [620, 620, 620, 920] + "xpAmounts": [570, 570, 570, 840] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobAmbush", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [630, 630, 630, 630, 1240] + "xpAmounts": [600, 600, 600, 600, 1180] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [700, 700, 700, 700, 1380] + "xpAmounts": [760, 760, 760, 760, 1490] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [780, 780, 780, 780, 1520] + "xpAmounts": [810, 810, 810, 810, 1600] } ] }, { - "_id": { "$oid": "654767000000000000000027" }, - "Activation": { "$date": { "$numberLong": "1699178240001" } }, - "Expiry": { "$date": { "$numberLong": "1699187238875" } }, + "_id": { "$oid": "6550e07a0000000000000027" }, + "Activation": { "$date": { "$numberLong": "1699799162362" } }, + "Expiry": { "$date": { "$numberLong": "1699808161236" } }, "Tag": "ZarimanSyndicate", - "Seed": 85538, + "Seed": 84413, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "65475af9997395c499a80733" }, - "Region": 7, - "Seed": 51742, - "Activation": { "$date": { "$numberLong": "1699175161380" } }, - "Expiry": { "$date": { "$numberLong": "1699179891235" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", + "_id": { "$oid": "6550d5ed467b39cd26619fd3" }, + "Region": 13, + "Seed": 8999, + "Activation": { "$date": { "$numberLong": "1699796461223" } }, + "Expiry": { "$date": { "$numberLong": "1699802079700" } }, + "Node": "SolNode205", + "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT3" }, { - "_id": { "$oid": "65475badd8fff525866c1634" }, - "Region": 19, - "Seed": 37307, - "Activation": { "$date": { "$numberLong": "1699175341893" } }, - "Expiry": { "$date": { "$numberLong": "1699182116561" } }, - "Node": "SolNode745", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "65475badd8fff525866c1636" }, - "Region": 19, - "Seed": 96430, - "Activation": { "$date": { "$numberLong": "1699175341893" } }, - "Expiry": { "$date": { "$numberLong": "1699180277704" } }, - "Node": "SolNode741", - "MissionType": "MT_ASSAULT", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "65475e41eadcc91cf3dd3f94" }, - "Region": 15, - "Seed": 94732, - "Activation": { "$date": { "$numberLong": "1699176001572" } }, - "Expiry": { "$date": { "$numberLong": "1699180882653" } }, - "Node": "SolNode400", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "65475e41eadcc91cf3dd3f95" }, + "_id": { "$oid": "6550d6a28bef104892f59c0a" }, "Region": 13, - "Seed": 29827, - "Activation": { "$date": { "$numberLong": "1699176001572" } }, - "Expiry": { "$date": { "$numberLong": "1699179705423" } }, - "Node": "SolNode204", - "MissionType": "MT_EXTERMINATION", + "Seed": 43264, + "Activation": { "$date": { "$numberLong": "1699796642084" } }, + "Expiry": { "$date": { "$numberLong": "1699803713775" } }, + "Node": "SolNode215", + "MissionType": "MT_INTEL", "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "65475e41eadcc91cf3dd3f96" }, - "Region": 7, - "Seed": 95373, - "Activation": { "$date": { "$numberLong": "1699176001572" } }, - "Expiry": { "$date": { "$numberLong": "1699182065511" } }, - "Node": "SolNode64", - "MissionType": "MT_TERRITORY", + "_id": { "$oid": "6550d6a28bef104892f59c0b" }, + "Region": 8, + "Seed": 55313, + "Activation": { "$date": { "$numberLong": "1699796642084" } }, + "Expiry": { "$date": { "$numberLong": "1699802469360" } }, + "Node": "SolNode84", + "MissionType": "MT_INTEL", "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "65475eb97f1faf59a60e50e0" }, - "Region": 10, - "Seed": 41646, - "Activation": { "$date": { "$numberLong": "1699176121917" } }, - "Expiry": { "$date": { "$numberLong": "1699180065098" } }, - "Node": "SolNode132", - "MissionType": "MT_INTEL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "65475eb97f1faf59a60e50e1" }, - "Region": 16, - "Seed": 86992, - "Activation": { "$date": { "$numberLong": "1699176121917" } }, - "Expiry": { "$date": { "$numberLong": "1699181416840" } }, - "Node": "SettlementNode14", - "MissionType": "MT_INTEL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "6547609943506d770bdacde2" }, - "Region": 9, - "Seed": 93332, - "Activation": { "$date": { "$numberLong": "1699176601141" } }, - "Expiry": { "$date": { "$numberLong": "1699182303043" } }, - "Node": "SolNode102", - "MissionType": "MT_INTEL", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "6547609943506d770bdacde3" }, - "Region": 12, - "Seed": 45711, - "Activation": { "$date": { "$numberLong": "1699176601141" } }, - "Expiry": { "$date": { "$numberLong": "1699182235151" } }, - "Node": "SolNode196", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "6547641df12f496e869bc3e7" }, + "_id": { "$oid": "6550d845e1909b3e90c77663" }, "Region": 19, - "Seed": 29763, - "Activation": { "$date": { "$numberLong": "1699177501817" } }, - "Expiry": { "$date": { "$numberLong": "1699181686342" } }, + "Seed": 49516, + "Activation": { "$date": { "$numberLong": "1699797061375" } }, + "Expiry": { "$date": { "$numberLong": "1699800818115" } }, "Node": "SolNode746", "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5" + "Modifier": "VoidT5", + "Hard": true }, { - "_id": { "$oid": "6547641df12f496e869bc3e8" }, - "Region": 19, - "Seed": 12372, - "Activation": { "$date": { "$numberLong": "1699177501817" } }, - "Expiry": { "$date": { "$numberLong": "1699181530003" } }, - "Node": "SolNode747", - "MissionType": "MT_INTEL", - "Modifier": "VoidT5" + "_id": { "$oid": "6550d9ad079cd43578f9b6ed" }, + "Region": 2, + "Seed": 25432, + "Activation": { "$date": { "$numberLong": "1699797421713" } }, + "Expiry": { "$date": { "$numberLong": "1699802429943" } }, + "Node": "SolNode23", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1" }, { - "_id": { "$oid": "65476459683b569786b00a67" }, + "_id": { "$oid": "6550d9ad079cd43578f9b6ee" }, "Region": 15, - "Seed": 87955, - "Activation": { "$date": { "$numberLong": "1699177561882" } }, - "Expiry": { "$date": { "$numberLong": "1699182415892" } }, - "Node": "SolNode401", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT4" + "Seed": 94235, + "Activation": { "$date": { "$numberLong": "1699797421713" } }, + "Expiry": { "$date": { "$numberLong": "1699804216526" } }, + "Node": "SolNode405", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT4", + "Hard": true }, { - "_id": { "$oid": "65476459683b569786b00a68" }, + "_id": { "$oid": "6550d9ad079cd43578f9b6ef" }, "Region": 11, - "Seed": 5731, - "Activation": { "$date": { "$numberLong": "1699177561882" } }, - "Expiry": { "$date": { "$numberLong": "1699183172690" } }, - "Node": "SolNode173", - "MissionType": "MT_MOBILE_DEFENSE", + "Seed": 8445, + "Activation": { "$date": { "$numberLong": "1699797421713" } }, + "Expiry": { "$date": { "$numberLong": "1699803984227" } }, + "Node": "SolNode164", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "6550dd6d89297b4edd0ab591" }, + "Region": 15, + "Seed": 13169, + "Activation": { "$date": { "$numberLong": "1699798381217" } }, + "Expiry": { "$date": { "$numberLong": "1699805459419" } }, + "Node": "SolNode407", + "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT4" }, { - "_id": { "$oid": "6547663948ceacb7c1f811fe" }, + "_id": { "$oid": "6550dd6d89297b4edd0ab592" }, + "Region": 11, + "Seed": 64688, + "Activation": { "$date": { "$numberLong": "1699798381217" } }, + "Expiry": { "$date": { "$numberLong": "1699804918952" } }, + "Node": "SolNode175", + "MissionType": "MT_HIVE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "6550e12d77680bffc97fff94" }, + "Region": 10, + "Seed": 32976, + "Activation": { "$date": { "$numberLong": "1699799341931" } }, + "Expiry": { "$date": { "$numberLong": "1699803723656" } }, + "Node": "SolNode141", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "6550e12e77680bffc97fff95" }, + "Region": 16, + "Seed": 95642, + "Activation": { "$date": { "$numberLong": "1699799341931" } }, + "Expiry": { "$date": { "$numberLong": "1699805538261" } }, + "Node": "SettlementNode1", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "6550e2597c4ec4698c00444e" }, + "Region": 19, + "Seed": 59447, + "Activation": { "$date": { "$numberLong": "1699799641761" } }, + "Expiry": { "$date": { "$numberLong": "1699804786535" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "6550e2597c4ec4698c00444f" }, + "Region": 19, + "Seed": 91439, + "Activation": { "$date": { "$numberLong": "1699799641761" } }, + "Expiry": { "$date": { "$numberLong": "1699805160813" } }, + "Node": "SolNode743", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "6550e3c1c049d0fa328f0521" }, "Region": 3, - "Seed": 18436, - "Activation": { "$date": { "$numberLong": "1699178041884" } }, - "Expiry": { "$date": { "$numberLong": "1699182228755" } }, - "Node": "SolNode39", - "MissionType": "MT_EXCAVATE", + "Seed": 6557, + "Activation": { "$date": { "$numberLong": "1699800001532" } }, + "Expiry": { "$date": { "$numberLong": "1699803951263" } }, + "Node": "SolNode75", + "MissionType": "MT_SABOTAGE", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "654766ed829193a435ae8a82" }, - "Region": 5, - "Seed": 35638, - "Activation": { "$date": { "$numberLong": "1699178221590" } }, - "Expiry": { "$date": { "$numberLong": "1699183893884" } }, - "Node": "SolNode121", + "_id": { "$oid": "6550e3c1c049d0fa328f0522" }, + "Region": 4, + "Seed": 54408, + "Activation": { "$date": { "$numberLong": "1699800001532" } }, + "Expiry": { "$date": { "$numberLong": "1699806966377" } }, + "Node": "SolNode14", "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2" + "Modifier": "VoidT1", + "Hard": true }, { - "_id": { "$oid": "654766ed829193a435ae8a83" }, - "Region": 16, - "Seed": 24194, - "Activation": { "$date": { "$numberLong": "1699178221590" } }, - "Expiry": { "$date": { "$numberLong": "1699183418620" } }, - "Node": "SettlementNode15", + "_id": { "$oid": "6550e3fdfcddd45807588003" }, + "Region": 10, + "Seed": 15144, + "Activation": { "$date": { "$numberLong": "1699800061579" } }, + "Expiry": { "$date": { "$numberLong": "1699804353480" } }, + "Node": "SolNode140", "MissionType": "MT_MOBILE_DEFENSE", "Modifier": "VoidT2" }, { - "_id": { "$oid": "65476a71255a7b25fddd6ce3" }, - "Region": 3, - "Seed": 44609, - "Activation": { "$date": { "$numberLong": "1699179121372" } }, - "Expiry": { "$date": { "$numberLong": "1699185765195" } }, - "Node": "SolNode89", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "65476a71255a7b25fddd6ce4" }, - "Region": 4, - "Seed": 87110, - "Activation": { "$date": { "$numberLong": "1699179121372" } }, - "Expiry": { "$date": { "$numberLong": "1699184283552" } }, - "Node": "SolNode46", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "65476a71255a7b25fddd6ce5" }, - "Region": 2, - "Seed": 15621, - "Activation": { "$date": { "$numberLong": "1699179121372" } }, - "Expiry": { "$date": { "$numberLong": "1699186296580" } }, - "Node": "SolNode123", + "_id": { "$oid": "6550e5de9fd64a593bd70001" }, + "Region": 19, + "Seed": 67074, + "Activation": { "$date": { "$numberLong": "1699800542134" } }, + "Expiry": { "$date": { "$numberLong": "1699806483750" } }, + "Node": "SolNode744", "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT1" + "Modifier": "VoidT5", + "Hard": true } ], "GlobalUpgrades": [], @@ -1185,17 +1264,18 @@ "UrlOverride": "" }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, "HideFromMarket": false, - "SupporterPack": true, + "SupporterPack": false, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 1, + "PremiumOverride": 430, "BogoBuy": 0, - "BogoGet": 0 + "BogoGet": 0, + "UrlOverride": "" }, { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", @@ -1211,18 +1291,30 @@ "BogoGet": 0 }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, "ShowInMarket": true, "HideFromMarket": false, - "SupporterPack": false, + "SupporterPack": true, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 430, + "PremiumOverride": 1, "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "StartDate": { "$date": { "$numberLong": "1662422400000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 }, { "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", @@ -1238,6 +1330,62 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 195, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 35, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 80, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 165, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, @@ -1264,33 +1412,6 @@ "EndDate": { "$date": { "$numberLong": "1704038340000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 80, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "StartDate": { "$date": { "$numberLong": "1662422400000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, { "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", "ShowInMarket": true, @@ -1305,48 +1426,6 @@ "EndDate": { "$date": { "$numberLong": "1704038340000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 35, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 195, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 165, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", "ShowInMarket": true, @@ -1403,7 +1482,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021C", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1417,7 +1496,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021C", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1445,21 +1524,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/Conquera2022Ephemera", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1486,6 +1551,20 @@ "EndDate": { "$date": { "$numberLong": "1704081540000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1696946400000" } }, + "EndDate": { "$date": { "$numberLong": "1704081540000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", "ShowInMarket": true, @@ -1501,7 +1580,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B", + "TypeName": "/Lotus/Upgrades/Skins/Effects/Conquera2022Ephemera", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1540,20 +1619,6 @@ "StartDate": { "$date": { "$numberLong": "1697542380000" } }, "EndDate": { "$date": { "$numberLong": "1700146800000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache02", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", "ShowInMarket": true, @@ -1568,7 +1633,7 @@ "EndDate": { "$date": { "$numberLong": "1700146800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache04", + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache02", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1595,6 +1660,20 @@ "EndDate": { "$date": { "$numberLong": "1701403140000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache04", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1698847200000" } }, + "EndDate": { "$date": { "$numberLong": "1701403140000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache05", "ShowInMarket": true, @@ -1610,7 +1689,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache10", + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache06", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1624,7 +1703,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache06", + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache07", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1666,7 +1745,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache07", + "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache10", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1775,164 +1854,116 @@ }, "Invasions": [ { - "_id": { "$oid": "6544ca7e1d67687356a824a9" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode212", - "Count": -3186, - "Goal": 50000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "654318e69ad0e9d8e8df7f10" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 954260, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 792639, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1699008116743" } } - }, - { - "_id": { "$oid": "6544ca7e1d67687356a824aa" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode212", - "Count": -34005, - "Goal": 34000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "654318e69ad0e9d8e8df7f10" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 765200, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 342262, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1699008116916" } } - }, - { - "_id": { "$oid": "654525e6c1df329b692f18aa" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode51", - "Count": -30062, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "6544eb4d9f8e95ffc244da10" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 351011, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 970769, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1699030502018" } } - }, - { - "_id": { "$oid": "6545aa51a943aee915ed350f" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode53", - "Count": -30048, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "65456e8e9a3f1ea8ba915b8f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 66233, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 251063, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1699064401427" } } - }, - { - "_id": { "$oid": "654657c15150463957963b1f" }, + "_id": { "$oid": "654e62bececd776bc3cab972" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", "Node": "SolNode19", - "Count": 0, - "Goal": 45000, + "Count": 38149, + "Goal": 38000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "654657c15150463957963b1f" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 983860, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 98731, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1699636839881" } } + }, + { + "_id": { "$oid": "6550cea94a84460eed3b8b5f" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode50", + "Count": 1161, + "Goal": 43000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, "ChainID": { "$oid": "654657c15150463957963b1f" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 972959, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 707943, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1699179430714" } } + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalReceiver", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 761676, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/GrineerCombatKnifeSortieBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 568677, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1699795642956" } } }, { - "_id": { "$oid": "6546faa53f86d21ba40bb10e" }, - "Faction": "FC_INFESTATION", + "_id": { "$oid": "654d9cb1803c5203e40bcd1d" }, + "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode36", - "Count": -46501, - "Goal": 46000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Node": "SolNode31", + "Count": 35073, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 857827, "faction": "FC_GRINEER" }, + "ChainID": { "$oid": "6549a2566144383d2587a9c0" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 47329, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 864930, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1699156753034" } } + "DefenderMissionInfo": { "seed": 421973, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1699585690899" } } }, { - "_id": { "$oid": "65472859852c6678d5e2baf5" }, - "Faction": "FC_INFESTATION", + "_id": { "$oid": "6550759aca836ca4a44cfcec" }, + "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode113", - "Count": -25597, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Node": "SolNode18", + "Count": 6066, + "Goal": 38000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 401144, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 256755, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1699162201765" } } + "ChainID": { "$oid": "6549a2566144383d2587a9c0" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 19461, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 223581, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1699772697113" } } }, { - "_id": { "$oid": "65472859852c6678d5e2baf4" }, + "_id": { "$oid": "654d4e2d3ef02a6712d9edfa" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode17", + "Count": -47005, + "Goal": 47000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "654d4e2d3ef02a6712d9edfa" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 178317, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 746120, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1699623046665" } } + }, + { + "_id": { "$oid": "654f74f5bed2841b81c402f2" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode99", - "Count": -7689, + "Node": "SolNode144", + "Count": -30050, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "654f3de13c46a435328f495e" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 430032, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 944337, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1699706101486" } } + }, + { + "_id": { "$oid": "654f8434792e97d2d96c0e76" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode51", + "Count": -23078, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, + "ChainID": { "$oid": "654f5fdeaeaccbc4bcc25e2d" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 579106, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 482300, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1699162201765" } } - }, - { - "_id": { "$oid": "654746d138ba2d65c9678f30" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode16", - "Count": -1238, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "6546faa53f86d21ba40bb10e" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 784057, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 732776, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1699170001671" } } - }, - { - "_id": { "$oid": "65470d65655bf890085023c2" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode17", - "Count": -39641, - "Goal": 44000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65470d65655bf890085023c2" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 213481, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 804175, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1699161916497" } } + "AttackerMissionInfo": { "seed": 46086, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 859516, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1699710003673" } } } ], "HubEvents": [], @@ -1940,7 +1971,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9715110 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9724537 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1954,45 +1985,44 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } + }, + { + "_id": { "$oid": "6550759aca836ca4a44cfceb" }, + "Node": "SolNode31", + "Faction": "FC_CORPUS", + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadA", + "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusDropship", + "Expiry": { "$date": { "$numberLong": "1699833627218" } } + }, + { + "_id": { "$oid": "6550cea94a84460eed3b8b5e" }, + "Node": "SolNode19", + "Faction": "FC_CORPUS", + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadB", + "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/CorpusHeavyEnemiesDropship", + "Expiry": { "$date": { "$numberLong": "1699849477801" } } + }, + { + "Node": "SolNode228", + "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/InfestedSquadA", + "CustomNpcEncounters": [ + "/Lotus/Types/Gameplay/Eidolon/Encounters/InfestedEncounters/InfestedPatrol", + "/Lotus/Types/Gameplay/Eidolon/Encounters/InfestedEncounters/InfestedDropPods", + "/Lotus/Types/Gameplay/Eidolon/Encounters/InfestedEncounters/InfestedDropPodsReinforcements" + ], + "_id": { "$oid": "654a5058c757487cdb11824f" }, + "Activation": { "$date": { "$numberLong": "1699372800000" } }, + "Expiry": { "$date": { "$numberLong": "1700582400000" } } } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1699016400000" } }, - "Expiry": { "$date": { "$numberLong": "1699189200000" } }, + "Activation": { "$date": { "$numberLong": "1700226000000" } }, + "Expiry": { "$date": { "$numberLong": "1700398800000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "MercuryHUB", - "Manifest": [ - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnOrokinRifle/GrnOrokinRifleWeapon", "PrimePrice": 675, "RegularPrice": 625000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/DualStat/ElectEventShotgunMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/WeaponEventSlashDamageMod", "PrimePrice": 375, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/VoidTraderGorgon/VTGorgon", "PrimePrice": 600, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/GlaiveCmbTwoMeleeTree", "PrimePrice": 385, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/PedistalPrime", "PrimePrice": 0, "RegularPrice": 1000000 }, - { "ItemType": "/Lotus/StoreItems/Types/Restoratives/Consumable/BaroFireWorksCrate", "PrimePrice": 50, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA", "PrimePrice": 150, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Catbrows/Armor/CatbrowArmorVoidTraderA", "PrimePrice": 500, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/SummerSolstice/SummerSolsticeTwinGrakatas", "PrimePrice": 300, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem", "PrimePrice": 450, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/BaroTiara", "PrimePrice": 525, "RegularPrice": 375000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropOstRugBaro", "PrimePrice": 225, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrineerLeverActionRifle/PrismaGrinlokWeapon", "PrimePrice": 500, "RegularPrice": 220000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisLatronPistol", "PrimePrice": 400, "RegularPrice": 215000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConH", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorA", "PrimePrice": 315, "RegularPrice": 215000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorL", "PrimePrice": 300, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/NecraArmor/NecraArmorC", "PrimePrice": 325, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Wisp/WispAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/BaroCape3Scarf", "PrimePrice": 500, "RegularPrice": 500000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BaroPlanter", "PrimePrice": 125, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } - ] + "Node": "SaturnHUB" } ], "PrimeVaultTraders": [ @@ -2235,88 +2265,88 @@ ], "VoidStorms": [ { - "_id": { "$oid": "65475031ecacab194fefd911" }, - "Node": "CrewBattleNode533", - "Activation": { "$date": { "$numberLong": "1699176001827" } }, - "Expiry": { "$date": { "$numberLong": "1699181401827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "65475031ecacab194fefd910" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1699176001825" } }, - "Expiry": { "$date": { "$numberLong": "1699181401825" } }, + "_id": { "$oid": "6550c7a1bbb11874ea80f56e" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1699795201821" } }, + "Expiry": { "$date": { "$numberLong": "1699800601821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65475031ecacab194fefd90f" }, - "Node": "CrewBattleNode522", - "Activation": { "$date": { "$numberLong": "1699176001821" } }, - "Expiry": { "$date": { "$numberLong": "1699181401821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65475031ecacab194fefd913" }, - "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1699176001832" } }, - "Expiry": { "$date": { "$numberLong": "1699181401832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65475031ecacab194fefd912" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1699176001829" } }, - "Expiry": { "$date": { "$numberLong": "1699181401829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "654754e1054e5b9a475ba2ad" }, - "Node": "CrewBattleNode555", - "Activation": { "$date": { "$numberLong": "1699176001834" } }, - "Expiry": { "$date": { "$numberLong": "1699181401834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "654762f148291c43458dc474" }, - "Node": "CrewBattleNode518", - "Activation": { "$date": { "$numberLong": "1699179601821" } }, - "Expiry": { "$date": { "$numberLong": "1699185001821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "654762f148291c43458dc477" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1699179601829" } }, - "Expiry": { "$date": { "$numberLong": "1699185001829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "654762f148291c43458dc475" }, + "_id": { "$oid": "6550c7a1bbb11874ea80f56f" }, "Node": "CrewBattleNode515", - "Activation": { "$date": { "$numberLong": "1699179601825" } }, - "Expiry": { "$date": { "$numberLong": "1699185001825" } }, + "Activation": { "$date": { "$numberLong": "1699795201825" } }, + "Expiry": { "$date": { "$numberLong": "1699800601825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "654762f148291c43458dc479" }, - "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1699179601834" } }, - "Expiry": { "$date": { "$numberLong": "1699185001834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "654762f148291c43458dc478" }, - "Node": "CrewBattleNode531", - "Activation": { "$date": { "$numberLong": "1699179601832" } }, - "Expiry": { "$date": { "$numberLong": "1699185001832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "654762f148291c43458dc476" }, - "Node": "CrewBattleNode501", - "Activation": { "$date": { "$numberLong": "1699179601827" } }, - "Expiry": { "$date": { "$numberLong": "1699185001827" } }, + "_id": { "$oid": "6550c7a1bbb11874ea80f570" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1699795201827" } }, + "Expiry": { "$date": { "$numberLong": "1699800601827" } }, "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "6550c7a2bbb11874ea80f571" }, + "Node": "CrewBattleNode525", + "Activation": { "$date": { "$numberLong": "1699795201829" } }, + "Expiry": { "$date": { "$numberLong": "1699800601829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "6550c7a2bbb11874ea80f572" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1699795201832" } }, + "Expiry": { "$date": { "$numberLong": "1699800601832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "6550c7a2bbb11874ea80f573" }, + "Node": "CrewBattleNode555", + "Activation": { "$date": { "$numberLong": "1699795201834" } }, + "Expiry": { "$date": { "$numberLong": "1699800601834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "6550d5b2210e9a054eef5a21" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1699798801821" } }, + "Expiry": { "$date": { "$numberLong": "1699804201821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "6550d5b2210e9a054eef5a22" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1699798801825" } }, + "Expiry": { "$date": { "$numberLong": "1699804201825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "6550d5b2210e9a054eef5a23" }, + "Node": "CrewBattleNode533", + "Activation": { "$date": { "$numberLong": "1699798801827" } }, + "Expiry": { "$date": { "$numberLong": "1699804201827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "6550d5b2210e9a054eef5a24" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1699798801829" } }, + "Expiry": { "$date": { "$numberLong": "1699804201829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "6550d5b2210e9a054eef5a25" }, + "Node": "CrewBattleNode529", + "Activation": { "$date": { "$numberLong": "1699798801832" } }, + "Expiry": { "$date": { "$numberLong": "1699804201832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "6550d5b2210e9a054eef5a26" }, + "Node": "CrewBattleNode538", + "Activation": { "$date": { "$numberLong": "1699798801834" } }, + "Expiry": { "$date": { "$numberLong": "1699804201834" } }, + "ActiveMissionTier": "VoidT4" } ], "PrimeAccessAvailability": { "State": "PRIME1" }, @@ -2324,23 +2354,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Corpus/Pistols/CorpusMinigun/CorpusMinigun", - "Activation": { "$date": { "$numberLong": "1699146000000" } }, - "Expiry": { "$date": { "$numberLong": "1699239600000" } }, + "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Pistols/TnBardPistol/TnBardPistolGun", + "Activation": { "$date": { "$numberLong": "1699707600000" } }, + "Expiry": { "$date": { "$numberLong": "1699801200000" } }, "Discount": 50, - "OriginalPrice": 175, - "SalePrice": 87, - "AmountTotal": 80, - "AmountSold": 11 + "OriginalPrice": 190, + "SalePrice": 95, + "AmountTotal": 150, + "AmountSold": 71 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "654550154737eeb97d8f103d" }, + "_id": { "$oid": "654e98a68f77ff95a143d8e9" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1699041301422" } }, - "endDate": { "$date": { "$numberLong": "1699649701422" } }, + "startDate": { "$date": { "$numberLong": "1699649702069" } }, + "endDate": { "$date": { "$numberLong": "1700254502069" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2348,10 +2378,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "654550154737eeb97d8f103e" }, + "_id": { "$oid": "654e98a68f77ff95a143d8ea" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1699041301422" } }, - "endDate": { "$date": { "$numberLong": "1699649701422" } }, + "startDate": { "$date": { "$numberLong": "1699649702069" } }, + "endDate": { "$date": { "$numberLong": "1700254502069" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2359,21 +2389,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "654550154737eeb97d8f1040" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1699041301422" } }, - "endDate": { "$date": { "$numberLong": "1699649701422" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], - "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "654550154737eeb97d8f103d" }, { "$oid": "654550154737eeb97d8f103e" }, { "$oid": "654550154737eeb97d8f103f" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" - }, - { - "_id": { "$oid": "654550154737eeb97d8f103f" }, + "_id": { "$oid": "654e98a68f77ff95a143d8eb" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1699041301422" } }, - "endDate": { "$date": { "$numberLong": "1699649701422" } }, + "startDate": { "$date": { "$numberLong": "1699649702069" } }, + "endDate": { "$date": { "$numberLong": "1700254502069" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2381,10 +2400,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6546b1fd94ce5277508959b8" }, + "_id": { "$oid": "654e98a68f77ff95a143d8ec" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1699649702069" } }, + "endDate": { "$date": { "$numberLong": "1700254502069" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], + "isGenerated": true, + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "654e98a68f77ff95a143d8e9" }, { "$oid": "654e98a68f77ff95a143d8ea" }, { "$oid": "654e98a68f77ff95a143d8eb" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + }, + { + "_id": { "$oid": "6550006969f22db526abb815" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2392,21 +2422,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6546b1fd94ce5277508959ba" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6546b1fd94ce5277508959b9" }, + "_id": { "$oid": "6550006969f22db526abb816" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2414,10 +2433,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6546b1fd94ce5277508959bb" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "_id": { "$oid": "6550006969f22db526abb817" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirEASY", + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2425,10 +2444,32 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6546b1fd94ce5277508959bc" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreak_MEDIUM", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "_id": { "$oid": "6550006969f22db526abb818" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerMEDIUM", + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6550006a69f22db526abb819" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeMEDIUM", + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6550006a69f22db526abb81a" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", @@ -2436,57 +2477,57 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6546b1fd94ce5277508959bd" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationHARD", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "_id": { "$oid": "6550006a69f22db526abb81b" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY", + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", + "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6546b1fd94ce5277508959be" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, + "_id": { "$oid": "6550006a69f22db526abb81c" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesHARD", + "startDate": { "$date": { "$numberLong": "1699741801931" } }, + "endDate": { "$date": { "$numberLong": "1699828201931" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6550e4ed03f0626fc01c4f6d" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedAffectorSuperEverything", + "startDate": { "$date": { "$numberLong": "1699800301512" } }, + "endDate": { "$date": { "$numberLong": "1699800901512" } }, "params": [{ "n": "ScriptParamValue", "v": 2 }], "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", + "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6546b1fd94ce5277508959bf" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesHARD", - "startDate": { "$date": { "$numberLong": "1699131901628" } }, - "endDate": { "$date": { "$numberLong": "1699221901628" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" + "Category": "PVPChallengeTypeCategory_MODEAFFECTOR" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [85.80854078402494, 40.95978290573566, 0], + "ProjectPct": [91.68905726815011, 53.82862202580854, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Nekros", "Valkyr", "Oberon"] }, - { "Category": "EXC_HARD", "Choices": ["Braton", "Lato", "Skana", "Paris", "Kunai"] } + { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, + { "Category": "EXC_HARD", "Choices": ["Boar", "Gammacor", "Anku", "Gorgon", "Angstrum"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "61b20d2473865f6f4e746b64" }, "Name": "- ATOM -#862", "Tier": 1, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "62e501a21c98c2e86f0ca127" }, "Name": "Rise again#654", "Tier": 2, "Emblem": true, "AllianceId": { "$oid": "64aeb5c2e489fe78a90ea84d" }, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5ad6ae822183db51113cad5a" }, "Name": "Ascension of Immortals#695", "Tier": 3, "Emblem": true, "AllianceId": { "$oid": "5b81e30157904a79f92c09fa" }, "OriginalPlatform": 0 }, - { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz#996", "Tier": 4, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5f87e86562bebb2d216bce45" }, "Name": "The windy city#684", "Tier": 5, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5fa2e5812794220e700f6f6a" }, "Name": "Ministry of Wonderland#405", "Tier": 1, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5efc425c4e453377337c5ad4" }, "Name": "SATANS KAT#927", "Tier": 2, "AllianceId": { "$oid": "589ba800be87e42d0a24942c" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5c5713243f8d4a3bb04e09b1" }, "Name": "Orokin Legionnaires#083", "Tier": 3, "AllianceId": { "$oid": "613df42cc566ad767f53d9e0" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "599b1e8cbe87e4a2d713dc74" }, "Name": "La Legione Oscura#122", "Tier": 5, "AllianceId": { "$oid": "5f98a7ccace62c369071e561" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "552c713807c56fafac7b3f37" }, "Name": "Syndicate Synergy#282", "Tier": 5, "AllianceId": { "$oid": "56031df008c56fe8106a9982" }, "Emblem": true, "OriginalPlatform": 0 }, { "_id": { "$oid": "559bb99d06c56f888a4b2f44" }, "Name": "--UMBRA--Lua Lycans#447", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "6365589e89dc6b94480fbb06" }, "OriginalPlatform": 0 } ], "SeasonInfo": { @@ -2498,69 +2539,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100240000000000000334" }, + "_id": { "$oid": "001100250000000000000348" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1698969600000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithAbilities" + "Activation": { "$date": { "$numberLong": "1699574400000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithElectricity" }, { - "_id": { "$oid": "001100240000000000000335" }, + "_id": { "$oid": "001100250000000000000349" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1699056000000" } }, - "Expiry": { "$date": { "$numberLong": "1699315200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithHeadshots" + "Activation": { "$date": { "$numberLong": "1699660800000" } }, + "Expiry": { "$date": { "$numberLong": "1699920000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyMedic" }, { - "_id": { "$oid": "001100240000000000000336" }, + "_id": { "$oid": "001100250000000000000350" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1699142400000" } }, - "Expiry": { "$date": { "$numberLong": "1699401600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithSecondary" + "Activation": { "$date": { "$numberLong": "1699747200000" } }, + "Expiry": { "$date": { "$numberLong": "1700006400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyDeployAirSupport" }, { - "_id": { "$oid": "001100240000000000000323" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRailjackHijackDestroyThree" + "_id": { "$oid": "001100250000000000000337" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyVenusBounties" }, { - "_id": { "$oid": "001100240000000000000324" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyIsolationBounties" + "_id": { "$oid": "001100250000000000000338" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyMineRarePlainsResources" }, { - "_id": { "$oid": "001100240000000000000325" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyDestroyCrewshipArtillery" + "_id": { "$oid": "001100250000000000000339" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPickUpRareMods" }, { - "_id": { "$oid": "001100240000000000000326" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyMineRareVenusResources" + "_id": { "$oid": "001100250000000000000340" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEnemiesInMech" }, { - "_id": { "$oid": "001100240000000000000327" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteDisruptionConduits" + "_id": { "$oid": "001100250000000000000341" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklySimarisScan" }, { - "_id": { "$oid": "001100240000000000000328" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsSurvival" + "_id": { "$oid": "001100250000000000000342" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardUnlockRelics" }, { - "_id": { "$oid": "001100240000000000000329" }, - "Activation": { "$date": { "$numberLong": "1698624000000" } }, - "Expiry": { "$date": { "$numberLong": "1699228800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKuvaSurvivalNoCapsules" + "_id": { "$oid": "001100250000000000000343" }, + "Activation": { "$date": { "$numberLong": "1699228800000" } }, + "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardTerminated" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":550}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":554}" } -- 2.47.2 From dd99e8782c64a467e4bf168b596964c5b2405f7e Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 14 Dec 2023 17:34:15 +0100 Subject: [PATCH 050/522] saveLoadout and misc. (#99) Co-authored-by: Matej Voboril --- .gitignore | 5 +- .nvmrc | 1 + package-lock.json | 116 ++--- package.json | 2 +- src/controllers/api/focusController.ts | 6 + .../api/genericUpdateController.ts | 32 +- src/controllers/api/getShipController.ts | 77 +++- src/controllers/api/inventoryController.ts | 7 +- src/controllers/api/loginController.ts | 2 +- src/controllers/api/saveLoadout.ts | 22 +- .../api/setBootLocationController.ts | 6 + .../api/trainingResultController.ts | 2 +- src/controllers/api/viewController.ts | 8 - src/controllers/stats/viewController.ts | 3 +- src/helpers/general.ts | 8 + src/helpers/inventoryHelpers.ts | 10 +- .../{ => inventoryModels}/inventoryModel.ts | 434 +++++++++++------- src/models/inventoryModels/loadoutModel.ts | 96 ++++ src/models/shipModel.ts | 29 +- src/routes/api.ts | 6 +- src/routes/stats.ts | 2 +- src/services/inventoryService.ts | 44 +- src/services/loginService.ts | 13 +- src/services/purchaseService.ts | 44 +- src/services/saveLoadoutService.ts | 160 +++++++ src/services/shipService.ts | 8 +- src/types/inventoryTypes/SuitTypes.ts | 37 +- .../inventoryTypes/commonInventoryTypes.ts | 44 ++ src/types/inventoryTypes/inventoryTypes.ts | 175 +++---- src/types/inventoryTypes/weaponTypes.ts | 20 +- src/types/purchaseTypes.ts | 11 +- src/types/requestTypes.ts | 12 +- src/types/saveLoadoutTypes.ts | 92 ++++ src/types/shipTypes.ts | 18 +- .../postTutorialInventory.json | 21 +- static/fixed_responses/testQuestKeys.json | 30 ++ 36 files changed, 1123 insertions(+), 480 deletions(-) create mode 100644 .nvmrc create mode 100644 src/controllers/api/focusController.ts create mode 100644 src/controllers/api/setBootLocationController.ts delete mode 100644 src/controllers/api/viewController.ts rename src/models/{ => inventoryModels}/inventoryModel.ts (53%) create mode 100644 src/models/inventoryModels/loadoutModel.ts create mode 100644 src/services/saveLoadoutService.ts create mode 100644 src/types/saveLoadoutTypes.ts diff --git a/.gitignore b/.gitignore index 70556674..23c4cd81 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,7 @@ /.env /static/data/*.bin yarn.lock -/tmp \ No newline at end of file +/tmp + +# JetBrains/webstorm configs +.idea/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..9de22568 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/iron diff --git a/package-lock.json b/package-lock.json index b3e60e77..de59907c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.4.1", + "mongoose": "^8.0.2", "warframe-items": "1.1260.121" }, "devDependencies": { @@ -214,6 +214,14 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", + "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -319,9 +327,9 @@ } }, "node_modules/@types/express": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", - "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -419,9 +427,9 @@ "dev": true }, "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", @@ -1140,11 +1148,11 @@ } }, "node_modules/bson": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", - "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz", + "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==", "engines": { - "node": ">=14.20.1" + "node": ">=16.20.1" } }, "node_modules/buffer-from": { @@ -2136,11 +2144,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -2397,8 +2400,7 @@ "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" }, "node_modules/merge-descriptors": { "version": "1.0.1", @@ -2506,26 +2508,25 @@ } }, "node_modules/mongodb": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", - "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz", + "integrity": "sha512-d7OSuGjGWDZ5usZPqfvb36laQ9CPhnWkAGHT61x5P95p/8nMVeH8asloMwW6GcYFeB0Vj4CB/1wOTDG2RA9BFA==", "dependencies": { - "bson": "^5.4.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" + "@mongodb-js/saslprep": "^1.1.0", + "bson": "^6.2.0", + "mongodb-connection-string-url": "^2.6.0" }, "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" + "node": ">=16.20.1" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", + "@aws-sdk/credential-providers": "^3.188.0", "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" }, "peerDependenciesMeta": { "@aws-sdk/credential-providers": { @@ -2534,6 +2535,9 @@ "@mongodb-js/zstd": { "optional": true }, + "gcp-metadata": { + "optional": true + }, "kerberos": { "optional": true }, @@ -2542,6 +2546,9 @@ }, "snappy": { "optional": true + }, + "socks": { + "optional": true } } }, @@ -2555,20 +2562,20 @@ } }, "node_modules/mongoose": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.1.tgz", - "integrity": "sha512-o3E5KHHiHdaiwCJG3+9r70sncRKki71Ktf/TfXdW6myu+53rtZ56uLl5ylkQiCf60V3COJuOeekcxXVsjQ7cBA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.2.tgz", + "integrity": "sha512-Vsi9GzTXjdBVzheT1HZOZ2jHNzzR9Xwb5OyLz/FvDEAhlwrRnXnuqJf0QHINUOQSm7aoyvnPks0q85HJkd6yDw==", "dependencies": { - "bson": "^5.4.0", + "bson": "^6.2.0", "kareem": "2.5.1", - "mongodb": "5.7.0", + "mongodb": "6.2.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, "engines": { - "node": ">=14.20.1" + "node": ">=16.20.1" }, "funding": { "type": "opencollective", @@ -3223,18 +3230,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -3350,28 +3345,6 @@ "node": ">=8" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3395,7 +3368,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, "dependencies": { "memory-pager": "^1.0.2" } diff --git a/package.json b/package.json index 7c971d7a..7416d812 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.4.1", + "mongoose": "^8.0.2", "warframe-items": "1.1260.121" }, "devDependencies": { diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts new file mode 100644 index 00000000..f5d945fc --- /dev/null +++ b/src/controllers/api/focusController.ts @@ -0,0 +1,6 @@ +import { Handler } from "express"; + +export const focusController: Handler = (_req, _res) => { + //console.log("focusController", req.query); + _res.sendStatus(400); +}; diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index 63453c94..f77e366f 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -3,26 +3,24 @@ import { IGenericUpdate } from "@/src/types/genericUpdate"; import { RequestHandler } from "express"; // TODO: Nightwave evidence submission support is the only thing missing. -// TODO: Also, you might want to test this, because I definitely didn't. -const genericUpdateController: RequestHandler = async (request, response) => { - const accountId = request.query.accountId as string; +// TODO: this was added by someone without testing. It may not work. +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const genericUpdateController: RequestHandler = async (_request, response) => { + // const accountId = request.query.accountId as string; - const [body] = String(request.body).split("\n"); + // const [body] = String(request.body).split("\n"); - let reply = {}; - try { - const update = JSON.parse(body) as IGenericUpdate; - if (typeof update !== "object") { - throw new Error("Invalid data format"); - } + // let reply = {}; + // try { + // const update = JSON.parse(body) as IGenericUpdate; + // if (typeof update !== "object") { + // throw new Error("Invalid data format"); + // } - reply = await updateGeneric(update, accountId); - } catch (err) { - console.error("Error parsing JSON data:", err); - } - - // Response support added for when Nightwave is supported below. - // response.json(reply); + // reply = await updateGeneric(update, accountId); + // } catch (err) { + // console.error("Error parsing JSON data:", err); + // } response.json({}); }; diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index 7439acf1..b0501365 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -1,14 +1,89 @@ import { Ship } from "@/src/models/shipModel"; +import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const getShipController: RequestHandler = async (req, res) => { const accountId = req.query.accountId; - const ship = await Ship.findOne({ ShipOwnerId: accountId }); + const ship = await Ship.findOne({ ShipOwnerId: accountId }).populate<{ + LoadOutInventory: { LoadOutPresets: ILoadoutDatabase }; + }>("LoadOutInventory.LoadOutPresets"); + if (!ship) { res.status(500).json({ error: "error finding a corresponding ship" }); return; } + + ship.Ship.Features = [ + "/Lotus/Types/Items/ShipFeatureItems/AdvancedOrdisFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/AlchemyRoomFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/AlertsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/CeresNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ClanFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ErisNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/EuropaNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryConcurrentBuildFormaFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryItem", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/JupiterNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MarketTierOneFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MarketTierTwoFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MarsNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFusionFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsTransmuteFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/NeptuneNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/PhobosNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/PlutoNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodBraceFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHullFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleLeftFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleRightFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackTailFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/RailjackCephalonShipFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/RailjackKeyShipFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SaturnNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SednaNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ShipFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SolarChartFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/UranusNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/VenusNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/VoidProjectionFeatureItem" + ]; + res.json(ship); }; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 078532dc..c12387a9 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,10 +1,11 @@ /* eslint-disable @typescript-eslint/no-misused-promises */ import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; -import { Inventory } from "@/src/models/inventoryModel"; +import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Request, RequestHandler, Response } from "express"; import config from "@/config.json"; import testMissions from "@/static/fixed_responses/testMissions.json"; import testQuestKeys from "@/static/fixed_responses/testQuestKeys.json"; +import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { const accountId = request.query.accountId; @@ -14,7 +15,9 @@ const inventoryController: RequestHandler = async (request: Request, response: R return; } - const inventory = await Inventory.findOne({ accountOwnerId: accountId }); + const inventory = await Inventory.findOne({ accountOwnerId: accountId }).populate<{ + LoadOutPresets: ILoadoutDatabase; + }>("LoadOutPresets"); if (!inventory) { response.status(400).json({ error: "inventory was undefined" }); diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index e48e6df0..e488f080 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -50,7 +50,7 @@ const loginController: RequestHandler = async (request, response) => { return; } catch (error: unknown) { if (error instanceof Error) { - throw new Error("error creating account"); + throw new Error("error creating account", error); } } } diff --git a/src/controllers/api/saveLoadout.ts b/src/controllers/api/saveLoadout.ts index b83ad6b1..31431798 100644 --- a/src/controllers/api/saveLoadout.ts +++ b/src/controllers/api/saveLoadout.ts @@ -1,13 +1,27 @@ -import { Inventory } from "@/src/models/inventoryModel"; import { RequestHandler } from "express"; import util from "util"; +import { ISaveLoadoutRequest } from "@/src/types/saveLoadoutTypes"; +import { handleInventoryItemConfigChange } from "@/src/services/saveLoadoutService"; +import { parseString } from "@/src/helpers/general"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const saveLoadoutController: RequestHandler = async (req, res) => { - const body = JSON.parse(req.body); - console.log(util.inspect(body, { showHidden: false, depth: null, colors: true })); + //validate here + const accountId = parseString(req.query.accountId); - res.sendStatus(200); + try { + const body: ISaveLoadoutRequest = JSON.parse(req.body as string) as ISaveLoadoutRequest; + // console.log(util.inspect(body, { showHidden: false, depth: null, colors: true })); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { UpgradeVer, ...equipmentChanges } = body; + await handleInventoryItemConfigChange(equipmentChanges, accountId); + res.status(200).end(); + } catch (error: unknown) { + if (error instanceof Error) { + res.status(400).json({ error: error.message }); + } + } }; export { saveLoadoutController }; diff --git a/src/controllers/api/setBootLocationController.ts b/src/controllers/api/setBootLocationController.ts new file mode 100644 index 00000000..a2e745bc --- /dev/null +++ b/src/controllers/api/setBootLocationController.ts @@ -0,0 +1,6 @@ +import { Request, Response } from "express"; + +export const setBootLocationController = (req: Request, res: Response) => { + console.log("setBootLocationController", req.query); + res.end(); +}; diff --git a/src/controllers/api/trainingResultController.ts b/src/controllers/api/trainingResultController.ts index 9feffe38..db2965bf 100644 --- a/src/controllers/api/trainingResultController.ts +++ b/src/controllers/api/trainingResultController.ts @@ -1,6 +1,6 @@ import { parseString } from "@/src/helpers/general"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; -import { Inventory } from "@/src/models/inventoryModel"; +import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { getInventory } from "@/src/services/inventoryService"; import { IMongoDate } from "@/src/types/commonTypes"; import { RequestHandler } from "express"; diff --git a/src/controllers/api/viewController.ts b/src/controllers/api/viewController.ts deleted file mode 100644 index e63d3b1a..00000000 --- a/src/controllers/api/viewController.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { RequestHandler } from "express"; -import view from "@/static/fixed_responses/view.json"; - -const viewController: RequestHandler = (_req, res) => { - res.json(view); -}; - -export { viewController }; diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index 4e988ccc..e63d3b1a 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -1,7 +1,8 @@ import { RequestHandler } from "express"; +import view from "@/static/fixed_responses/view.json"; const viewController: RequestHandler = (_req, res) => { - res.json({}); + res.json(view); }; export { viewController }; diff --git a/src/helpers/general.ts b/src/helpers/general.ts index 8aa19a1a..cc13e4ec 100644 --- a/src/helpers/general.ts +++ b/src/helpers/general.ts @@ -55,4 +55,12 @@ const parseBoolean = (booleanCandidate: unknown): boolean => { return booleanCandidate; }; +export const isObject = (objectCandidate: unknown): objectCandidate is Record => { + return ( + (typeof objectCandidate === "object" || objectCandidate instanceof Object) && + objectCandidate !== null && + !Array.isArray(objectCandidate) + ); +}; + export { isString, isNumber, parseString, parseNumber, parseDateNumber, parseBoolean, parseEmail }; diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts index 45b6ff14..92c1726f 100644 --- a/src/helpers/inventoryHelpers.ts +++ b/src/helpers/inventoryHelpers.ts @@ -1,10 +1,14 @@ +import { IOid } from "@/src/types/commonTypes"; import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes"; +import { Types } from "mongoose"; -// a schema's toJSON is responsible for changing Oid and Date to their corresponding Response versions __id to "ItemId":{"$oid":"6450f720bc562ebf030222d4"}, and a Date to "date":{"$date":{"$numberLong":"unix timestamp"}) -const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => { +//TODO: this needs to be addressed: a schema's toJSON is responsible for changing Oid and Date to their corresponding Response versions __id to "ItemId":{"$oid":"6450f720bc562ebf030222d4"}, and a Date to "date":{"$date":{"$numberLong":"unix timestamp"}) +export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => { // eslint-disable-next-line @typescript-eslint/no-unused-vars const { accountOwnerId, ...inventoryResponse } = inventoryDatabase; return inventoryResponse as unknown as IInventoryResponse; }; -export { toInventoryResponse }; +export const toOid = (objectId: Types.ObjectId) => { + return { $oid: objectId.toString() } satisfies IOid; +}; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts similarity index 53% rename from src/models/inventoryModel.ts rename to src/models/inventoryModels/inventoryModel.ts index 5c753b86..deb3d10f 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -7,182 +7,229 @@ import { IBooster, IInventoryResponse, IInventoryDatabaseDocument, - IInventoryResponseDocument -} from "../types/inventoryTypes/inventoryTypes"; -import { IMongoDate, IOid } from "../types/commonTypes"; -import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; + ISlots, + IGenericItem, + IMailbox, + IDuviriInfo +} from "../../types/inventoryTypes/inventoryTypes"; +import { IMongoDate, IOid } from "../../types/commonTypes"; +import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; +import { + IAbilityOverride, + IColor, + IItemConfig, + IOperatorConfigClient, + IOperatorConfigDatabase, + IPolarity +} from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { toOid } from "@/src/helpers/inventoryHelpers"; -const abilityOverrideSchema = new Schema({ +const polaritySchema = new Schema({ + Slot: Number, + Value: String +}); + +const abilityOverrideSchema = new Schema({ Ability: String, Index: Number }); -const colorSchema = new Schema({ - t0: Number, - t1: Number, - t2: Number, - t3: Number, - en: Number, - e1: Number, - m0: Number, - m1: Number +const colorSchema = new Schema( + { + t0: Number, + t1: Number, + t2: Number, + t3: Number, + en: Number, + e1: Number, + m0: Number, + m1: Number + }, + { _id: false } +); + +const operatorConfigSchema = new Schema( + { + Skins: [String], + pricol: colorSchema, + attcol: colorSchema, + sigcol: colorSchema, + eyecol: colorSchema, + facial: colorSchema, + syancol: colorSchema, + cloth: colorSchema, + Upgrades: [String], + Name: String, // not sure if possible in operator + ugly: Boolean // not sure if possible in operator + }, + { id: false } +); + +operatorConfigSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; }); -const weaponConfigSchema = new Schema({ - Skins: [String], - pricol: colorSchema, - attcol: colorSchema, - eyecol: colorSchema, - sigcol: colorSchema, - Upgrades: [String], - Songs: [ - { - m: String, - b: String, - p: String, - s: String - } - ], - Name: String, - AbilityOverride: abilityOverrideSchema, - PvpUpgrades: [String], - ugly: Boolean -}); - -// longGunConfigSchema.set("toJSON", { -// transform(_document, returnedObject: ISuitDocument) { -// // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call -// returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; -// delete returnedObject._id; -// delete returnedObject.__v; -// } -// }); - -const WeaponSchema = new Schema({ - ItemType: String, - Configs: [weaponConfigSchema], - UpgradeVer: Number, - XP: Number, - Features: Number, - Polarized: Number, - Polarity: Schema.Types.Mixed, //todo - FocusLens: String, - ModSlotPurchases: Number, - UpgradeType: Schema.Types.Mixed, //todo - UpgradeFingerprint: String, - ItemName: String, - ModularParts: [String], - UnlockLevel: Number -}); - -const BoosterSchema = new Schema({ - ExpiryDate: Number, - ItemType: String -}); - -const RawUpgrades = new Schema({ - ItemType: String, - ItemCount: Number -}); - -RawUpgrades.set("toJSON", { +operatorConfigSchema.set("toJSON", { + virtuals: true, transform(_document, returnedObject) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.LastAdded = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } }); +///TODO: clearly seperate the different config schemas. (suit and weapon and so on) +const ItemConfigSchema = new Schema( + { + Skins: [String], + pricol: colorSchema, + attcol: colorSchema, + sigcol: colorSchema, + eyecol: colorSchema, + facial: colorSchema, + syancol: colorSchema, + Upgrades: [String], + Songs: [ + { + m: String, + b: String, + p: String, + s: String + } + ], + Name: String, + AbilityOverride: abilityOverrideSchema, + PvpUpgrades: [String], + ugly: Boolean + }, + { _id: false } +); + +ItemConfigSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject.__v; + } +}); + +//TODO: migrate to one schema for weapons and suits.. and possibly others +const WeaponSchema = new Schema( + { + ItemType: String, + Configs: [ItemConfigSchema], + UpgradeVer: Number, + XP: Number, + Features: Number, + Polarized: Number, + Polarity: [polaritySchema], + FocusLens: String, + ModSlotPurchases: Number, + UpgradeType: Schema.Types.Mixed, //todo + UpgradeFingerprint: String, + ItemName: String, + ModularParts: [String], + UnlockLevel: Number + }, + { id: false } +); + +WeaponSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; +}); + +WeaponSchema.set("toJSON", { + virtuals: true, + transform(_document, returnedObject) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const BoosterSchema = new Schema({ + ExpiryDate: Number, + ItemType: String +}); + +const RawUpgrades = new Schema( + { + ItemType: String, + ItemCount: Number + }, + { id: false } +); + +RawUpgrades.virtual("LastAdded").get(function () { + return { $oid: this._id.toString() } satisfies IOid; +}); + +RawUpgrades.set("toJSON", { + virtuals: true, + transform(_document, returnedObject) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +//TODO: find out what this is const Upgrade = new Schema({ UpgradeFingerprint: String, ItemType: String }); +Upgrade.virtual("ItemId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; +}); + Upgrade.set("toJSON", { - transform(_document, returnedObject) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; - delete returnedObject._id; - delete returnedObject.__v; - } -}); - -WeaponSchema.set("toJSON", { - transform(_document, returnedObject) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; - delete returnedObject._id; - delete returnedObject.__v; - } -}); - -const polaritySchema = new Schema({ - Slot: Number, - Value: String -}); - -const suitConfigSchema = new Schema({ - Skins: [String], - pricol: colorSchema, - attcol: colorSchema, - eyecol: colorSchema, - sigcol: colorSchema, - Upgrades: [String], - Songs: [ - { - m: String, - b: String, - p: String, - s: String - } - ], - Name: String, - AbilityOverride: abilityOverrideSchema, - PvpUpgrades: [String], - ugly: Boolean -}); - -suitConfigSchema.set("toJSON", { + virtuals: true, transform(_document, returnedObject) { delete returnedObject._id; delete returnedObject.__v; } }); -const suitSchema = new Schema({ - ItemType: String, - Configs: [suitConfigSchema], - UpgradeVer: Number, - XP: Number, - InfestationDate: Date, - Features: Number, - Polarity: [polaritySchema], - Polarized: Number, - ModSlotPurchases: Number, - FocusLens: String, - UnlockLevel: Number +//TODO: reduce weapon and suit schemas to one schema if reasonable +const suitSchema = new Schema( + { + ItemType: String, + Configs: [ItemConfigSchema], + UpgradeVer: Number, + XP: Number, + InfestationDate: Date, + Features: Number, + Polarity: [polaritySchema], + Polarized: Number, + ModSlotPurchases: Number, + FocusLens: String, + UnlockLevel: Number + }, + { id: false } +); + +suitSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; }); suitSchema.set("toJSON", { + virtuals: true, transform(_document, returnedObject) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } }); -const slotsBinSchema = new Schema( +const slotsBinSchema = new Schema( { - Slots: Number + Slots: Number, + Extra: Number }, { _id: false } ); -const FlavourItemSchema = new Schema({ - ItemType: String -}); +const FlavourItemSchema = new Schema( + { + ItemType: String + }, + { _id: false } +); FlavourItemSchema.set("toJSON", { transform(_document, returnedObject) { @@ -191,7 +238,70 @@ FlavourItemSchema.set("toJSON", { } }); -const inventorySchema = new Schema({ +const GenericItemSchema = new Schema( + { + ItemType: String, + Configs: [ItemConfigSchema], + UpgradeVer: Number //this is probably just __v + }, + { id: false } +); + +GenericItemSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; +}); + +GenericItemSchema.set("toJSON", { + virtuals: true, + transform(_document, returnedObject) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +// "Mailbox": { "LastInboxId": { "$oid": "123456780000000000000000" } } +const MailboxSchema = new Schema( + { + LastInboxId: { + type: Schema.Types.ObjectId, + set: (v: IMailbox["LastInboxId"]) => v.$oid.toString() + } + }, + { id: false, _id: false } +); + +MailboxSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject.__v; + //TODO: there is a lot of any here + returnedObject.LastInboxId = toOid(returnedObject.LastInboxId as Types.ObjectId); + } +}); + +const DuviriInfoSchema = new Schema( + { + Seed: Number, + NumCompletions: Number + }, + { + _id: false, + id: false + } +); + +DuviriInfoSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject.__v; + } +}); + +const inventorySchema = new Schema({ + Horses: [GenericItemSchema], + DrifterMelee: [GenericItemSchema], + DrifterGuns: [GenericItemSchema], + DuviriInfo: DuviriInfoSchema, + Mailbox: MailboxSchema, + KahlLoadOuts: [Schema.Types.Mixed], accountOwnerId: Schema.Types.ObjectId, SubscribedToEmails: Number, Created: Schema.Types.Mixed, @@ -203,11 +313,15 @@ const inventorySchema = new Schema; MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; + OperatorLoadOuts: Types.DocumentArray; + AdultOperatorLoadOuts: Types.DocumentArray; + MechSuits: Types.DocumentArray; + Scoops: Types.DocumentArray; + DataKnives: Types.DocumentArray; + DrifterMelee: Types.DocumentArray; + Sentinels: Types.DocumentArray; + Horses: Types.DocumentArray; }; -type InventoryModelType = Model; +type InventoryModelType = Model; const Inventory = model("Inventory", inventorySchema); diff --git a/src/models/inventoryModels/loadoutModel.ts b/src/models/inventoryModels/loadoutModel.ts new file mode 100644 index 00000000..37a8d104 --- /dev/null +++ b/src/models/inventoryModels/loadoutModel.ts @@ -0,0 +1,96 @@ +import { IOid } from "@/src/types/commonTypes"; +import { ILoadoutConfigDatabase, ILoadoutDatabase, IEquipmentSelection } from "@/src/types/saveLoadoutTypes"; +import { Model, Schema, Types, model } from "mongoose"; + +const oidSchema = new Schema( + { + $oid: String + }, + { + _id: false + } +); + +//create a mongoose schema based on interface M +const EquipmentSelectionSchema = new Schema( + { + ItemId: { + type: oidSchema, + default: { $oid: "000000000000000000000000" } + }, + mod: Number, + cus: Number + }, + { + _id: false + } +); + +const loadoutConfigSchema = new Schema( + { + PresetIcon: String, + Favorite: Boolean, + n: String, + s: EquipmentSelectionSchema, + p: EquipmentSelectionSchema, + l: EquipmentSelectionSchema, + m: EquipmentSelectionSchema + }, + { + id: false + } +); + +loadoutConfigSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; +}); + +loadoutConfigSchema.set("toJSON", { + virtuals: true, + transform(_doc, ret, _options) { + delete ret._id; + delete ret.__v; + } +}); + +export const loadoutSchema = new Schema({ + NORMAL: [loadoutConfigSchema], + SENTINEL: [loadoutConfigSchema], + ARCHWING: [loadoutConfigSchema], + NORMAL_PVP: [loadoutConfigSchema], + LUNARO: [loadoutConfigSchema], + OPERATOR: [loadoutConfigSchema], + KDRIVE: [loadoutConfigSchema], + DATAKNIFE: [loadoutConfigSchema], + MECH: [loadoutConfigSchema], + OPERATOR_ADULT: [loadoutConfigSchema], + DRIFTER: [loadoutConfigSchema], + loadoutOwnerId: Schema.Types.ObjectId +}); + +loadoutSchema.set("toJSON", { + transform(_doc, ret, _options) { + delete ret._id; + delete ret.__v; + delete ret.loadoutOwnerId; + } +}); + +//create database typefor ILoadoutConfig +type loadoutDocumentProps = { + NORMAL: Types.DocumentArray; + SENTINEL: Types.DocumentArray; + ARCHWING: Types.DocumentArray; + NORMAL_PVP: Types.DocumentArray; + LUNARO: Types.DocumentArray; + OPERATOR: Types.DocumentArray; + KDRIVE: Types.DocumentArray; + DATAKNIFE: Types.DocumentArray; + MECH: Types.DocumentArray; + OPERATOR_ADULT: Types.DocumentArray; + DRIFTER: Types.DocumentArray; +}; + +type loadoutModelType = Model; + +export const LoadoutModel = model("Loadout", loadoutSchema); diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index bd56d933..4b16ebd2 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,6 +1,7 @@ import { Schema, model } from "mongoose"; import { IShip } from "../types/shipTypes"; import { IOid } from "../types/commonTypes"; +import { loadoutSchema } from "@/src/models/inventoryModels/loadoutModel"; const roomSchema = new Schema( { @@ -10,16 +11,22 @@ const roomSchema = new Schema( { _id: false } ); -const shipSchema = new Schema({ - Rooms: [roomSchema], - Features: [String], - ContentUrlSignature: String +const shipSchema = new Schema( + { + Rooms: [roomSchema], + Features: [String], + ContentUrlSignature: String + }, + { id: false } +); + +shipSchema.virtual("ShipId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; }); shipSchema.set("toJSON", { + virtuals: true, transform(_document, returnedObject) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; } }); @@ -35,10 +42,16 @@ apartmentSchema.set("toJSON", { } }); -const shipDatabaseSchema = new Schema({ +const shipDatabaseSchema = new Schema({ ShipOwnerId: Schema.Types.ObjectId, Ship: shipSchema, - Apartment: apartmentSchema + Apartment: apartmentSchema, + LoadOutInventory: { + LoadOutPresets: { + type: Schema.Types.ObjectId, + ref: "Loadout" + } + } }); shipDatabaseSchema.set("toJSON", { diff --git a/src/routes/api.ts b/src/routes/api.ts index de269c34..66f55d0f 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -26,13 +26,14 @@ import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestCo import { surveysController } from "@/src/controllers/api/surveysController"; import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController"; import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; -import { viewController } from "@/src/controllers/api/viewController"; import { joinSessionController } from "@/src/controllers/api/joinSessionController"; import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; import { trainingResultController } from "@/src/controllers/api/trainingResultController"; import { artifactsController } from "../controllers/api/artifactsController"; import express from "express"; +import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; +import { focusController } from "@/src/controllers/api/focusController"; const apiRouter = express.Router(); @@ -46,7 +47,6 @@ apiRouter.get("/loginRewards.php", loginRewardsController); apiRouter.get("/checkDailyMissionBonus.php", checkDailyMissionBonusController); apiRouter.get("/inbox.php", inboxController); apiRouter.get("/getShip.php", getShipController); -apiRouter.get("/view.php", viewController); apiRouter.get("/drones.php", dronesController); apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController); apiRouter.get("/getNewRewardSeed.php", getNewRewardSeedController); @@ -58,8 +58,10 @@ apiRouter.get("/hub", hubController); apiRouter.get("/modularWeaponSale.php", modularWeaponSaleController); apiRouter.get("/deleteSession.php", deleteSessionController); apiRouter.get("/logout.php", logoutController); +apiRouter.get("/setBootLocation.php", setBootLocationController); // post +apiRouter.post("/focus.php", focusController); apiRouter.post("/artifacts.php", artifactsController); apiRouter.post("/findSessions.php", findSessionsController); // eslint-disable-next-line @typescript-eslint/no-misused-promises diff --git a/src/routes/stats.ts b/src/routes/stats.ts index a0df739f..59290675 100644 --- a/src/routes/stats.ts +++ b/src/routes/stats.ts @@ -1,4 +1,4 @@ -import { viewController } from "../controllers/api/viewController"; +import { viewController } from "../controllers/stats/viewController"; import { uploadController } from "@/src/controllers/stats/uploadController"; import express from "express"; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 035881bd..93d62603 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -1,10 +1,10 @@ -import { Inventory } from "@/src/models/inventoryModel"; +import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import config from "@/config.json"; import { Types } from "mongoose"; -import { ISuitDatabase, ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; +import { ISuitDatabase, ISuitClient } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; -import { IWeaponDatabase, IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; +import { IWeaponDatabase, IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; import { IChallengeProgress, IConsumable, @@ -17,9 +17,13 @@ import { import { IGenericUpdate } from "../types/genericUpdate"; import { IArtifactsRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes"; -const createInventory = async (accountOwnerId: Types.ObjectId) => { +export const createInventory = async (accountOwnerId: Types.ObjectId, loadOutPresetId: Types.ObjectId) => { try { - const inventory = new Inventory({ ...new_inventory, accountOwnerId: accountOwnerId }); + const inventory = new Inventory({ + ...new_inventory, + accountOwnerId: accountOwnerId, + LoadOutPresets: loadOutPresetId + }); if (config.skipStoryModeChoice) { inventory.StoryModeChoice = "WARFRAME"; } @@ -27,6 +31,7 @@ const createInventory = async (accountOwnerId: Types.ObjectId) => { inventory.PlayedParkourTutorial = true; inventory.ReceivedStartingGear = true; } + await inventory.save(); } catch (error) { if (error instanceof Error) { @@ -48,13 +53,28 @@ export const getInventory = async (accountOwnerId: string) => { return inventory; }; -const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { +//TODO: genericMethod for all the add methods, they share a lot of logic +export const addSentinel = async (sentinelName: string, accountId: string) => { + const inventory = await getInventory(accountId); + const sentinelIndex = inventory.Sentinels.push({ ItemType: sentinelName, Configs: [], XP: 0 }); + const changedInventory = await inventory.save(); + return changedInventory.Sentinels[sentinelIndex - 1].toJSON(); +}; + +export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { const inventory = await getInventory(accountId); const suitIndex = inventory.Suits.push({ ItemType: powersuitName, Configs: [], UpgradeVer: 101, XP: 0 }); const changedInventory = await inventory.save(); return changedInventory.Suits[suitIndex - 1].toJSON(); }; +export const addMechSuit = async (mechsuitName: string, accountId: string) => { + const inventory = await getInventory(accountId); + const suitIndex = inventory.MechSuits.push({ ItemType: mechsuitName, Configs: [], UpgradeVer: 101, XP: 0 }); + const changedInventory = await inventory.save(); + return changedInventory.MechSuits[suitIndex - 1].toJSON(); +}; + export const updateSlots = async (slotType: SlotType, accountId: string, slots: number) => { const inventory = await getInventory(accountId); @@ -65,6 +85,9 @@ export const updateSlots = async (slotType: SlotType, accountId: string, slots: case SlotType.WEAPON: inventory.WeaponBin.Slots += slots; break; + case SlotType.MECHSUIT: + inventory.MechBin.Slots += slots; + break; default: throw new Error("invalid slot type"); } @@ -107,7 +130,7 @@ export const addWeapon = async ( weaponType: WeaponTypeInternal, weaponName: string, accountId: string -): Promise => { +): Promise => { const inventory = await getInventory(accountId); let weaponIndex; @@ -139,7 +162,7 @@ export const addCustomization = async (customizatonName: string, accountId: stri const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, - gearArray: ISuitDatabase[] | IWeaponDatabase[] | undefined, + gearArray: ISuitClient[] | IWeaponClient[] | undefined, categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" ) => { const category = inventory[categoryName]; @@ -242,7 +265,6 @@ const addMissionComplete = (inventory: IInventoryDatabaseDocument, { Tag, Comple }; const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; -type GearKeysType = (typeof gearKeys)[number]; export const missionInventoryUpdate = async (data: IMissionInventoryUpdateRequest, accountId: string) => { const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, FusionPoints, Consumables, Recipes, Missions } = @@ -256,7 +278,7 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques inventory.FusionPoints += FusionPoints || 0; // Gear XP - gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); + gearKeys.forEach(key => addGearExpByCategory(inventory, data[key], key)); // other addMods(inventory, RawUpgrades); @@ -339,5 +361,3 @@ export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: st throw error; } }; - -export { createInventory, addPowerSuit }; diff --git a/src/services/loginService.ts b/src/services/loginService.ts index 9e7959f0..1753c85b 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -2,6 +2,8 @@ import { Account } from "@/src/models/loginModel"; import { createInventory } from "@/src/services/inventoryService"; import { IDatabaseAccount } from "@/src/types/loginTypes"; import { createShip } from "./shipService"; +import { Types } from "mongoose"; +import { LoadoutModel } from "@/src/models/inventoryModels/loadoutModel"; const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => { return requestPassword === databasePassword; @@ -11,8 +13,9 @@ const createAccount = async (accountData: IDatabaseAccount) => { const account = new Account(accountData); try { await account.save(); - await createInventory(account._id); - await createShip(account._id); + const loadoutId = await createLoadout(account._id); + await createInventory(account._id, loadoutId); + await createShip(account._id, loadoutId); return account.toJSON(); } catch (error) { if (error instanceof Error) { @@ -23,3 +26,9 @@ const createAccount = async (accountData: IDatabaseAccount) => { }; export { isCorrectPassword, createAccount }; + +export const createLoadout = async (accountId: Types.ObjectId) => { + const loadout = new LoadoutModel({ loadoutOwnerId: accountId }); + const savedLoadout = await loadout.save(); + return savedLoadout._id; +}; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 8b88cd86..b6d80c21 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,6 +1,14 @@ import { getWeaponType } from "@/src/helpers/purchaseHelpers"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; -import { addBooster, addCustomization, addPowerSuit, addWeapon, updateSlots } from "@/src/services/inventoryService"; +import { + addBooster, + addCustomization, + addMechSuit, + addPowerSuit, + addSentinel, + addWeapon, + updateSlots +} from "@/src/services/inventoryService"; import { IPurchaseRequest, SlotType } from "@/src/types/purchaseTypes"; export const getStoreItemCategory = (storeItem: string) => { @@ -72,8 +80,25 @@ const handleWeaponsPurchase = async (weaponName: string, accountId: string) => { }; const handlePowersuitPurchase = async (powersuitName: string, accountId: string) => { + if (powersuitName.includes("EntratiMech")) { + const mechSuit = await addMechSuit(powersuitName, accountId); + await updateSlots(SlotType.MECHSUIT, accountId, -1); + console.log("mech suit", mechSuit); + + return { + InventoryChanges: { + MechBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + MechSuits: [mechSuit] + } + }; + } + const suit = await addPowerSuit(powersuitName, accountId); - await updateSlots(SlotType.WEAPON, accountId, -1); + await updateSlots(SlotType.SUIT, accountId, -1); return { InventoryChanges: { @@ -95,13 +120,24 @@ const handleTypesPurchase = async (typesName: string, accountId: string) => { return await handleSuitCustomizationsPurchase(typesName, accountId); // case "Recipes": // break; - // case "Sentinels": - // break; + case "Sentinels": + return await handleSentinelPurchase(typesName, accountId); default: throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); } }; +const handleSentinelPurchase = async (sentinelName: string, accountId: string) => { + const sentinel = await addSentinel(sentinelName, accountId); + + return { + InventoryChanges: { + SentinelBin: { count: 1, platinum: 0, Slots: -1 }, + Sentinels: [sentinel] + } + }; +}; + const handleSuitCustomizationsPurchase = async (customizationName: string, accountId: string) => { const customization = await addCustomization(customizationName, accountId); diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts new file mode 100644 index 00000000..43006cc9 --- /dev/null +++ b/src/services/saveLoadoutService.ts @@ -0,0 +1,160 @@ +import { + IItemEntry, + ILoadoutClient, + ILoadoutEntry, + IOperatorConfigEntry, + ISaveLoadoutRequestNoUpgradeVer +} from "@/src/types/saveLoadoutTypes"; +import { LoadoutModel } from "@/src/models/inventoryModels/loadoutModel"; +import { getInventory } from "@/src/services/inventoryService"; +import { IOid } from "@/src/types/commonTypes"; + +export const isEmptyObject = (obj: unknown): boolean => { + return Boolean(obj && Object.keys(obj).length === 0 && obj.constructor === Object); +}; + +//TODO: setup default items on account creation or like originally in giveStartingItems.php + +//TODO: change update functions to only add and not save perhaps, functions that add and return inventory perhaps + +/* loadouts has loadoutconfigs +operatorloadouts has itemconfig, but no multiple config ids +itemconfig has multiple config ids +*/ +export const handleInventoryItemConfigChange = async ( + equipmentChanges: ISaveLoadoutRequestNoUpgradeVer, + accountId: string +) => { + const inventory = await getInventory(accountId); + + for (const [_equipmentName, _equipment] of Object.entries(equipmentChanges)) { + const equipment = _equipment as ISaveLoadoutRequestNoUpgradeVer[keyof ISaveLoadoutRequestNoUpgradeVer]; + const equipmentName = _equipmentName as keyof ISaveLoadoutRequestNoUpgradeVer; + + if (isEmptyObject(equipment)) { + continue; + } + // non-empty is a change in loadout(or suit...) + switch (equipmentName) { + case "OperatorLoadOuts": + case "AdultOperatorLoadOuts": { + const operatorConfig = equipment as IOperatorConfigEntry; + const operatorLoadout = inventory[equipmentName]; + //console.log("loadout received", equipmentName, operatorConfig); + // all non-empty entries are one loadout slot + for (const [loadoutId, loadoutConfig] of Object.entries(operatorConfig)) { + // console.log("loadoutId", loadoutId, "loadoutconfig", loadoutConfig); + const loadout = operatorLoadout.find(loadout => loadout._id?.toString() === loadoutId); + + // if no config with this id exists, create a new one + if (!loadout) { + const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig; + operatorLoadout.push({ + _id: ItemId.$oid, + ...loadoutConfigItemIdRemoved + }); + continue; + } + loadout.set(loadoutConfig); + } + break; + } + case "LoadOuts": { + //console.log("loadout received"); + const loadout = await LoadoutModel.findOne({ loadoutOwnerId: accountId }); + if (!loadout) { + throw new Error("loadout not found"); + } + + for (const [_loadoutSlot, _loadout] of Object.entries(equipment)) { + const loadoutSlot = _loadoutSlot as keyof ILoadoutClient; + const newLoadout = _loadout as ILoadoutEntry; + + // empty loadout slot like: "NORMAL": {} + if (isEmptyObject(newLoadout)) { + continue; + } + + // all non-empty entries are one loadout slot + for (const [loadoutId, loadoutConfig] of Object.entries(newLoadout)) { + const oldLoadoutConfig = loadout[loadoutSlot].find( + loadout => loadout._id.toString() === loadoutId + ); + + // if no config with this id exists, create a new one + if (!oldLoadoutConfig) { + const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig; + loadout[loadoutSlot].push({ + _id: ItemId.$oid, + ...loadoutConfigItemIdRemoved + }); + continue; + } + + const loadoutIndex = loadout[loadoutSlot].indexOf(oldLoadoutConfig); + if (loadoutIndex === undefined || loadoutIndex === -1) { + throw new Error("loadout index not found"); + } + + //perhaps .overwrite() is better + loadout[loadoutSlot][loadoutIndex].set(loadoutConfig); + } + } + await loadout.save(); + break; + } + case "LongGuns": + case "Pistols": + case "Suits": + case "Melee": + case "Scoops": + case "DataKnives": + case "DrifterMelee": + case "Sentinels": + case "Horses": { + //console.log("general Item config saved", equipmentName, equipment); + + const itemEntries = equipment as IItemEntry; + for (const [itemId, itemConfigEntries] of Object.entries(itemEntries)) { + const inventoryItem = inventory[equipmentName].find(item => item._id?.toString() === itemId); + + if (!inventoryItem) { + throw new Error(`inventory item ${equipmentName} not found with id ${itemId}`); + } + + //config ids are 0,1,2 can there be a 3? + for (const [configId, config] of Object.entries(itemConfigEntries)) { + inventoryItem.Configs[parseInt(configId)] = config; + } + } + break; + } + case "CurrentLoadOutIds": { + const loadoutIds = equipment as IOid[]; // TODO: Check for more than just an array of oids, I think i remember one instance + inventory.CurrentLoadOutIds = loadoutIds; + break; + } + case "EquippedGear": { + inventory.EquippedGear = equipment as string[]; + break; + } + default: { + console.log("category not implemented", equipmentName, equipment); + } + //case "OperatorAmps": + // case "SentinelWeapons": + // case "KubrowPets": + // case "SpaceSuits": + // case "SpaceGuns": + // case "SpaceMelee": + // case "SpecialItems": + // case "MoaPets": + // case "Hoverboards": + // case "MechSuits": + // case "CrewShipHarnesses": + // case "CrewShips": + //case "KahlLoadOuts": not sure yet how to handle kahl: it is not sent in inventory + } + } + await inventory.save(); +}; diff --git a/src/services/shipService.ts b/src/services/shipService.ts index bce95805..5b35cce3 100644 --- a/src/services/shipService.ts +++ b/src/services/shipService.ts @@ -2,9 +2,13 @@ import { Ship } from "@/src/models/shipModel"; import new_ship from "@/static/fixed_responses/ship.json"; import { Types } from "mongoose"; -const createShip = async (accountOwnerId: Types.ObjectId) => { +const createShip = async (accountOwnerId: Types.ObjectId, loadoutId: Types.ObjectId) => { try { - const ship = new Ship({ ...new_ship, ShipOwnerId: accountOwnerId }); + const ship = new Ship({ + ...new_ship, + ShipOwnerId: accountOwnerId, + LoadOutInventory: { LoadOutPresets: loadoutId } + }); await ship.save(); } catch (error) { if (error instanceof Error) { diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 7e1f6825..f075587c 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -1,19 +1,15 @@ import { IOid } from "@/src/types/commonTypes"; -import { IAbilityOverride, IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { Document, Types } from "mongoose"; +import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { Types } from "mongoose"; +import { IItemConfig } from "./commonInventoryTypes"; -// export interface ISuitDocument extends ISuitResponse, Document {} -export interface ISuitDocument extends Document, ISuitResponse { - _id: Types.ObjectId; -} - -export interface ISuitResponse extends ISuitDatabase { +export interface ISuitClient extends ISuitDatabase { ItemId: IOid; } export interface ISuitDatabase { ItemType: string; - Configs: SuitConfig[]; + Configs: IItemConfig[]; UpgradeVer?: number; XP?: number; InfestationDate?: Date; @@ -24,26 +20,5 @@ export interface ISuitDatabase { FocusLens?: string; UnlockLevel?: number; _id: Types.ObjectId; - ItemId?: IOid; -} - -export interface SuitConfig { - Skins?: string[]; - pricol?: IColor; - attcol?: IColor; - eyecol?: IColor; - sigcol?: IColor; - Upgrades?: string[]; - Songs?: Song[]; - Name?: string; - AbilityOverride?: IAbilityOverride; - PvpUpgrades?: string[]; - ugly?: boolean; -} - -export interface Song { - m?: string; - b?: string; - p?: string; - s: string; + ItemId?: IOid; // only in response } diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index 0664407f..b86cb719 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -1,3 +1,6 @@ +import { IOid } from "@/src/types/commonTypes"; +import { Types } from "mongoose"; + export interface IPolarity { Slot: number; Value: FocusSchool; @@ -41,3 +44,44 @@ export interface Isigcol { t1: number; en: number; } + +interface IItemConfigBase { + Skins: string[]; + pricol?: IColor; + attcol?: IColor; + sigcol?: IColor; + eyecol?: IColor; + facial?: IColor; + syancol?: IColor; + cloth?: IColor; + Upgrades?: string[]; + Name?: string; + ugly?: boolean; +} + +//TODO: Proper names for the different config types, this should be something like +//IItemConfigPlayable +export interface IItemConfig extends IItemConfigBase { + Songs?: ISong[]; + AbilityOverride?: IAbilityOverride; + PvpUpgrades?: string[]; + ugly?: boolean; +} + +export interface ISong { + m?: string; + b?: string; + p?: string; + s: string; +} + +//TODO: Consider renaming it to loadout instead of config +export interface IOperatorConfigDatabase extends IItemConfigBase { + _id: Types.ObjectId; + AbilityOverride?: IAbilityOverride; // not present in adultOperator + OperatorAmp?: IOid; // not present in adultOperator +} + +export interface IOperatorConfigClient extends Omit { + ItemId: IOid; +} diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 760b8659..2674599a 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,19 +1,53 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; import { IOid, IMongoDate } from "../commonTypes"; -import { IAbilityOverride, IColor, FocusSchool, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { + IAbilityOverride, + IColor, + FocusSchool, + IPolarity, + IItemConfig, + IOperatorConfigClient +} from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; +//Document extends will be deleted soon. TODO: delete and migrate uses to ... export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} -export interface IInventoryDatabase extends Omit { +export interface IInventoryDatabase extends Omit { accountOwnerId: Types.ObjectId; - TrainingDate: Date; + TrainingDate: Date; // TrainingDate changed from IMongoDate to Date + LoadOutPresets: Types.ObjectId; // LoadOutPresets changed from ILoadOutPresets to Types.ObjectId for population + Mailbox: Types.ObjectId; // Mailbox changed from IMailbox to Types.ObjectId } export interface IInventoryResponseDocument extends IInventoryResponse, Document {} +export interface IGenericItem { + ItemType: string; + XP?: number; + Configs: IItemConfig[]; + UpgradeVer: number; + ItemId: IOid; + Features?: number; //space suit has this +} + +export interface IDuviriInfo { + Seed: number; + NumCompletions: number; +} + +export interface IMailbox { + LastInboxId: IOid; +} + export interface IInventoryResponse { + Horses: IGenericItem[]; + DrifterMelee: IGenericItem[]; + DrifterGuns: IGenericItem[]; + DuviriInfo: IDuviriInfo; + Mailbox: IMailbox; + KahlLoadOuts: IGenericItem[]; SubscribedToEmails: number; Created: IMongoDate; RewardSeed: number; @@ -21,14 +55,18 @@ export interface IInventoryResponse { PremiumCredits: number; PremiumCreditsFree: number; FusionPoints: number; - SuitBin: ICrewShipSalvageBinClass; - WeaponBin: ICrewShipSalvageBinClass; - SentinelBin: ICrewShipSalvageBinClass; - SpaceSuitBin: ICrewShipSalvageBinClass; - SpaceWeaponBin: ICrewShipSalvageBinClass; - PvpBonusLoadoutBin: ICrewMemberBinClass; - PveBonusLoadoutBin: ICrewShipSalvageBinClass; - RandomModBin: ICrewShipSalvageBinClass; + SuitBin: ISlots; + WeaponBin: ISlots; + SentinelBin: ISlots; + SpaceSuitBin: ISlots; + SpaceWeaponBin: ISlots; + PvpBonusLoadoutBin: ISlots; + PveBonusLoadoutBin: ISlots; + RandomModBin: ISlots; + MechBin: ISlots; + CrewMemberBin: ISlots; + OperatorAmpBin: ISlots; + CrewShipSalvageBin: ISlots; TradesRemaining: number; DailyAffiliation: number; DailyAffiliationPvp: number; @@ -48,7 +86,7 @@ export interface IInventoryResponse { Ships: IShip[]; QuestKeys: IQuestKey[]; FlavourItems: IFlavourItem[]; - Scoops: IScoop[]; + Scoops: IGenericItem[]; TrainingRetriesLeft: number; LoadOutPresets: ILoadOutPresets; CurrentLoadOutIds: Array; @@ -82,14 +120,14 @@ export interface IInventoryResponse { Affiliations: IAffiliation[]; QualifyingInvasions: any[]; FactionScores: number[]; - SpaceSuits: ISpace[]; - SpaceMelee: ISpace[]; + SpaceSuits: IGenericItem[]; + SpaceMelee: IGenericItem[]; SpaceGuns: ISpaceGun[]; ArchwingEnabled: boolean; PendingSpectreLoadouts: any[]; SpectreLoadouts: ISpectreLoadout[]; - SentinelWeapons: ISentinelWeapon[]; - Sentinels: ISentinel[]; + SentinelWeapons: IWeaponDatabase[]; + Sentinels: IWeaponDatabase[]; EmailItems: IEmailItem[]; CompletedSyndicates: string[]; FocusXP: IFocusXP; @@ -102,7 +140,6 @@ export interface IInventoryResponse { ActiveAvatarImageType: string; KubrowPets: IKubrowPet[]; ShipDecorations: IConsumable[]; - OperatorAmpBin: ICrewShipSalvageBinClass; DailyAffiliationCetus: number; DailyAffiliationQuills: number; DiscoveredMarkers: IDiscoveredMarker[]; @@ -123,7 +160,7 @@ export interface IInventoryResponse { BountyScore: number; ChallengeInstanceStates: IChallengeInstanceState[]; LoginMilestoneRewards: string[]; - OperatorLoadOuts: IOperatorLoadOut[]; + OperatorLoadOuts: IOperatorConfigClient[]; DailyAffiliationVentkids: number; DailyAffiliationVox: number; RecentVendorPurchases: Array; @@ -134,13 +171,12 @@ export interface IInventoryResponse { MoaPets: IMoaPet[]; EquippedInstrument: string; InvasionChainProgress: IInvasionChainProgress[]; - DataKnives: IDataKnife[]; + DataKnives: IGenericItem[]; NemesisHistory: INemesisHistory[]; LastNemesisAllySpawnTime: IMongoDate; Settings: ISettings; PersonalTechProjects: IPersonalTechProject[]; CrewShips: ICrewShip[]; - CrewShipSalvageBin: ICrewShipSalvageBinClass; PlayerSkills: IPlayerSkills; CrewShipAmmo: IConsumable[]; CrewShipSalvagedWeaponSkins: ICrewShipSalvagedWeaponSkin[]; @@ -150,17 +186,15 @@ export interface IInventoryResponse { TradeBannedUntil: IMongoDate; PlayedParkourTutorial: boolean; SubscribedToEmailsPersonalized: number; - MechBin: ICrewMemberBinClass; DailyAffiliationEntrati: number; DailyAffiliationNecraloid: number; - MechSuits: IMechSuit[]; + MechSuits: ISuitDatabase[]; InfestedFoundry: IInfestedFoundry; BlessingCooldown: IMongoDate; - CrewMemberBin: ICrewMemberBinClass; CrewShipHarnesses: ICrewShipHarness[]; CrewShipRawSalvage: IConsumable[]; CrewMembers: ICrewMember[]; - AdultOperatorLoadOuts: IAdultOperatorLoadOut[]; + AdultOperatorLoadOuts: IOperatorConfigClient[]; LotusCustomization: ILotusCustomization; UseAdultOperatorLoadout: boolean; DailyAffiliationZariman: number; @@ -260,10 +294,6 @@ export interface IConsumable { ItemType: string; } -export interface ICrewMemberBinClass { - Slots: number; -} - export interface ICrewMember { ItemType: string; NemesisFingerprint: number; @@ -310,8 +340,8 @@ export interface ICrewShipHarnessConfig { Upgrades?: string[]; } -export interface ICrewShipSalvageBinClass { - Extra: number; +export interface ISlots { + Extra?: number; Slots: number; } @@ -403,22 +433,6 @@ export interface IPortGuns { PRIMARY_A: IL; } -export interface IDataKnife { - ItemType: string; - XP: number; - Configs: IDataKnifeConfig[]; - UpgradeVer: number; - ItemId: IOid; -} - -export interface IDataKnifeConfig { - Upgrades?: string[]; - pricol?: IColor; - Skins: string[]; - attcol?: IColor; - sigcol?: IColor; -} - export interface IDiscoveredMarker { tag: string; discoveryState: number[]; @@ -623,6 +637,7 @@ export interface ILibraryPersonalProgress { Completed: boolean; } +//this needs to be checked against ILoadoutDatabase export interface ILoadOutPresets { NORMAL: INormal[]; NORMAL_PVP: IArchwing[]; @@ -717,17 +732,6 @@ export interface ILotusCustomization { Persona: string; } -export interface IMechSuit { - ItemType: string; - Configs: IDataKnifeConfig[]; - Features: number; - UpgradeVer: number; - XP: number; - Polarity: IPolarity[]; - Polarized: number; - ItemId: IOid; -} - export interface IMission { Completes: number; Tier?: number; @@ -870,7 +874,7 @@ export enum GivingSlotOrderInfo { LotusUpgradesModsPistolDualStatElectEventPistolMod = "/Lotus/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod" } -export interface PeriodicMissionCompletion { +export interface IPeriodicMissionCompletion { date: IMongoDate; tag: string; count?: number; @@ -916,6 +920,7 @@ export interface IQuestKey { Progress?: IProgress[]; unlock?: boolean; Completed?: boolean; + CustomData?: string; ItemType: string; CompletionDate?: IMongoDate; } @@ -933,17 +938,6 @@ export interface IRawUpgrade { LastAdded?: IOid; } -export interface IScoop { - ItemType: string; - Configs: IScoopConfig[]; - UpgradeVer: number; - ItemId: IOid; -} - -export interface IScoopConfig { - pricol?: IColor; -} - export interface ISeasonChallengeHistory { challenge: string; id: string; @@ -953,40 +947,6 @@ export interface ISentientSpawnChanceBoosters { numOceanMissionsCompleted: number; } -export interface ISentinelWeapon { - ItemType: string; - Configs: ISentinelWeaponConfig[]; - UpgradeVer?: number; - XP?: number; - ItemId: IOid; - Features?: number; - Polarity?: IPolarity[]; - Polarized?: number; -} - -export interface ISentinelWeaponConfig { - Skins?: FluffySkin[]; - Upgrades?: string[]; -} - -export enum FluffySkin { - Empty = "", - LotusUpgradesSkinsHolsterCustomizationsGlaiveInPlace = "/Lotus/Upgrades/Skins/HolsterCustomizations/GlaiveInPlace", - LotusUpgradesSkinsHolsterCustomizationsPistolHipsR = "/Lotus/Upgrades/Skins/HolsterCustomizations/PistolHipsR", - LotusUpgradesSkinsHolsterCustomizationsRifleUpperBack = "/Lotus/Upgrades/Skins/HolsterCustomizations/RifleUpperBack" -} - -export interface ISentinel { - ItemType: string; - Configs: IKubrowPetConfig[]; - UpgradeVer: number; - XP: number; - Features?: number; - Polarity?: IPolarity[]; - Polarized?: number; - ItemId: IOid; -} - export interface ISettings { FriendInvRestriction: string; GiftMode: string; @@ -1022,15 +982,6 @@ export interface ISpaceGunConfig { Upgrades?: string[]; } -export interface ISpace { - ItemType: string; - Configs: IKubrowPetConfig[]; - XP: number; - UpgradeVer: number; - ItemId: IOid; - Features?: number; -} - export interface ISpecialItem { ItemType: string; Configs: ISpecialItemConfig[]; diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 365c869b..7cc390f3 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -1,14 +1,15 @@ import { IOid } from "@/src/types/commonTypes"; -import { IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IItemConfig } from "./commonInventoryTypes"; +import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Types } from "mongoose"; -export interface IWeaponResponse extends IWeaponDatabase { +export interface IWeaponClient extends Omit { ItemId: IOid; } export interface IWeaponDatabase { ItemType: string; - Configs: WeaponConfig[]; + Configs: IItemConfig[]; UpgradeVer?: number; XP?: number; Features?: number; @@ -21,18 +22,7 @@ export interface IWeaponDatabase { ItemName?: string; ModularParts?: string[]; UnlockLevel?: number; - _id?: Types.ObjectId; - ItemId?: IOid; -} - -export interface WeaponConfig { - Skins?: string[]; - pricol?: IColor; - Upgrades?: string[]; - attcol?: IColor; - eyecol?: IOperatorLoadOutSigcol; - Name?: string; - PvpUpgrades?: string[]; + _id: Types.ObjectId; } export interface IOperatorLoadOutSigcol { diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index 6df9719d..ce1e6270 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -1,6 +1,6 @@ import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; -import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; +import { IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; export interface IPurchaseRequest { PurchaseParams: IPurchaseParams; @@ -23,9 +23,9 @@ export interface IPurchaseResponse { SuitBin?: IBinChanges; WeaponBin?: IBinChanges; Suits?: ISuitDatabase[]; - LongGuns?: IWeaponResponse[]; - Pistols?: IWeaponResponse[]; - Melee?: IWeaponResponse[]; + LongGuns?: IWeaponClient[]; + Pistols?: IWeaponClient[]; + Melee?: IWeaponClient[]; PremiumCredits?: number; RegularCredits?: number; FlavourItems?: IFlavourItem[]; @@ -40,5 +40,6 @@ export type IBinChanges = { export enum SlotType { SUIT = "SuitBin", - WEAPON = "WeaponBin" + WEAPON = "WeaponBin", + MECHSUIT = "MechBin" } diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 050955d9..ecbd35e0 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -7,8 +7,8 @@ import { IMission, IRawUpgrade } from "./inventoryTypes/inventoryTypes"; -import { IWeaponDatabase } from "./inventoryTypes/weaponTypes"; -import { ISuitDatabase } from "./inventoryTypes/SuitTypes"; +import { IWeaponClient } from "./inventoryTypes/weaponTypes"; +import { ISuitClient } from "./inventoryTypes/SuitTypes"; interface IArtifactsRequest { Upgrade: ICrewShipSalvagedWeaponSkin; @@ -20,10 +20,10 @@ interface IArtifactsRequest { interface IMissionInventoryUpdateRequest { rewardsMultiplier?: number; ActiveBoosters?: IBooster[]; - LongGuns?: IWeaponDatabase[]; - Pistols?: IWeaponDatabase[]; - Suits?: ISuitDatabase[]; - Melee?: IWeaponDatabase[]; + LongGuns?: IWeaponClient[]; + Pistols?: IWeaponClient[]; + Suits?: ISuitClient[]; + Melee?: IWeaponClient[]; RawUpgrades?: IRawUpgrade[]; MiscItems?: IMiscItem[]; Consumables?: IConsumable[]; diff --git a/src/types/saveLoadoutTypes.ts b/src/types/saveLoadoutTypes.ts new file mode 100644 index 00000000..61020029 --- /dev/null +++ b/src/types/saveLoadoutTypes.ts @@ -0,0 +1,92 @@ +import { IOid } from "@/src/types/commonTypes"; +import { IItemConfig, IOperatorConfigClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { Types } from "mongoose"; + +export interface ISaveLoadoutRequest { + LoadOuts: ILoadoutClient; + LongGuns: IItemEntry; + OperatorAmps: IItemEntry; + Pistols: IItemEntry; + Suits: IItemEntry; + Melee: IItemEntry; + Sentinels: IItemEntry; + SentinelWeapons: IItemEntry; + KubrowPets: IItemEntry; + SpaceSuits: IItemEntry; + SpaceGuns: IItemEntry; + SpaceMelee: IItemEntry; + Scoops: IItemEntry; + SpecialItems: IItemEntry; + MoaPets: IItemEntry; + Hoverboards: IItemEntry; + DataKnives: IItemEntry; + MechSuits: IItemEntry; + CrewShipHarnesses: IItemEntry; + Horses: IItemEntry; + DrifterMelee: IItemEntry; + UpgradeVer: number; + OperatorLoadOuts: IOperatorConfigEntry; + AdultOperatorLoadOuts: IOperatorConfigEntry; + KahlLoadOuts: IItemEntry; + CrewShips: IItemEntry; + CurrentLoadOutIds: IOid[]; + ValidNewLoadoutId: string; + EquippedGear: string[]; +} + +export interface ISaveLoadoutRequestNoUpgradeVer extends Omit {} + +export interface IOperatorConfigEntry { + [configId: string]: IOperatorConfigClient; +} + +export interface IItemEntry { + [itemId: string]: IConfigEntry; +} + +export interface IConfigEntry { + [configId: string]: IItemConfig; +} + +export interface ILoadoutClient extends Omit {} + +export interface ILoadoutDatabase { + NORMAL: ILoadoutEntry; + SENTINEL: ILoadoutEntry; + ARCHWING: ILoadoutEntry; + NORMAL_PVP: ILoadoutEntry; + LUNARO: ILoadoutEntry; + OPERATOR: ILoadoutEntry; + KDRIVE: ILoadoutEntry; + DATAKNIFE: ILoadoutEntry; + MECH: ILoadoutEntry; + OPERATOR_ADULT: ILoadoutEntry; + DRIFTER: ILoadoutEntry; + _id: Types.ObjectId; + loadoutOwnerId: Types.ObjectId; +} + +export interface ILoadoutEntry { + [key: string]: ILoadoutConfigClient; +} +export interface ILoadoutConfigDatabase extends Omit { + _id: Types.ObjectId; +} + +// for request and response from and to client +export interface ILoadoutConfigClient { + ItemId: IOid; + n: string; + PresetIcon: string; + Favorite: boolean; + s: IEquipmentSelection; + p: IEquipmentSelection; + l: IEquipmentSelection; + m: IEquipmentSelection; +} + +export interface IEquipmentSelection { + ItemId: IOid; + mod: number; + cus: number; +} diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index aac1ef27..522837e5 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -3,26 +3,28 @@ import { IOid } from "@/src/types/commonTypes"; export interface IShip { ShipOwnerId: Types.ObjectId; - Ship: IShipClassResponse; - Apartment: IApartmentClass; + Ship: IShipResponse; + Apartment: IApartment; + LoadOutInventory: { LoadOutPresets: Types.ObjectId }; } -export interface IShipClassResponse extends IShipClassDatabase { +export interface IShipResponse extends IShipDatabase { ShipId: IOid; } -export interface IShipClassDatabase { - Rooms: IRoomsClass[]; +export interface IShipDatabase { + Rooms: IRooms[]; Features: string[]; ContentUrlSignature: string; } -export interface IRoomsClass { +// TODO: add Apartment.Gardening +export interface IRooms { Name: string; MaxCapacity: number; } -export interface IApartmentClass { - Rooms: IRoomsClass[]; +export interface IApartment { + Rooms: IRooms[]; FavouriteLoadouts: string[]; } diff --git a/static/fixed_responses/postTutorialInventory.json b/static/fixed_responses/postTutorialInventory.json index 31d9a61f..9bcab784 100644 --- a/static/fixed_responses/postTutorialInventory.json +++ b/static/fixed_responses/postTutorialInventory.json @@ -5,7 +5,7 @@ "RewardSeed": -5604904486637265640, "CrewMemberBin": { "Slots": 3 }, "CrewShipSalvageBin": { "Slots": 8 }, - "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bd268c547fe5b2909e715" } }], + "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], "FusionPoints": 0, "MechBin": { "Slots": 4 }, "OperatorAmpBin": { "Slots": 8 }, @@ -84,7 +84,24 @@ "CrewShipWeaponSkins": [], "DrifterGuns": [], "Drones": [], - "Horses": [], + "Horses": [ + { + "ItemType": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorsePowerSuit", + "Configs": [ + { + "Skins": ["", "", "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault"] + }, + { + "Skins": ["", "", "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault"] + }, + { + "Skins": ["", "", "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault"] + } + ], + "UpgradeVer": 101, + "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } + } + ], "Hoverboards": [], "KubrowPets": [], "KubrowPetEggs": [], diff --git a/static/fixed_responses/testQuestKeys.json b/static/fixed_responses/testQuestKeys.json index df32ed3d..1a822001 100644 --- a/static/fixed_responses/testQuestKeys.json +++ b/static/fixed_responses/testQuestKeys.json @@ -7,5 +7,35 @@ }, { "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/SacrificeQuest/SacrificeQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/NewWarIntroQuest/NewWarIntroKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/ApostasyQuest/ApostasyKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/ZarimanQuest/ZarimanQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" + }, + { + "ItemType": "/Lotus/Types/Keys/ArchwingQuest/ArchwingQuestKeyChain" } ] -- 2.47.2 From 1ab411e3cc960b89dacb205a6405282100d268f1 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:24:52 +0100 Subject: [PATCH 051/522] Purchase Loadouts and Inventory Slots (#105) --- config.json | 3 +- src/controllers/api/getCreditsController.ts | 28 ++++- .../api/inventorySlotsController.ts | 36 +++++++ src/controllers/api/purchaseController.ts | 4 +- src/controllers/api/saveLoadout.ts | 14 ++- src/helpers/general.ts | 4 + src/helpers/purchaseHelpers.ts | 16 ++- src/routes/api.ts | 2 + src/services/inventoryService.ts | 68 +++++++----- src/services/purchaseService.ts | 102 ++++++++++++++---- src/services/saveLoadoutService.ts | 30 ++++-- src/types/inventoryTypes/SuitTypes.ts | 2 +- src/types/inventoryTypes/inventoryTypes.ts | 2 +- src/types/purchaseTypes.ts | 44 +++++++- src/types/requestTypes.ts | 10 +- 15 files changed, 285 insertions(+), 80 deletions(-) create mode 100644 src/controllers/api/inventorySlotsController.ts diff --git a/config.json b/config.json index 158a6821..64ad5d3c 100644 --- a/config.json +++ b/config.json @@ -7,5 +7,6 @@ "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, - "testQuestKey": true + "testQuestKey": true, + "infinitePlatinum": false } diff --git a/src/controllers/api/getCreditsController.ts b/src/controllers/api/getCreditsController.ts index 9981fa47..a2a2ea6e 100644 --- a/src/controllers/api/getCreditsController.ts +++ b/src/controllers/api/getCreditsController.ts @@ -1,7 +1,27 @@ import { RequestHandler } from "express"; +import config from "@/config.json"; +import { getInventory } from "@/src/services/inventoryService"; +import { parseString } from "@/src/helpers/general"; -const getCreditsController: RequestHandler = (_req, res) => { - res.json({ RegularCredits: 42069, TradesRemaining: 1, PremiumCreditsFree: 42069, PremiumCredits: 42069 }); +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const getCreditsController: RequestHandler = async (req, res) => { + if (config.infinitePlatinum) { + res.json({ + RegularCredits: 999999999, + TradesRemaining: 999999999, + PremiumCreditsFree: 999999999, + PremiumCredits: 999999999 + }); + return; + } + + const accountId = parseString(req.query.accountId); + + const inventory = await getInventory(accountId); + res.json({ + RegularCredits: inventory.RegularCredits, + TradesRemaining: inventory.TradesRemaining, + PremiumCreditsFree: inventory.PremiumCreditsFree, + PremiumCredits: inventory.PremiumCredits + }); }; - -export { getCreditsController }; diff --git a/src/controllers/api/inventorySlotsController.ts b/src/controllers/api/inventorySlotsController.ts new file mode 100644 index 00000000..9da2751f --- /dev/null +++ b/src/controllers/api/inventorySlotsController.ts @@ -0,0 +1,36 @@ +import { parseString } from "@/src/helpers/general"; +import { getInventory, updateCurrency } from "@/src/services/inventoryService"; +import { RequestHandler } from "express"; +import { updateSlots } from "@/src/services/inventoryService"; +import { SlotNameToInventoryName } from "@/src/types/purchaseTypes"; + +/* + loadout slots are additionally purchased slots only + 1 slot per mastery rank is automatically given above mr10, without database needing to save the mastery slots + extra = everything above the base + 2 slots (e.g. for warframes) + new slot = extra + 1 and slots +1 + using slot = slots -1, except for when purchased with platinum, then slots are included in price + + e.g. number of frames: + 19 slots, 71 extra + = 71 - 19 + 2 = 54 + 19 actually available slots in ingame inventory = 17 extra + 2 Base (base amount depends on slot) (+ 1 for every mastery rank above 10) + number of frames = extra - slots + 2 +*/ + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const inventorySlotsController: RequestHandler = async (req, res) => { + const accountId = parseString(req.query.accountId); + //const body = JSON.parse(req.body as string) as IInventorySlotsRequest; + + //console.log(body); + + //TODO: check which slot was purchased because pvpBonus is also possible + + const currencyChanges = await updateCurrency(-20, true, accountId); + await updateSlots(accountId, SlotNameToInventoryName.LOADOUT, 1, 1); + + //console.log({ InventoryChanges: currencyChanges }, " added loadout changes:"); + + res.json({ InventoryChanges: currencyChanges }); +}; diff --git a/src/controllers/api/purchaseController.ts b/src/controllers/api/purchaseController.ts index c73581ca..c0c34e47 100644 --- a/src/controllers/api/purchaseController.ts +++ b/src/controllers/api/purchaseController.ts @@ -3,11 +3,9 @@ import { toPurchaseRequest } from "@/src/helpers/purchaseHelpers"; import { handlePurchase } from "@/src/services/purchaseService"; import { Request, Response } from "express"; -const purchaseController = async (req: Request, res: Response) => { +export const purchaseController = async (req: Request, res: Response) => { const purchaseRequest = toPurchaseRequest(JSON.parse(String(req.body))); const accountId = parseString(req.query.accountId); const response = await handlePurchase(purchaseRequest, accountId); res.json(response); }; - -export { purchaseController }; diff --git a/src/controllers/api/saveLoadout.ts b/src/controllers/api/saveLoadout.ts index 31431798..85a88a5d 100644 --- a/src/controllers/api/saveLoadout.ts +++ b/src/controllers/api/saveLoadout.ts @@ -5,7 +5,7 @@ import { handleInventoryItemConfigChange } from "@/src/services/saveLoadoutServi import { parseString } from "@/src/helpers/general"; // eslint-disable-next-line @typescript-eslint/no-misused-promises -const saveLoadoutController: RequestHandler = async (req, res) => { +export const saveLoadoutController: RequestHandler = async (req, res) => { //validate here const accountId = parseString(req.query.accountId); @@ -15,13 +15,19 @@ const saveLoadoutController: RequestHandler = async (req, res) => { // eslint-disable-next-line @typescript-eslint/no-unused-vars const { UpgradeVer, ...equipmentChanges } = body; - await handleInventoryItemConfigChange(equipmentChanges, accountId); + const newLoadoutId = await handleInventoryItemConfigChange(equipmentChanges, accountId); + + //send back new loadout id, if new loadout was added + if (newLoadoutId) { + res.send(newLoadoutId); + } res.status(200).end(); } catch (error: unknown) { if (error instanceof Error) { + console.log("error in saveLoadoutController", error.message); res.status(400).json({ error: error.message }); + } else { + res.status(400).json({ error: "unknown error" }); } } }; - -export { saveLoadoutController }; diff --git a/src/helpers/general.ts b/src/helpers/general.ts index cc13e4ec..afc52fd8 100644 --- a/src/helpers/general.ts +++ b/src/helpers/general.ts @@ -1,3 +1,7 @@ +export const isEmptyObject = (obj: unknown): boolean => { + return Boolean(obj && Object.keys(obj).length === 0 && obj.constructor === Object); +}; + const isString = (text: unknown): text is string => { return typeof text === "string" || text instanceof String; }; diff --git a/src/helpers/purchaseHelpers.ts b/src/helpers/purchaseHelpers.ts index 2dee9668..47016abe 100644 --- a/src/helpers/purchaseHelpers.ts +++ b/src/helpers/purchaseHelpers.ts @@ -1,9 +1,10 @@ import { parseBoolean, parseNumber, parseString } from "@/src/helpers/general"; import { WeaponTypeInternal } from "@/src/services/inventoryService"; -import { IPurchaseRequest } from "@/src/types/purchaseTypes"; +import { slotPurchaseNameToSlotName } from "@/src/services/purchaseService"; +import { IPurchaseRequest, SlotPurchaseName } from "@/src/types/purchaseTypes"; import { weapons } from "@/static/data/items"; -const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => { +export const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => { if (!purchaseRequest || typeof purchaseRequest !== "object") { throw new Error("incorrect or missing purchase request data"); } @@ -40,7 +41,7 @@ const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => { throw new Error("invalid purchaseRequest"); }; -const getWeaponType = (weaponName: string) => { +export const getWeaponType = (weaponName: string) => { const weaponInfo = weapons.find(i => i.uniqueName === weaponName); if (!weaponInfo) { @@ -56,4 +57,11 @@ const getWeaponType = (weaponName: string) => { return weaponType; }; -export { toPurchaseRequest, getWeaponType }; +export const isSlotPurchaseName = (slotPurchaseName: string): slotPurchaseName is SlotPurchaseName => { + return slotPurchaseName in slotPurchaseNameToSlotName; +}; + +export const parseSlotPurchaseName = (slotPurchaseName: string) => { + if (!isSlotPurchaseName(slotPurchaseName)) throw new Error(`invalid slot name ${slotPurchaseName}`); + return slotPurchaseName; +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index 66f55d0f..7ffd3bc5 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -34,6 +34,7 @@ import { artifactsController } from "../controllers/api/artifactsController"; import express from "express"; import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; import { focusController } from "@/src/controllers/api/focusController"; +import { inventorySlotsController } from "@/src/controllers/api/inventorySlotsController"; const apiRouter = express.Router(); @@ -61,6 +62,7 @@ apiRouter.get("/logout.php", logoutController); apiRouter.get("/setBootLocation.php", setBootLocationController); // post +apiRouter.post("/inventorySlots.php", inventorySlotsController); apiRouter.post("/focus.php", focusController); apiRouter.post("/artifacts.php", artifactsController); apiRouter.post("/findSessions.php", findSessionsController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 93d62603..e50da9d3 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2,9 +2,9 @@ import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import config from "@/config.json"; import { Types } from "mongoose"; -import { ISuitDatabase, ISuitClient } from "@/src/types/inventoryTypes/SuitTypes"; -import { SlotType } from "@/src/types/purchaseTypes"; -import { IWeaponDatabase, IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; +import { ISuitClient } from "@/src/types/inventoryTypes/SuitTypes"; +import { SlotNames } from "@/src/types/purchaseTypes"; +import { IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; import { IChallengeProgress, IConsumable, @@ -41,8 +41,6 @@ export const createInventory = async (accountOwnerId: Types.ObjectId, loadOutPre } }; -//const updateInventory = async (accountOwnerId: Types.ObjectId, inventoryChanges: any) => {}; - export const getInventory = async (accountOwnerId: string) => { const inventory = await Inventory.findOne({ accountOwnerId: accountOwnerId }); @@ -53,7 +51,7 @@ export const getInventory = async (accountOwnerId: string) => { return inventory; }; -//TODO: genericMethod for all the add methods, they share a lot of logic +//TODO: maybe genericMethod for all the add methods, they share a lot of logic export const addSentinel = async (sentinelName: string, accountId: string) => { const inventory = await getInventory(accountId); const sentinelIndex = inventory.Sentinels.push({ ItemType: sentinelName, Configs: [], XP: 0 }); @@ -75,32 +73,54 @@ export const addMechSuit = async (mechsuitName: string, accountId: string) => { return changedInventory.MechSuits[suitIndex - 1].toJSON(); }; -export const updateSlots = async (slotType: SlotType, accountId: string, slots: number) => { +export const updateSlots = async (accountId: string, slotName: SlotNames, slotAmount: number, extraAmount: number) => { const inventory = await getInventory(accountId); - switch (slotType) { - case SlotType.SUIT: - inventory.SuitBin.Slots += slots; - break; - case SlotType.WEAPON: - inventory.WeaponBin.Slots += slots; - break; - case SlotType.MECHSUIT: - inventory.MechBin.Slots += slots; - break; - default: - throw new Error("invalid slot type"); + inventory[slotName].Slots += slotAmount; + if (inventory[slotName].Extra === undefined) { + inventory[slotName].Extra = extraAmount; + } else { + inventory[slotName].Extra += extraAmount; } + await inventory.save(); }; export const updateCurrency = async (price: number, usePremium: boolean, accountId: string) => { - const currencyName = usePremium ? "PremiumCredits" : "RegularCredits"; - const inventory = await getInventory(accountId); - inventory[currencyName] = inventory[currencyName] - price; + + if (usePremium) { + if (inventory.PremiumCreditsFree > 0) { + inventory.PremiumCreditsFree += price; + } + inventory.PremiumCredits += price; + } else { + inventory.RegularCredits += price; + } + + const modifiedPaths = inventory.modifiedPaths(); + + type currencyKeys = "RegularCredits" | "PremiumCredits" | "PremiumCreditsFree"; + + const currencyChanges = {} as Record; + modifiedPaths.forEach(path => { + currencyChanges[path as currencyKeys] = -price; + }); + + console.log(currencyChanges, "changes"); + + //let changes = {} as keyof currencyKeys; + + // const obj2 = modifiedPaths.reduce( + // (obj, key) => { + // obj[key as keyof currencyKeys] = price; + // return obj; + // }, + // {} as Record + // ); + await inventory.save(); - return { [currencyName]: -price }; + return currencyChanges; }; // TODO: AffiliationMods support (Nightwave). @@ -157,7 +177,7 @@ export const addCustomization = async (customizatonName: string, accountId: stri const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; const changedInventory = await inventory.save(); - return changedInventory.FlavourItems[flavourItemIndex].toJSON(); //mongoose bug forces as FlavourItem + return changedInventory.FlavourItems[flavourItemIndex].toJSON(); }; const addGearExpByCategory = ( diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index b6d80c21..caf3375b 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,4 +1,4 @@ -import { getWeaponType } from "@/src/helpers/purchaseHelpers"; +import { getWeaponType, parseSlotPurchaseName } from "@/src/helpers/purchaseHelpers"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addBooster, @@ -7,9 +7,10 @@ import { addPowerSuit, addSentinel, addWeapon, + updateCurrency, updateSlots } from "@/src/services/inventoryService"; -import { IPurchaseRequest, SlotType } from "@/src/types/purchaseTypes"; +import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -32,57 +33,109 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI const internalName = purchaseRequest.PurchaseParams.StoreItem.replace("/StoreItems", ""); console.log("Store category", storeCategory); - let purchaseResponse; + let inventoryChanges; switch (storeCategory) { case "Powersuits": - purchaseResponse = await handlePowersuitPurchase(internalName, accountId); + inventoryChanges = await handlePowersuitPurchase(internalName, accountId); break; case "Weapons": - purchaseResponse = await handleWeaponsPurchase(internalName, accountId); + inventoryChanges = await handleWeaponsPurchase(internalName, accountId); break; case "Types": - purchaseResponse = await handleTypesPurchase(internalName, accountId); + inventoryChanges = await handleTypesPurchase(internalName, accountId); break; case "Boosters": - purchaseResponse = await handleBoostersPurchase(internalName, accountId); + inventoryChanges = await handleBoostersPurchase(internalName, accountId); break; default: throw new Error(`unknown store category: ${storeCategory} not implemented or new`); } - // const currencyResponse = await updateCurrency( - // purchaseRequest.PurchaseParams.ExpectedPrice, - // purchaseRequest.PurchaseParams.UsePremium, - // accountId - // ); + if (!inventoryChanges) throw new Error("purchase response was undefined"); - // (purchaseResponse as IPurchaseResponse).InventoryChanges = { - // ...purchaseResponse.InventoryChanges, - // ...currencyResponse - // }; + const currencyChanges = await updateCurrency( + purchaseRequest.PurchaseParams.ExpectedPrice, + purchaseRequest.PurchaseParams.UsePremium, + accountId + ); - return purchaseResponse; + inventoryChanges.InventoryChanges = { + ...currencyChanges, + ...inventoryChanges.InventoryChanges + }; + + return inventoryChanges; +}; + +export const slotPurchaseNameToSlotName: SlotPurchase = { + SuitSlotItem: { name: "SuitBin", slotsPerPurchase: 1 }, + TwoSentinelSlotItem: { name: "SentinelBin", slotsPerPurchase: 2 }, + TwoWeaponSlotItem: { name: "WeaponBin", slotsPerPurchase: 2 }, + SpaceSuitSlotItem: { name: "SpaceSuitBin", slotsPerPurchase: 1 }, + TwoSpaceWeaponSlotItem: { name: "SpaceWeaponBin", slotsPerPurchase: 2 }, + MechSlotItem: { name: "MechBin", slotsPerPurchase: 1 }, + TwoOperatorWeaponSlotItem: { name: "OperatorAmpBin", slotsPerPurchase: 2 }, + RandomModSlotItem: { name: "RandomModBin", slotsPerPurchase: 3 }, + TwoCrewShipSalvageSlotItem: { name: "CrewShipSalvageBin", slotsPerPurchase: 2 }, + CrewMemberSlotItem: { name: "CrewMemberBin", slotsPerPurchase: 1 } +}; + +// // extra = everything above the base +2 slots (depending on slot type) +// // new slot above base = extra + 1 and slots +1 +// // new frame = slots -1 +// // number of frames = extra - slots + 2 +const handleSlotPurchase = async (slotPurchaseNameFull: string, accountId: string) => { + console.log("slot name", slotPurchaseNameFull); + const slotPurchaseName = parseSlotPurchaseName( + slotPurchaseNameFull.substring(slotPurchaseNameFull.lastIndexOf("/") + 1) + ); + console.log(slotPurchaseName, "slot purchase name"); + + await updateSlots( + accountId, + slotPurchaseNameToSlotName[slotPurchaseName].name, + slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase, + slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase + ); + + console.log( + slotPurchaseNameToSlotName[slotPurchaseName].name, + slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase, + "slots added" + ); + + return { + InventoryChanges: { + [slotPurchaseNameToSlotName[slotPurchaseName].name]: { + count: 0, + platinum: 1, + Slots: slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase, + Extra: slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase + } + } + }; }; const handleWeaponsPurchase = async (weaponName: string, accountId: string) => { const weaponType = getWeaponType(weaponName); const addedWeapon = await addWeapon(weaponType, weaponName, accountId); - await updateSlots(SlotType.WEAPON, accountId, -1); + await updateSlots(accountId, SlotNameToInventoryName.WEAPON, 0, 1); return { InventoryChanges: { WeaponBin: { count: 1, platinum: 0, Slots: -1 }, [weaponType]: [addedWeapon] } - }; + } as IPurchaseResponse; }; const handlePowersuitPurchase = async (powersuitName: string, accountId: string) => { if (powersuitName.includes("EntratiMech")) { const mechSuit = await addMechSuit(powersuitName, accountId); - await updateSlots(SlotType.MECHSUIT, accountId, -1); + + await updateSlots(accountId, SlotNameToInventoryName.MECHSUIT, 0, 1); console.log("mech suit", mechSuit); return { @@ -94,11 +147,11 @@ const handlePowersuitPurchase = async (powersuitName: string, accountId: string) }, MechSuits: [mechSuit] } - }; + } as IPurchaseResponse; } const suit = await addPowerSuit(powersuitName, accountId); - await updateSlots(SlotType.SUIT, accountId, -1); + await updateSlots(accountId, SlotNameToInventoryName.SUIT, 0, 1); return { InventoryChanges: { @@ -112,6 +165,7 @@ const handlePowersuitPurchase = async (powersuitName: string, accountId: string) }; }; +//TODO: change to getInventory, apply changes then save at the end const handleTypesPurchase = async (typesName: string, accountId: string) => { const typeCategory = getStoreItemTypesCategory(typesName); console.log("type category", typeCategory); @@ -122,6 +176,8 @@ const handleTypesPurchase = async (typesName: string, accountId: string) => { // break; case "Sentinels": return await handleSentinelPurchase(typesName, accountId); + case "SlotItems": + return await handleSlotPurchase(typesName, accountId); default: throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); } @@ -130,6 +186,8 @@ const handleTypesPurchase = async (typesName: string, accountId: string) => { const handleSentinelPurchase = async (sentinelName: string, accountId: string) => { const sentinel = await addSentinel(sentinelName, accountId); + await updateSlots(accountId, SlotNameToInventoryName.SENTINEL, 0, 1); + return { InventoryChanges: { SentinelBin: { count: 1, platinum: 0, Slots: -1 }, diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index 43006cc9..59733931 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -8,10 +8,8 @@ import { import { LoadoutModel } from "@/src/models/inventoryModels/loadoutModel"; import { getInventory } from "@/src/services/inventoryService"; import { IOid } from "@/src/types/commonTypes"; - -export const isEmptyObject = (obj: unknown): boolean => { - return Boolean(obj && Object.keys(obj).length === 0 && obj.constructor === Object); -}; +import { Types } from "mongoose"; +import { isEmptyObject } from "@/src/helpers/general"; //TODO: setup default items on account creation or like originally in giveStartingItems.php @@ -24,7 +22,7 @@ itemconfig has multiple config ids export const handleInventoryItemConfigChange = async ( equipmentChanges: ISaveLoadoutRequestNoUpgradeVer, accountId: string -) => { +): Promise => { const inventory = await getInventory(accountId); for (const [_equipmentName, _equipment] of Object.entries(equipmentChanges)) { @@ -40,7 +38,7 @@ export const handleInventoryItemConfigChange = async ( case "AdultOperatorLoadOuts": { const operatorConfig = equipment as IOperatorConfigEntry; const operatorLoadout = inventory[equipmentName]; - //console.log("loadout received", equipmentName, operatorConfig); + console.log("operator loadout received", equipmentName, operatorConfig); // all non-empty entries are one loadout slot for (const [loadoutId, loadoutConfig] of Object.entries(operatorConfig)) { // console.log("loadoutId", loadoutId, "loadoutconfig", loadoutConfig); @@ -60,12 +58,13 @@ export const handleInventoryItemConfigChange = async ( break; } case "LoadOuts": { - //console.log("loadout received"); + console.log("loadout received"); const loadout = await LoadoutModel.findOne({ loadoutOwnerId: accountId }); if (!loadout) { throw new Error("loadout not found"); } + let newLoadoutId: Types.ObjectId | undefined; for (const [_loadoutSlot, _loadout] of Object.entries(equipment)) { const loadoutSlot = _loadoutSlot as keyof ILoadoutClient; const newLoadout = _loadout as ILoadoutEntry; @@ -84,6 +83,16 @@ export const handleInventoryItemConfigChange = async ( // if no config with this id exists, create a new one if (!oldLoadoutConfig) { const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig; + + //save the new object id and assign it for every ffff return at the end + if (ItemId.$oid === "ffffffffffffffffffffffff") { + if (!newLoadoutId) { + newLoadoutId = new Types.ObjectId(); + } + loadout[loadoutSlot].push({ _id: newLoadoutId, ...loadoutConfigItemIdRemoved }); + continue; + } + loadout[loadoutSlot].push({ _id: ItemId.$oid, ...loadoutConfigItemIdRemoved @@ -101,6 +110,11 @@ export const handleInventoryItemConfigChange = async ( } } await loadout.save(); + + //only return an id if a new loadout was added + if (newLoadoutId) { + return newLoadoutId.toString(); + } break; } case "LongGuns": @@ -112,7 +126,7 @@ export const handleInventoryItemConfigChange = async ( case "DrifterMelee": case "Sentinels": case "Horses": { - //console.log("general Item config saved", equipmentName, equipment); + console.log("general Item config saved", equipmentName, equipment); const itemEntries = equipment as IItemEntry; for (const [itemId, itemConfigEntries] of Object.entries(itemEntries)) { diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index f075587c..22b543a8 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -3,7 +3,7 @@ import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Types } from "mongoose"; import { IItemConfig } from "./commonInventoryTypes"; -export interface ISuitClient extends ISuitDatabase { +export interface ISuitClient extends Omit { ItemId: IOid; } diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 2674599a..114a4211 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -341,7 +341,7 @@ export interface ICrewShipHarnessConfig { } export interface ISlots { - Extra?: number; + Extra: number; // can be undefined, but not if used via mongoose Slots: number; } diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index ce1e6270..bbbf8c89 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -1,4 +1,5 @@ -import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { slotPurchaseNameToSlotName } from "@/src/services/purchaseService"; +import { ISuitClient } from "@/src/types/inventoryTypes/SuitTypes"; import { IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; @@ -22,11 +23,14 @@ export interface IPurchaseResponse { InventoryChanges: { SuitBin?: IBinChanges; WeaponBin?: IBinChanges; - Suits?: ISuitDatabase[]; + MechBin?: IBinChanges; + MechSuits?: ISuitClient[]; + Suits?: ISuitClient[]; LongGuns?: IWeaponClient[]; Pistols?: IWeaponClient[]; Melee?: IWeaponClient[]; PremiumCredits?: number; + PremiumCreditsFree?: number; RegularCredits?: number; FlavourItems?: IFlavourItem[]; }; @@ -36,10 +40,42 @@ export type IBinChanges = { count: number; platinum: number; Slots: number; + Extra?: number; }; -export enum SlotType { +export enum SlotNameToInventoryName { SUIT = "SuitBin", WEAPON = "WeaponBin", - MECHSUIT = "MechBin" + MECHSUIT = "MechBin", + LOADOUT = "PveBonusLoadoutBin", + SENTINEL = "SentinelBin" } + +export type SlotPurchaseName = + | "SuitSlotItem" + | "TwoSentinelSlotItem" + | "TwoWeaponSlotItem" + | "SpaceSuitSlotItem" + | "TwoSpaceWeaponSlotItem" + | "MechSlotItem" + | "TwoOperatorWeaponSlotItem" + | "RandomModSlotItem" + | "TwoCrewShipSalvageSlotItem" + | "CrewMemberSlotItem"; + +export type SlotNames = + | "SuitBin" + | "WeaponBin" + | "MechBin" + | "PveBonusLoadoutBin" + | "SentinelBin" + | "SpaceSuitBin" + | "SpaceWeaponBin" + | "OperatorAmpBin" + | "RandomModBin" + | "CrewShipSalvageBin" + | "CrewMemberBin"; + +export type SlotPurchase = { + [P in SlotPurchaseName]: { name: SlotNames; slotsPerPurchase: number }; +}; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index ecbd35e0..e4f94980 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -10,14 +10,14 @@ import { import { IWeaponClient } from "./inventoryTypes/weaponTypes"; import { ISuitClient } from "./inventoryTypes/SuitTypes"; -interface IArtifactsRequest { +export interface IArtifactsRequest { Upgrade: ICrewShipSalvagedWeaponSkin; LevelDiff: number; Cost: number; FusionPointCost: number; } -interface IMissionInventoryUpdateRequest { +export interface IMissionInventoryUpdateRequest { rewardsMultiplier?: number; ActiveBoosters?: IBooster[]; LongGuns?: IWeaponClient[]; @@ -35,7 +35,7 @@ interface IMissionInventoryUpdateRequest { Missions?: IMission; } -interface IMissionInventoryUpdateRequestRewardInfo { +export interface IMissionInventoryUpdateRequestRewardInfo { node: string; rewardTier?: number; nightmareMode?: boolean; @@ -50,4 +50,6 @@ interface IMissionInventoryUpdateRequestRewardInfo { rewardSeed?: number; } -export { IArtifactsRequest, IMissionInventoryUpdateRequest }; +export interface IInventorySlotsRequest { + Bin: "PveBonusLoadoutBin"; +} -- 2.47.2 From 561a60acbc65464cae6f60cbc4f466546527e91f Mon Sep 17 00:00:00 2001 From: 0kolya0 <36767025+0kolya0@users.noreply.github.com> Date: Thu, 28 Dec 2023 18:55:23 +0200 Subject: [PATCH 052/522] add missing missions in testMissions (#106) --- static/fixed_responses/testMissions.json | 2796 +++++++++++----------- 1 file changed, 1413 insertions(+), 1383 deletions(-) diff --git a/static/fixed_responses/testMissions.json b/static/fixed_responses/testMissions.json index dd2cf9fc..8cfc4129 100644 --- a/static/fixed_responses/testMissions.json +++ b/static/fixed_responses/testMissions.json @@ -1,1471 +1,1501 @@ [ { - "Completes": 58, + "Completes": 1, "Tier": 1, - "Tag": "SolNode27" + "Tag": "SolNode203" }, { - "Completes": 137, + "Completes": 1, "Tier": 1, - "Tag": "SolNode89" + "Tag": "SolNode4" }, { - "Completes": 86, + "Completes": 1, "Tier": 1, - "Tag": "SolNode63" + "Tag": "SolNode181" }, { - "Completes": 15, + "Completes": 1, "Tier": 1, - "Tag": "SolNode85" + "Tag": "SolNode88" }, { - "Completes": 25, + "Completes": 1, "Tier": 1, - "Tag": "SolNode15" + "Tag": "ClanNode18" }, { - "Completes": 16, + "Completes": 1, + "Tier": 1, + "Tag": "SolNode106" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode97" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode14" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode73" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode405" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode31" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode2" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode308" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode94" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode45" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode113" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode33" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode204" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode41" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode17" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode410" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode16" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode205" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode408" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode185" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode132" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode223" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode153" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode907" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode60" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode25" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode119" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode82" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode229" + }, + { + "Completes": 1, "Tier": 1, "Tag": "SolNode79" }, { - "Completes": 30, + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode5" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode12" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode74" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode121" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode70" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode149" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode43" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode75" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode196" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode7" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode147" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode310" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode2" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode304" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode83" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode56" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode23" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode746" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode98" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode6" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode67" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode709" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode146" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode128" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode27" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode100" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode12" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode19" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode903" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode59" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode39" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode230" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode713" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode144" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode710" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode104" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode23" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode85" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode1" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode905" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode87" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode748" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode65" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode301" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode11" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode51" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode231" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode42" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode58" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode401" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode25" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode706" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode76" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode195" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode707" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode20" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode125" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode61" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode162" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode8" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode164" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode177" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode93" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode21" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode188" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode10" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode141" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode101" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode140" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode220" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode741" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode118" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode130" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode49" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode6" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode139" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode109" + }, + { + "Completes": 1, "Tier": 1, "Tag": "SolNode26" }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode138" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode103" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode712" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode1" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode63" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode411" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode89" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode191" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode36" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode10" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode193" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode126" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode38" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode412" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode12" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode902" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode209" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode409" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode210" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode742" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode175" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode189" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode190" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode21" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode84" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode62" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode166" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode50" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode137" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode102" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode224" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode167" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode30" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode69" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode129" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode217" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode24" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode233" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode211" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode72" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode407" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode15" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode747" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode212" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode131" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode81" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode906" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode226" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode306" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode708" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode13" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode228" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode300" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode17" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode127" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode114" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode48" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode18" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode1" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode0" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode9" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode743" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode184" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode908" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode15" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode57" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode171" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode24" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode22" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode187" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode15" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode14" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode4" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode2" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode173" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode214" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode46" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode122" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SettlementNode3" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode305" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode404" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode225" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode34" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode904" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode745" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode402" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode744" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode20" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode28" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode711" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode400" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode22" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode32" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode11" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode238" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode236" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode235" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode237" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode740" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode10" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode53" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode135" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode3" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode96" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode105" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode403" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode108" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode78" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode232" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode450" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode302" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode406" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode14" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode64" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode66" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode16" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode123" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode215" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode216" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode68" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode107" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode183" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode9" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode99" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode172" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode199" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode20" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode309" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode19" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode307" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "ClanNode11" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode501" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode502" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode503" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode504" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode505" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode509" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode510" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode511" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode512" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode513" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode514" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode515" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode516" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode518" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode519" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode521" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode522" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode523" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode524" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode525" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode526" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode527" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode528" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode529" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode530" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode531" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode533" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode534" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode535" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode536" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode538" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode539" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode540" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode541" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode542" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode543" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode550" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode551" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode552" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode553" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode554" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode555" + }, + { + "Completes": 1, + "Tier": 1, + "Tag": "CrewBattleNode556" + }, { "Completes": 2, "Tier": 1, "Tag": "EarthToVenusJunction" }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode128" - }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode123" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode66" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode22" - }, - { - "Completes": 31, - "Tier": 1, - "Tag": "SolNode109" - }, - { - "Completes": 25, - "Tier": 1, - "Tag": "SolNode61" - }, - { - "Completes": 180, - "Tag": "CetusHub4" - }, - { - "Completes": 563, - "Tier": 1, - "Tag": "SolNode228" - }, - { - "Completes": 34, - "Tier": 1, - "Tag": "SolNode39" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SolNode75" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode59" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "ClanNode2" - }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode101" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode2" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode104" - }, { "Completes": 2, "Tier": 1, "Tag": "VenusToMercuryJunction" }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode226" - }, - { - "Completes": 9, - "Tier": 1, - "Tag": "SolNode119" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode12" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode225" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode103" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode28" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode130" - }, { "Completes": 2, "Tier": 1, "Tag": "EarthToMarsJunction" }, - { - "Completes": 78, - "Tier": 1, - "Tag": "SolNode58" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode11" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode65" - }, - { - "Completes": 29, - "Tier": 1, - "Tag": "SolNode16" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode46" - }, - { - "Completes": 25, - "Tier": 1, - "Tag": "SolNode113" - }, - { - "Completes": 69, - "Tier": 1, - "Tag": "SolNode45" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode106" - }, { "Completes": 2, "Tier": 1, "Tag": "MarsToPhobosJunction" }, - { - "Completes": 79, - "Tier": 1, - "Tag": "SettlementNode1" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SettlementNode14" - }, - { - "Completes": 77, - "Tier": 1, - "Tag": "SettlementNode2" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SettlementNode15" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SettlementNode12" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SettlementNode20" - }, - { - "Completes": 35, - "Tier": 1, - "Tag": "SettlementNode3" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode1" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode23" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode0" - }, - { - "Completes": 70, - "Tier": 1, - "Tag": "SolNode107" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode223" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode108" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode224" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode94" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode41" - }, - { - "Completes": 37, - "Tier": 1, - "Tag": "SolNode30" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode36" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode68" - }, - { - "Completes": 24, - "Tier": 1, - "Tag": "SolNode99" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "ClanNode8" - }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode706" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode708" - }, - { - "Completes": 151, - "Tier": 1, - "Tag": "SolNode229" - }, { "Completes": 2, "Tier": 1, "Tag": "MarsToCeresJunction" }, - { - "Completes": 38, - "Tier": 1, - "Tag": "SolNode14" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode9" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SettlementNode11" - }, - { - "Completes": 107, - "Tier": 1, - "Tag": "SolNode131" - }, - { - "Completes": 22, - "Tier": 1, - "Tag": "SolNode132" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode149" - }, - { - "Completes": 54, - "Tier": 1, - "Tag": "SolNode139" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode138" - }, - { - "Completes": 19, - "Tier": 1, - "Tag": "SolNode141" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode144" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode146" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode710" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode709" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode707" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode712" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode711" - }, - { - "Completes": 24, - "Tier": 1, - "Tag": "SolNode137" - }, - { - "Completes": 9, - "Tier": 1, - "Tag": "SolNode140" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode902" - }, { "Completes": 2, "Tier": 1, "Tag": "CeresToJupiterJunction" }, - { - "Completes": 53, - "Tier": 1, - "Tag": "SolNode126" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode100" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode74" - }, - { - "Completes": 71, - "Tier": 1, - "Tag": "SolNode121" - }, - { - "Completes": 48, - "Tier": 1, - "Tag": "SolNode400" - }, - { - "Completes": 27, - "Tier": 1, - "Tag": "SolNode73" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode903" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode904" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SettlementNode10" - }, - { - "Completes": 43, - "Tier": 1, - "Tag": "SolNode135" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "ClanNode22" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "ClanNode23" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode147" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "ClanNode10" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "ClanNode11" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode88" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode97" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode4" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode125" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode10" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode905" - }, - { - "Completes": 84, - "Tier": 1, - "Tag": "SolNode401" - }, - { - "Completes": 10, - "Tag": "SolNode402" - }, { "Completes": 2, "Tier": 1, "Tag": "JupiterToEuropaJunction" }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode209" - }, - { - "Completes": 20, - "Tier": 1, - "Tag": "SolNode24" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode3" - }, - { - "Completes": 34, - "Tier": 1, - "Tag": "SolNode217" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode215" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode220" - }, - { - "Completes": 26, - "Tier": 1, - "Tag": "SolNode203" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode6" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode216" - }, - { - "Completes": 79, - "Tag": "DeimosHub" - }, - { - "Completes": 14, - "Tag": "SolNode211" - }, - { - "Completes": 17, - "Tag": "SolNode214" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode212" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode210" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode204" - }, - { - "Completes": 136, - "Tier": 1, - "Tag": "SolNode205" - }, - { - "Completes": 1, - "Tag": "ClanNode7" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode403" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode404" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode405" - }, - { - "Completes": 44, - "Tier": 1, - "Tag": "SolNode53" - }, { "Completes": 2, "Tier": 1, "Tag": "JupiterToSaturnJunction" }, - { - "Completes": 142, - "Tier": 1, - "Tag": "SolNode70" - }, - { - "Completes": 19, - "Tier": 1, - "Tag": "SolNode50" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode906" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode12" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode19" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode96" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode42" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode32" - }, { "Completes": 2, "Tier": 1, "Tag": "SaturnToUranusJunction" }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode82" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode93" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode67" - }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode20" - }, - { - "Completes": 26, - "Tier": 1, - "Tag": "SolNode31" - }, - { - "Completes": 8, - "Tag": "SolNode18" - }, - { - "Completes": 2, - "Tag": "ClanNode13" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode34" - }, - { - "Completes": 236, - "Tag": "SolNode801" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode25" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "ClanNode5" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode33" - }, - { - "Completes": 2, - "Tag": "SolNode98" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode9" - }, - { - "Completes": 17, - "Tag": "SolNode105" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode114" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode17" - }, - { - "Completes": 1, - "Tag": "SolNode60" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "SolNode83" - }, - { - "Completes": 17, - "Tier": 1, - "Tag": "SolNode69" - }, - { - "Completes": 6, - "Tag": "ClanNode16" - }, { "Completes": 1, "Tag": "UranusToNeptuneJunction" }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode1" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode64" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode62" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode300" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode301" - }, - { - "Completes": 36, - "Tier": 1, - "Tag": "SolNode122" - }, - { - "Completes": 5, - "Tag": "SolNode907" - }, - { - "Completes": 49, - "Tier": 1, - "Tag": "SolNode78" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode49" - }, - { - "Completes": 52, - "Tier": 1, - "Tag": "SolNode406" - }, - { - "Completes": 65, - "Tier": 1, - "Tag": "SolNode407" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode408" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode87" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode307" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode302" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode306" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode304" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode305" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode908" - }, - { - "Completes": 6, - "Tier": 1, - "Tag": "SolNode84" - }, - { - "Completes": 32, - "Tier": 1, - "Tag": "SolNode127" - }, { "Completes": 2, "Tier": 1, "Tag": "NeptuneToPlutoJunction" }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode6" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SolNode57" - }, - { - "Completes": 4, - "Tag": "SolNode17" - }, - { - "Completes": 1, - "Tag": "ClanNode21" - }, - { - "Completes": 109, - "Tier": 1, - "Tag": "SolNode76" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode38" - }, - { - "Completes": 24, - "Tier": 1, - "Tag": "SolNode102" - }, - { - "Completes": 55, - "Tier": 1, - "Tag": "SolNode4" - }, - { - "Completes": 26, - "Tier": 1, - "Tag": "SolNode48" - }, { "Completes": 2, "Tier": 1, "Tag": "PlutoToSednaJunction" }, - { - "Completes": 31, - "Tier": 1, - "Tag": "SolNode189" - }, { "Completes": 2, "Tier": 1, "Tag": "PlutoToErisJunction" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode175" - }, - { - "Completes": 49, - "Tier": 1, - "Tag": "SolNode746" - }, - { - "Completes": 19, - "Tier": 1, - "Tag": "SolNode162" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode173" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode166" - }, - { - "Completes": 102, - "Tier": 1, - "Tag": "SolNode181" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode153" - }, - { - "Completes": 7, - "Tag": "SolNode164" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode172" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode19" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode72" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode21" - }, - { - "Completes": 17, - "Tag": "SolNode187" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode196" - }, - { - "Completes": 18, - "Tier": 1, - "Tag": "SolNode184" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode118" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode188" - }, - { - "Completes": 5, - "Tag": "SolNode410" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode411" - }, - { - "Completes": 5, - "Tier": 1, - "Tag": "SolNode195" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode14" - }, - { - "Completes": 467, - "Tier": 1, - "Tag": "SolNode129" - }, - { - "Completes": 299, - "Tag": "SolarisUnitedHub1" - }, - { - "Completes": 21, - "Tier": 1, - "Tag": "SolNode171" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode412" - }, - { - "Completes": 14, - "Tier": 1, - "Tag": "SolNode409" - }, - { - "Completes": 39, - "Tier": 1, - "Tag": "SolNode177" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode713" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode18" - }, - { - "Completes": 9, - "Tier": 1, - "Tag": "SolNode167" - }, - { - "Completes": 4, - "Tag": "SolNode185" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "ClanNode15" - }, - { - "Completes": 33, - "Tier": 1, - "Tag": "SolNode308" - }, - { - "Completes": 5, - "Tag": "ClanNode20" - }, - { - "Completes": 4, - "Tier": 1, - "Tag": "ClanNode24" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "ClanNode25" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode56" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode43" - }, - { - "Completes": 16, - "Tier": 1, - "Tag": "SolNode81" - }, - { - "Completes": 23, - "Tier": 1, - "Tag": "SolNode51" - }, - { - "Completes": 8, - "Tier": 1, - "Tag": "SolNode191" - }, - { - "Completes": 2, - "Tag": "SolNode190" - }, - { - "Completes": 7, - "Tag": "SolNode199" - }, - { - "Completes": 1, - "Tag": "SolNode183" - }, - { - "Completes": 12, - "Tag": "SolNode193" - }, - { - "Completes": 22, - "Tag": "SolNode763" - }, - { - "Completes": 12, - "Tier": 1, - "Tag": "SolNode741" - }, - { - "Completes": 7, - "Tier": 1, - "Tag": "SolNode742" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode747" - }, - { - "Completes": 13, - "Tier": 1, - "Tag": "SolNode744" - }, - { - "Completes": 3, - "Tier": 1, - "Tag": "SolNode743" - }, - { - "Completes": 15, - "Tier": 1, - "Tag": "SolNode748" - }, - { - "Completes": 11, - "Tier": 1, - "Tag": "SolNode745" - }, - { - "Completes": 10, - "Tier": 1, - "Tag": "SolNode740" - }, - { - "Completes": 167, - "Tag": "SolNode802" - }, - { - "Completes": 22, - "Tag": "SolNode233" - }, - { - "Completes": 113, - "Tier": 1, - "Tag": "SolNode231" - }, - { - "Completes": 45, - "Tag": "SolNode230" - }, - { - "Completes": 21, - "Tag": "SolNode232" - }, - { - "Completes": 11, - "Tag": "SolNode235" - }, - { - "Completes": 2, - "Tier": 1, - "Tag": "SolNode309" - }, - { - "Completes": 27, - "Tier": 1, - "Tag": "SolNode310" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode527" - }, - { - "Completes": 7, - "Tag": "CrewBattleNode553" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode556" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode502" - }, - { - "Completes": 4, - "Tag": "CrewBattleNode509" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode518" - }, - { - "Completes": 47, - "Tag": "CrewBattleNode558" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode519" - }, - { - "Completes": 41, - "Tag": "CrewBattleNode522" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode503" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode511" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode512" - }, - { - "Completes": 23, - "Tag": "EventNode5" - }, - { - "Completes": 35, - "Tag": "CrewBattleNode557" - }, - { - "Completes": 5, - "Tag": "SolNode705" - }, - { - "Completes": 8, - "Tag": "EventNode2" - }, - { - "Completes": 4, - "Tag": "CrewBattleNode528" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode531" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode529" - }, - { - "Completes": 15, - "Tag": "CrewBattleNode536" - }, - { - "Completes": 13, - "Tag": "CrewBattleNode550" - }, - { - "Completes": 7, - "Tag": "CrewBattleNode516" - }, - { - "Completes": 8, - "Tag": "CrewBattleNode533" - }, - { - "Completes": 14, - "Tag": "CrewBattleNode554" - }, - { - "Completes": 24, - "Tag": "CrewBattleNode555" - }, - { - "Completes": 18, - "Tag": "CrewBattleNode538" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode534" - }, - { - "Completes": 2, - "Tag": "CrewBattleNode501" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode535" - }, - { - "Completes": 4, - "Tag": "CrewBattleNode530" - }, - { - "Completes": 5, - "Tag": "SolNode764" - }, - { - "Completes": 3, - "Tag": "SolNode701" - }, - { - "Completes": 8, - "Tag": "CrewBattleNode521" - }, - { - "Completes": 3, - "Tag": "CrewBattleNode514" - }, - { - "Completes": 2, - "Tag": "CrewBattleNode515" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode539" - }, - { - "Completes": 6, - "Tag": "CrewBattleNode504" - }, - { - "Completes": 57, - "Tier": 1, - "Tag": "SolNode450" - }, - { - "Completes": 3, - "Tag": "SolNode761" - }, - { - "Completes": 2, - "Tag": "EventNode34" - }, - { - "Completes": 1, - "Tag": "EventNode30" - }, - { - "Completes": 1, - "Tag": "CrewBattleNode540" - }, - { - "Completes": 2, - "Tag": "EventNode25" - }, - { - "Completes": 3, - "Tag": "EventNode24" - }, - { - "Completes": 2, - "Tag": "EventNode26" - }, - { - "Completes": 1, - "Tag": "EventNode37" - }, - { - "Completes": 1, - "Tag": "/Lotus/Language/Locations/Jupiter" - }, - { - "Completes": 92, - "Tier": 1, - "Tag": "SolNode238" - }, - { - "Completes": 30, - "Tier": 1, - "Tag": "SolNode237" - }, - { - "Completes": 13, - "Tag": "SolNode236" - }, - { - "Completes": 1, - "Tag": "EventNode27" } -] +] \ No newline at end of file -- 2.47.2 From 25914bfa18b1d46eeabc138407f17d7f5c7ecf0b Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 6 Jan 2024 16:26:58 +0100 Subject: [PATCH 053/522] Improved logging using winston (#111) --- .env.example | 16 +- .gitignore | 3 + config.json | 2 +- package-lock.json | 278 +++++++++++++++++- package.json | 6 +- src/app.ts | 9 +- src/controllers/api/findSessionsController.ts | 11 +- src/controllers/api/getCreditsController.ts | 2 +- src/controllers/api/hostSessionController.ts | 11 +- src/controllers/api/joinSessionController.ts | 4 +- src/controllers/api/loginController.ts | 3 +- .../api/rerollRandomModController.ts | 3 +- src/controllers/api/saveLoadout.ts | 3 +- .../api/setBootLocationController.ts | 4 +- .../api/updateSessionController.ts | 1 + src/helpers/general.ts | 7 + src/index.ts | 5 +- src/managers/sessionManager.ts | 6 +- src/middleware/middleware.ts | 19 +- src/middleware/morgenMiddleware.ts | 6 + src/services/inventoryService.ts | 3 +- .../missionInventoryUpdateService .ts | 7 +- src/services/mongoService.ts | 7 +- src/services/purchaseService.ts | 40 ++- src/services/saveLoadoutService.ts | 11 +- src/types/purchaseTypes.ts | 1 - src/utils/logger.ts | 113 +++++++ 27 files changed, 504 insertions(+), 77 deletions(-) create mode 100644 src/middleware/morgenMiddleware.ts create mode 100644 src/utils/logger.ts diff --git a/.env.example b/.env.example index ed317f00..fc389f4d 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,15 @@ -MONGODB_URL='mongodb://127.0.0.1:27017/wf_emulator' -PORT=3001 +MONGODB_URL='mongodb://127.0.0.1:27017/openWF' -DATABASE_PORT=27017 +#DOCKER ONLY +DATABASE_PORT=27017 DATABASE_USERNAME=root -DATABASE_PASSWORD=root +DATABASE_PASSWORD=database +#DOCKER ONLY END + +# save logs to file +LOG_FILES=true +#possible log levels: { fatal: 0, error: 1, warn: 2, info: 3, http: 4, debug: 5, trace: 6 } +LOG_LEVEL=trace + + diff --git a/.gitignore b/.gitignore index 23c4cd81..7e1fa4a4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,6 @@ yarn.lock # JetBrains/webstorm configs .idea/ + +# logs +/logs \ No newline at end of file diff --git a/config.json b/config.json index 64ad5d3c..205c173f 100644 --- a/config.json +++ b/config.json @@ -8,5 +8,5 @@ "skipTutorial": true, "testMission": true, "testQuestKey": true, - "infinitePlatinum": false + "infiniteResources": true } diff --git a/package-lock.json b/package-lock.json index de59907c..873314d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,9 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^8.0.2", - "warframe-items": "1.1260.121" + "warframe-items": "1.1260.121", + "winston": "^3.11.0", + "winston-daily-rotate-file": "^4.7.1" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -42,6 +44,14 @@ "node": ">=0.10.0" } }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -54,6 +64,16 @@ "node": ">=12" } }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -426,6 +446,11 @@ "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", "dev": true }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -1043,6 +1068,11 @@ "node": ">=8" } }, + "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/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1248,6 +1278,15 @@ "node": ">= 6" } }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1263,8 +1302,38 @@ "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 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/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==" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -1456,6 +1525,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -1842,6 +1916,11 @@ "reusify": "^1.0.4" } }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -1854,6 +1933,14 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-stream-rotator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", + "dependencies": { + "moment": "^2.29.1" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1918,6 +2005,11 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2152,6 +2244,11 @@ "node": ">= 0.10" } }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2337,6 +2434,11 @@ "node": ">=12.0.0" } }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2371,6 +2473,27 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/logform": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/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/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2507,6 +2630,14 @@ "node": ">=10" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, "node_modules/mongodb": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz", @@ -2698,6 +2829,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "engines": { + "node": ">= 6" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -2727,6 +2866,14 @@ "wrappy": "1" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/onetime": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", @@ -3000,6 +3147,19 @@ "node": ">= 0.8" } }, + "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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -3225,6 +3385,14 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -3336,6 +3504,14 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3372,6 +3548,14 @@ "memory-pager": "^1.0.2" } }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -3380,6 +3564,14 @@ "node": ">= 0.6" } }, + "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==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3465,6 +3657,11 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3523,6 +3720,14 @@ "tree-kill": "cli.js" } }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/ts-api-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", @@ -3740,6 +3945,11 @@ "punycode": "^2.1.0" } }, + "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==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -3802,6 +4012,68 @@ "node": ">= 8" } }, + "node_modules/winston": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-daily-rotate-file": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", + "integrity": "sha512-7LGPiYGBPNyGHLn9z33i96zx/bd71pjBn9tqQzO3I4Tayv94WPmBNwKC7CO1wPHdP9uvu+Md/1nr6VSH9h0iaA==", + "dependencies": { + "file-stream-rotator": "^0.6.1", + "object-hash": "^2.0.1", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "winston": "^3" + } + }, + "node_modules/winston-transport": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.6.0.tgz", + "integrity": "sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 7416d812..dc945973 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.ts", "scripts": { "start": "node build/index.js", - "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts", + "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts ", "build": "tsc", "lint": "eslint --ext .ts .", "prettier": "prettier --write ." @@ -15,7 +15,9 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^8.0.2", - "warframe-items": "1.1260.121" + "warframe-items": "1.1260.121", + "winston": "^3.11.0", + "winston-daily-rotate-file": "^4.7.1" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", diff --git a/src/app.ts b/src/app.ts index 3ca8bfc8..bacdc926 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,20 +1,21 @@ import express from "express"; -//import { loginRouter } from "./routes/login"; -import { requestLogger, unknownEndpointHandler } from "@/src/middleware/middleware"; +import { unknownEndpointHandler } from "@/src/middleware/middleware"; +import { requestLogger } from "@/src/middleware/morgenMiddleware"; import { apiRouter } from "@/src/routes/api"; //import { testRouter } from "@/src/routes/test"; import { cacheRouter } from "@/src/routes/cache"; import bodyParser from "body-parser"; -import morgan from "morgan"; import { steamPacksController } from "@/src/controllers/misc/steamPacksController"; import { customRouter } from "@/src/routes/custom"; import { dynamicController } from "@/src/routes/dynamic"; import { statsRouter } from "@/src/routes/stats"; import { connectDatabase } from "@/src/services/mongoService"; +import { registerLogFileCreationListener } from "@/src/utils/logger"; +void registerLogFileCreationListener(); void connectDatabase(); const app = express(); @@ -22,7 +23,7 @@ const app = express(); app.use(bodyParser.raw()); app.use(express.json()); app.use(bodyParser.text()); -app.use(morgan("dev")); +app.use(requestLogger); //app.use(requestLogger); app.use("/api", apiRouter); diff --git a/src/controllers/api/findSessionsController.ts b/src/controllers/api/findSessionsController.ts index 9e4da0f5..f6983910 100644 --- a/src/controllers/api/findSessionsController.ts +++ b/src/controllers/api/findSessionsController.ts @@ -1,23 +1,26 @@ import { RequestHandler } from "express"; import { getSession } from "@/src/managers/sessionManager"; +import { logger } from "@/src/utils/logger"; +//TODO: cleanup const findSessionsController: RequestHandler = (_req, res) => { - console.log("FindSession Request:", JSON.parse(_req.body)); + const reqBody = JSON.parse(_req.body); + logger.debug("FindSession Request ", { reqBody }); let req = JSON.parse(_req.body); if (req.id != undefined) { - console.log("Found ID"); + logger.debug("Found ID"); let session = getSession(req.id); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } else if (req.originalSessionId != undefined) { - console.log("Found OriginalSessionID"); + logger.debug("Found OriginalSessionID"); let session = getSession(req.originalSessionId); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } else { - console.log("Found SessionRequest"); + logger.debug("Found SessionRequest"); let session = getSession(_req.body); if (session) res.json({ queryId: req.queryId, Sessions: session }); diff --git a/src/controllers/api/getCreditsController.ts b/src/controllers/api/getCreditsController.ts index a2a2ea6e..5f86de98 100644 --- a/src/controllers/api/getCreditsController.ts +++ b/src/controllers/api/getCreditsController.ts @@ -5,7 +5,7 @@ import { parseString } from "@/src/helpers/general"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const getCreditsController: RequestHandler = async (req, res) => { - if (config.infinitePlatinum) { + if (config.infiniteResources) { res.json({ RegularCredits: 999999999, TradesRemaining: 999999999, diff --git a/src/controllers/api/hostSessionController.ts b/src/controllers/api/hostSessionController.ts index c7ac7cb9..f602503e 100644 --- a/src/controllers/api/hostSessionController.ts +++ b/src/controllers/api/hostSessionController.ts @@ -1,10 +1,13 @@ import { RequestHandler } from "express"; import { createNewSession } from "@/src/managers/sessionManager"; +import { logger } from "@/src/utils/logger"; +import { ISession } from "@/src/types/session"; -const hostSessionController: RequestHandler = (_req, res) => { - console.log("HostSession Request:", JSON.parse(_req.body)); - let session = createNewSession(JSON.parse(_req.body), _req.query.accountId as string); - console.log("New Session Created: ", session); +const hostSessionController: RequestHandler = (req, res) => { + const hostSessionRequest = JSON.parse(req.body as string) as ISession; + logger.debug("HostSession Request", { hostSessionRequest }); + let session = createNewSession(hostSessionRequest, req.query.accountId as string); + logger.debug(`New Session Created`, { session }); res.json({ sessionId: { $oid: session.sessionId }, rewardSeed: 99999999 }); }; diff --git a/src/controllers/api/joinSessionController.ts b/src/controllers/api/joinSessionController.ts index 3cd6a7e0..7bf6785c 100644 --- a/src/controllers/api/joinSessionController.ts +++ b/src/controllers/api/joinSessionController.ts @@ -1,8 +1,10 @@ import { RequestHandler } from "express"; import { getSessionByID } from "@/src/managers/sessionManager"; +import { logger } from "@/src/utils/logger"; const joinSessionController: RequestHandler = (_req, res) => { - console.log("JoinSession Request:", JSON.parse(_req.body)); + const reqBody = JSON.parse(_req.body); + logger.debug(`JoinSession Request`, { reqBody }); let req = JSON.parse(_req.body); let session = getSessionByID(req.sessionIds[0]); res.json({ rewardSeed: session?.rewardSeed, sessionId: { $oid: session?.sessionId } }); diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index e488f080..3f25182b 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -8,6 +8,7 @@ import { Account } from "@/src/models/loginModel"; import { createAccount, isCorrectPassword } from "@/src/services/loginService"; import { ILoginResponse } from "@/src/types/loginTypes"; import { DTLS, groups, HUB, IRC, Nonce, NRS, platformCDNs } from "@/static/fixed_responses/login_static"; +import { logger } from "@/src/utils/logger"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const loginController: RequestHandler = async (request, response) => { @@ -30,7 +31,7 @@ const loginController: RequestHandler = async (request, response) => { ConsentNeeded: false, TrackedSettings: [] }); - console.log("creating new account"); + logger.debug("created new account"); // eslint-disable-next-line @typescript-eslint/no-unused-vars const { email, password, ...databaseAccount } = newAccount; const newLoginResponse: ILoginResponse = { diff --git a/src/controllers/api/rerollRandomModController.ts b/src/controllers/api/rerollRandomModController.ts index eabffb2e..0a3bff22 100644 --- a/src/controllers/api/rerollRandomModController.ts +++ b/src/controllers/api/rerollRandomModController.ts @@ -1,7 +1,8 @@ +import { logger } from "@/src/utils/logger"; import { RequestHandler } from "express"; const rerollRandomModController: RequestHandler = (_req, res) => { - console.log("RerollRandomMod Request:", _req.body.toString("hex").replace(/(.)(.)/g, "$1$2 ")); + logger.debug("RerollRandomMod Request", { info: _req.body.toString("hex").replace(/(.)(.)/g, "$1$2 ") }); res.json({}); }; diff --git a/src/controllers/api/saveLoadout.ts b/src/controllers/api/saveLoadout.ts index 85a88a5d..7d15593a 100644 --- a/src/controllers/api/saveLoadout.ts +++ b/src/controllers/api/saveLoadout.ts @@ -3,6 +3,7 @@ import util from "util"; import { ISaveLoadoutRequest } from "@/src/types/saveLoadoutTypes"; import { handleInventoryItemConfigChange } from "@/src/services/saveLoadoutService"; import { parseString } from "@/src/helpers/general"; +import { logger } from "@/src/utils/logger"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const saveLoadoutController: RequestHandler = async (req, res) => { @@ -24,7 +25,7 @@ export const saveLoadoutController: RequestHandler = async (req, res) => { res.status(200).end(); } catch (error: unknown) { if (error instanceof Error) { - console.log("error in saveLoadoutController", error.message); + logger.error(`error in saveLoadoutController: ${error.message}`); res.status(400).json({ error: error.message }); } else { res.status(400).json({ error: "unknown error" }); diff --git a/src/controllers/api/setBootLocationController.ts b/src/controllers/api/setBootLocationController.ts index a2e745bc..b469c349 100644 --- a/src/controllers/api/setBootLocationController.ts +++ b/src/controllers/api/setBootLocationController.ts @@ -1,6 +1,6 @@ +import { logger } from "@/src/utils/logger"; import { Request, Response } from "express"; -export const setBootLocationController = (req: Request, res: Response) => { - console.log("setBootLocationController", req.query); +export const setBootLocationController = (_req: Request, res: Response) => { res.end(); }; diff --git a/src/controllers/api/updateSessionController.ts b/src/controllers/api/updateSessionController.ts index e949d83e..c6a5f555 100644 --- a/src/controllers/api/updateSessionController.ts +++ b/src/controllers/api/updateSessionController.ts @@ -1,5 +1,6 @@ import { RequestHandler } from "express"; import { updateSession } from "@/src/managers/sessionManager"; +import { logger } from "@/src/utils/logger"; const updateSessionGetController: RequestHandler = (_req, res) => { res.json({}); diff --git a/src/helpers/general.ts b/src/helpers/general.ts index afc52fd8..23fb9df6 100644 --- a/src/helpers/general.ts +++ b/src/helpers/general.ts @@ -2,6 +2,13 @@ export const isEmptyObject = (obj: unknown): boolean => { return Boolean(obj && Object.keys(obj).length === 0 && obj.constructor === Object); }; +/* +alternative to isEmptyObject +export const isEmptyObject = (obj: object): boolean => { + return Object.keys(obj).length === 0; +}; +*/ + const isString = (text: unknown): text is string => { return typeof text === "string" || text instanceof String; }; diff --git a/src/index.ts b/src/index.ts index 689fa854..450a5be5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import http from "http"; import https from "https"; import fs from "node:fs"; import { app } from "./app"; +import { logger } from "./utils/logger"; //const morgan = require("morgan"); //const bodyParser = require("body-parser"); @@ -12,8 +13,8 @@ const options = { }; // const server = http.createServer(app).listen(80); -http.createServer(app).listen(80, () => console.log("server started on port 80")); -const server = https.createServer(options, app).listen(443, () => console.log("server started on port 443")); +http.createServer(app).listen(80, () => logger.info("cache server started on port 80")); +const server = https.createServer(options, app).listen(443, () => logger.info("game server started on port 443")); // server.keepAliveTimeout = 60 * 1000 + 1000; // server.headersTimeout = 60 * 1000 + 2000; diff --git a/src/managers/sessionManager.ts b/src/managers/sessionManager.ts index e6558d57..1138b310 100644 --- a/src/managers/sessionManager.ts +++ b/src/managers/sessionManager.ts @@ -1,4 +1,5 @@ import { ISession, IFindSessionRequest } from "@/src/types/session"; +import { logger } from "@/src/utils/logger"; const sessions: ISession[] = []; @@ -43,11 +44,12 @@ function getSessionByID(sessionId: string): ISession | undefined { return sessions.find(session => session.sessionId === sessionId); } +//TODO: proper typings function getSession(sessionIdOrRequest: string | IFindSessionRequest): any[] { if (typeof sessionIdOrRequest === "string") { const session = sessions.find(session => session.sessionId === sessionIdOrRequest); if (session) { - console.log("Found Sessions:", session); + logger.debug("Found Sessions:", { session }); return [ { createdBy: session.creatorId, @@ -65,7 +67,7 @@ function getSession(sessionIdOrRequest: string | IFindSessionRequest): any[] { return false; } } - console.log("Found Matching Sessions:", matchingSessions); + logger.debug("Found Matching Sessions:", { matchingSessions }); return true; }); return matchingSessions.map(session => ({ diff --git a/src/middleware/middleware.ts b/src/middleware/middleware.ts index 1653864a..92a69de7 100644 --- a/src/middleware/middleware.ts +++ b/src/middleware/middleware.ts @@ -1,16 +1,17 @@ +import { logger } from "@/src/utils/logger"; import { NextFunction, Request, Response } from "express"; const unknownEndpointHandler = (request: Request, response: Response) => { - console.error("[ERROR] Unknown Endpoint", request.url); + logger.error(`unknown endpoint ${request.method} ${request.path}`); response.status(404).json({ error: "endpoint was not found" }); }; -const requestLogger = (request: Request, _response: Response, next: NextFunction) => { - console.log("Method:", request.method); - console.log("Path: ", request.path); - console.log("Body: ", request.body); - console.log("---"); - next(); -}; +// const requestLogger = (request: Request, _response: Response, next: NextFunction) => { +// console.log("Method:", request.method); +// console.log("Path: ", request.path); +// console.log("Body: ", request.body); +// console.log("---"); +// next(); +// }; -export { unknownEndpointHandler, requestLogger }; +export { unknownEndpointHandler }; diff --git a/src/middleware/morgenMiddleware.ts b/src/middleware/morgenMiddleware.ts new file mode 100644 index 00000000..396f39ca --- /dev/null +++ b/src/middleware/morgenMiddleware.ts @@ -0,0 +1,6 @@ +import morgan from "morgan"; +import { logger } from "@/src/utils/logger"; + +export const requestLogger = morgan("dev", { + stream: { write: message => logger.http(message) } +}); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index e50da9d3..f51063a1 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -16,6 +16,7 @@ import { } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate } from "../types/genericUpdate"; import { IArtifactsRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes"; +import { logger } from "@/src/utils/logger"; export const createInventory = async (accountOwnerId: Types.ObjectId, loadOutPresetId: Types.ObjectId) => { try { @@ -107,7 +108,7 @@ export const updateCurrency = async (price: number, usePremium: boolean, account currencyChanges[path as currencyKeys] = -price; }); - console.log(currencyChanges, "changes"); + logger.debug(`currency changes `, { currencyChanges }); //let changes = {} as keyof currencyKeys; diff --git a/src/services/missionInventoryUpdateService .ts b/src/services/missionInventoryUpdateService .ts index cfee223a..f815627c 100644 --- a/src/services/missionInventoryUpdateService .ts +++ b/src/services/missionInventoryUpdateService .ts @@ -3,6 +3,7 @@ import { IMissionRewardResponse, IReward, IInventoryFieldType, inventoryFields } import missionsDropTable from "@/static/json/missions-drop-table.json"; import { modNames, relicNames, miscNames, resourceNames, gearNames, blueprintNames } from "@/static/data/items"; import { IMissionInventoryUpdateRequest } from "../types/requestTypes"; +import { logger } from "@/src/utils/logger"; // need reverse engineer rewardSeed, otherwise ingame displayed rotation reward will be different than added to db or displayed on mission end const getRewards = ({ @@ -56,10 +57,10 @@ const getRewards = ({ // { chance: 7.69, name: "Health Restore (Large)", rotation: "C" }, // { chance: 7.69, name: "Vapor Specter Blueprint", rotation: "C" } // ]; - // console.log("Mission rewards:", testDrops); + // logger.debug("Mission rewards:", testDrops); // return formatRewardsToInventoryType(testDrops); - console.log("Mission rewards:", drops); + logger.debug("Mission rewards:", drops); return formatRewardsToInventoryType(drops); }; @@ -238,7 +239,7 @@ const _missionRewardsCheckAllNamings = () => { .filter(reward => !blueprintNames[reward.name]) .filter(reward => !reward.name.includes(" Endo")) .filter(reward => !reward.name.includes(" Credits Cache") && !reward.name.includes("Return: ")); - console.log(tempRewards); + logger.debug(`temp rewards`, { tempRewards }); }; // _missionRewardsCheckAllNamings(); diff --git a/src/services/mongoService.ts b/src/services/mongoService.ts index f9a6a044..0ef0c82d 100644 --- a/src/services/mongoService.ts +++ b/src/services/mongoService.ts @@ -1,3 +1,4 @@ +import { logger } from "@/src/utils/logger"; import * as dotenv from "dotenv"; import mongoose from "mongoose"; @@ -11,11 +12,11 @@ if (url === undefined) { const connectDatabase = async () => { try { - await mongoose.connect(url); - console.log("connected to MongoDB"); + await mongoose.connect(`${url}`); + logger.info("connected to MongoDB"); } catch (error: unknown) { if (error instanceof Error) { - console.error("error connecting to MongoDB", error.message); + logger.error(`error connecting to MongoDB ${error.message}`); } } }; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index caf3375b..567239a4 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -11,6 +11,7 @@ import { updateSlots } from "@/src/services/inventoryService"; import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; +import { logger } from "@/src/utils/logger"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -28,10 +29,10 @@ export const getStoreItemTypesCategory = (typesItem: string) => { }; export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountId: string) => { - console.log(purchaseRequest); + logger.debug("purchase request", purchaseRequest); const storeCategory = getStoreItemCategory(purchaseRequest.PurchaseParams.StoreItem); const internalName = purchaseRequest.PurchaseParams.StoreItem.replace("/StoreItems", ""); - console.log("Store category", storeCategory); + logger.debug(`store category ${storeCategory}`); let inventoryChanges; switch (storeCategory) { @@ -47,9 +48,10 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI case "Boosters": inventoryChanges = await handleBoostersPurchase(internalName, accountId); break; - default: - throw new Error(`unknown store category: ${storeCategory} not implemented or new`); + const errorMessage = `unknown store category: ${storeCategory} not implemented or new`; + logger.error(errorMessage); + throw new Error(errorMessage); } if (!inventoryChanges) throw new Error("purchase response was undefined"); @@ -86,32 +88,26 @@ export const slotPurchaseNameToSlotName: SlotPurchase = { // // new frame = slots -1 // // number of frames = extra - slots + 2 const handleSlotPurchase = async (slotPurchaseNameFull: string, accountId: string) => { - console.log("slot name", slotPurchaseNameFull); + logger.debug(`slot name ${slotPurchaseNameFull}`); const slotPurchaseName = parseSlotPurchaseName( slotPurchaseNameFull.substring(slotPurchaseNameFull.lastIndexOf("/") + 1) ); - console.log(slotPurchaseName, "slot purchase name"); + logger.debug(`slot purchase name ${slotPurchaseName}`); - await updateSlots( - accountId, - slotPurchaseNameToSlotName[slotPurchaseName].name, - slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase, - slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase - ); + const slotName = slotPurchaseNameToSlotName[slotPurchaseName].name; + const slotsPerPurchase = slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase; - console.log( - slotPurchaseNameToSlotName[slotPurchaseName].name, - slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase, - "slots added" - ); + await updateSlots(accountId, slotName, slotsPerPurchase, slotsPerPurchase); + + logger.debug(`added ${slotsPerPurchase} slot ${slotName}`); return { InventoryChanges: { - [slotPurchaseNameToSlotName[slotPurchaseName].name]: { + [slotName]: { count: 0, platinum: 1, - Slots: slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase, - Extra: slotPurchaseNameToSlotName[slotPurchaseName].slotsPerPurchase + Slots: slotsPerPurchase, + Extra: slotsPerPurchase } } }; @@ -136,7 +132,7 @@ const handlePowersuitPurchase = async (powersuitName: string, accountId: string) const mechSuit = await addMechSuit(powersuitName, accountId); await updateSlots(accountId, SlotNameToInventoryName.MECHSUIT, 0, 1); - console.log("mech suit", mechSuit); + logger.debug("mech suit", mechSuit); return { InventoryChanges: { @@ -168,7 +164,7 @@ const handlePowersuitPurchase = async (powersuitName: string, accountId: string) //TODO: change to getInventory, apply changes then save at the end const handleTypesPurchase = async (typesName: string, accountId: string) => { const typeCategory = getStoreItemTypesCategory(typesName); - console.log("type category", typeCategory); + logger.debug(`type category ${typeCategory}`); switch (typeCategory) { case "SuitCustomizations": return await handleSuitCustomizationsPurchase(typesName, accountId); diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index 59733931..e8f7bc5d 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -10,6 +10,7 @@ import { getInventory } from "@/src/services/inventoryService"; import { IOid } from "@/src/types/commonTypes"; import { Types } from "mongoose"; import { isEmptyObject } from "@/src/helpers/general"; +import { logger } from "@/src/utils/logger"; //TODO: setup default items on account creation or like originally in giveStartingItems.php @@ -38,10 +39,10 @@ export const handleInventoryItemConfigChange = async ( case "AdultOperatorLoadOuts": { const operatorConfig = equipment as IOperatorConfigEntry; const operatorLoadout = inventory[equipmentName]; - console.log("operator loadout received", equipmentName, operatorConfig); + logger.debug(`operator loadout received ${equipmentName} `, operatorConfig); // all non-empty entries are one loadout slot for (const [loadoutId, loadoutConfig] of Object.entries(operatorConfig)) { - // console.log("loadoutId", loadoutId, "loadoutconfig", loadoutConfig); + logger.debug(`loadoutId ${loadoutId} loadoutConfig`, { config: loadoutConfig }); const loadout = operatorLoadout.find(loadout => loadout._id?.toString() === loadoutId); // if no config with this id exists, create a new one @@ -58,7 +59,7 @@ export const handleInventoryItemConfigChange = async ( break; } case "LoadOuts": { - console.log("loadout received"); + logger.debug("loadout received"); const loadout = await LoadoutModel.findOne({ loadoutOwnerId: accountId }); if (!loadout) { throw new Error("loadout not found"); @@ -126,7 +127,7 @@ export const handleInventoryItemConfigChange = async ( case "DrifterMelee": case "Sentinels": case "Horses": { - console.log("general Item config saved", equipmentName, equipment); + logger.debug(`general Item config saved of type ${equipmentName}`, { config: equipment }); const itemEntries = equipment as IItemEntry; for (const [itemId, itemConfigEntries] of Object.entries(itemEntries)) { @@ -153,7 +154,7 @@ export const handleInventoryItemConfigChange = async ( break; } default: { - console.log("category not implemented", equipmentName, equipment); + logger.error(`category not implemented: ${equipmentName}`, { config: equipment }); } //case "OperatorAmps": // case "SentinelWeapons": diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index bbbf8c89..c6b5d648 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -1,4 +1,3 @@ -import { slotPurchaseNameToSlotName } from "@/src/services/purchaseService"; import { ISuitClient } from "@/src/types/inventoryTypes/SuitTypes"; import { IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; diff --git a/src/utils/logger.ts b/src/utils/logger.ts new file mode 100644 index 00000000..c1bfbc69 --- /dev/null +++ b/src/utils/logger.ts @@ -0,0 +1,113 @@ +import { createLogger, format, transports, Logger, LeveledLogMethod, addColors } from "winston"; +import "winston-daily-rotate-file"; +import * as dotenv from "dotenv"; +import * as util from "util"; +import { isEmptyObject } from "@/src/helpers/general"; + +dotenv.config(); + +// const combineMessageAndSplat = () => { +// return { +// transform: (info: any, _opts: any) => { +// //combine message and args if any +// info.message = util.format(info.message, ...(info[Symbol.for("splat")] || [])); +// return info; +// } +// }; +// }; + +// const alwaysAddMetadata = () => { +// return { +// transform(info: any) { +// if (info[Symbol.for("splat")] === undefined) return info; +// info.meta = info[Symbol.for("splat")]; //[0].meta; +// return info; +// } +// }; +// }; + +//TODO: in production utils.inspect might be slowing down requests see utils.inspect +const consolelogFormat = format.printf(info => { + if (!isEmptyObject(info.metadata)) { + const metadataString = util.inspect(info.metadata, { + showHidden: false, + depth: null, + colors: true + }); + + return `${info.timestamp} [${info.version}] ${info.level}: ${info.message} ${metadataString}`; + } + return `${info.timestamp} [${info.version}] ${info.level}: ${info.message}`; +}); + +const fileFormat = format.combine( + format.uncolorize(), + //combineMessageAndSplat(), + format.timestamp(), + format.json() +); + +const errorLog = new transports.DailyRotateFile({ + filename: "logs/error.log", + format: fileFormat, + level: "error", + datePattern: "YYYY-MM-DD" +}); +const combinedLog = new transports.DailyRotateFile({ + filename: "logs/combined.log", + format: fileFormat, + datePattern: "YYYY-MM-DD" +}); + +const consoleLog = new transports.Console({ + format: format.combine( + format.colorize(), + format.timestamp({ format: "YYYY-MM-DDTHH:mm:ss:SSS" }), // uses local timezone + //combineMessageAndSplat(), + //alwaysAddMetadata(), + format.errors({ stack: true }), + format.align(), + format.metadata({ fillExcept: ["message", "level", "timestamp", "version"] }), + consolelogFormat + ) +}); + +const transportOptions = process.env.LOG_FILES === "true" ? [consoleLog, errorLog, combinedLog] : [consoleLog]; + +//possible log levels: { fatal: 0, error: 1, warn: 2, info: 3, http: 4, debug: 5, trace: 6 }, +const logLevels = { + levels: { + fatal: 0, + error: 1, + warn: 2, + info: 3, + http: 4, + debug: 5, + trace: 6 + }, + colors: { + fatal: "red", + error: "red", + warn: "yellow", + info: "green", + http: "green", + debug: "magenta", + trace: "cyan" + } +}; + +export const logger = createLogger({ + levels: logLevels.levels, + level: process.env.LOG_LEVEL, + defaultMeta: { version: process.env.npm_package_version }, + transports: transportOptions +}) as Logger & Record; + +addColors(logLevels.colors); + +export function registerLogFileCreationListener() { + errorLog.on("new", filename => logger.info(`Using error log file: ${filename}`)); + combinedLog.on("new", filename => logger.info(`Using combined log file: ${filename}`)); + errorLog.on("rotate", filename => logger.info(`Rotated error log file: ${filename}`)); + combinedLog.on("rotate", filename => logger.info(`Rotated combined log file: ${filename}`)); +} -- 2.47.2 From 196bb6aea9611c0822d987468a5a82acb1bf4047 Mon Sep 17 00:00:00 2001 From: WhoTao <36767025+0kolya0@users.noreply.github.com> Date: Sat, 6 Jan 2024 17:28:11 +0200 Subject: [PATCH 054/522] inventoryModel sorted and descriptions (#108) --- src/models/inventoryModels/inventoryModel.ts | 391 ++++++++++++++----- 1 file changed, 289 insertions(+), 102 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index deb3d10f..1e30e4fc 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -296,20 +296,22 @@ DuviriInfoSchema.set("toJSON", { }); const inventorySchema = new Schema({ - Horses: [GenericItemSchema], - DrifterMelee: [GenericItemSchema], - DrifterGuns: [GenericItemSchema], - DuviriInfo: DuviriInfoSchema, - Mailbox: MailboxSchema, - KahlLoadOuts: [Schema.Types.Mixed], + accountOwnerId: Schema.Types.ObjectId, SubscribedToEmails: Number, Created: Schema.Types.Mixed, RewardSeed: Number, + + //Credit RegularCredits: Number, + //Platinum PremiumCredits: Number, + //Gift Platinum(Non trade) PremiumCreditsFree: Number, + //Endo FusionPoints: Number, + + //SlotAny SuitBin: slotsBinSchema, WeaponBin: slotsBinSchema, SentinelBin: slotsBinSchema, @@ -322,154 +324,339 @@ const inventorySchema = new Schema({ CrewShipSalvageBin: slotsBinSchema, MechBin: slotsBinSchema, CrewMemberBin: slotsBinSchema, + + + //How many trades do you have left TradesRemaining: Number, + //How many Gift do you have left*(gift spends the trade) + GiftsRemaining: Number, + //Curent trade info Giving or Getting items + PendingTrades: [Schema.Types.Mixed], + + //Curent Syndicates rank\exp + Affiliations: [Schema.Types.Mixed], + //Syndicates Missions complate(Navigation->Syndicate) + CompletedSyndicates: [String], + //Daily Syndicates Exp DailyAffiliation: Number, DailyAffiliationPvp: Number, DailyAffiliationLibrary: Number, + DailyAffiliationCetus: Number, + DailyAffiliationQuills: Number, + DailyAffiliationSolaris: Number, + DailyAffiliationVentkids: Number, + DailyAffiliationVox: Number, + DailyAffiliationEntrati: Number, + DailyAffiliationNecraloid: Number, + DailyAffiliationZariman: Number, + DailyAffiliationKahl: Number, + + + //Daily Focus limit DailyFocus: Number, - GiftsRemaining: Number, - HandlerPoints: Number, - MiscItems: [Schema.Types.Mixed], - ChallengesFixVersion: Number, + //you not used Focus + FocusXP: Schema.Types.Mixed, + //Curent active like Active school focuses is = "Zenurik" + FocusAbility: String, + //The treeways of the Focus school.(Active and passive Ability) + FocusUpgrades: [Schema.Types.Mixed], + + //Achievement ChallengeProgress: [Schema.Types.Mixed], + + //Account Item like Ferrite,Form,Kuva etc + MiscItems: [Schema.Types.Mixed], + + //Non Upgrade Mods Example:I have 999 item WeaponElectricityDamageMod (only "ItemCount"+"ItemType") RawUpgrades: [RawUpgrades], - ReceivedStartingGear: Boolean, - Suits: [suitSchema], - LongGuns: [WeaponSchema], - Pistols: [WeaponSchema], - Melee: [WeaponSchema], - Ships: [Schema.Types.Mixed], - QuestKeys: [Schema.Types.Mixed], - FlavourItems: [FlavourItemSchema], - Scoops: [GenericItemSchema], - TrainingRetriesLeft: Number, - LoadOutPresets: { type: Schema.Types.ObjectId, ref: "Loadout" }, - CurrentLoadOutIds: [Schema.Types.Mixed], - Missions: [Schema.Types.Mixed], - RandomUpgradesIdentified: Number, - LastRegionPlayed: String, - XPInfo: [Schema.Types.Mixed], - Recipes: [Schema.Types.Mixed], - WeaponSkins: [Schema.Types.Mixed], - PendingRecipes: [Schema.Types.Mixed], - TrainingDate: Date, - PlayerLevel: Number, + //Upgrade Mods\Riven\Arcane Example:"UpgradeFingerprint"+"ItemType"+"" Upgrades: [Upgrade], - EquippedGear: [String], - DeathMarks: [String], - FusionTreasures: [Schema.Types.Mixed], - WebFlags: Schema.Types.Mixed, - CompletedAlerts: [String], - Consumables: [Schema.Types.Mixed], - LevelKeys: [Schema.Types.Mixed], - TauntHistory: [Schema.Types.Mixed], - StoryModeChoice: String, - PeriodicMissionCompletions: [Schema.Types.Mixed], + + //Warframe + Suits: [suitSchema], + //Primary Weapon + LongGuns: [WeaponSchema], + //Secondary Weapon + Pistols: [WeaponSchema], + //Melee Weapon + Melee: [WeaponSchema], + //Ability Weapon like Ultimate Mech\Excalibur\Ivara etc + SpecialItems: [Schema.Types.Mixed], + //The Mandachord(Octavia) is a step sequencer + StepSequencers: [Schema.Types.Mixed], + + //Sentinel(like Helios or modular) + Sentinels: [Schema.Types.Mixed], + //Any /Sentinels/SentinelWeapons/ (like warframe weapon) + SentinelWeapons: [Schema.Types.Mixed], + //Modular Pets + MoaPets: [Schema.Types.Mixed], + KubrowPetEggs: [Schema.Types.Mixed], - LoreFragmentScans: [Schema.Types.Mixed], + //Like PowerSuit Cat\Kubrow or etc Pets + KubrowPets: [Schema.Types.Mixed], + //Prints Cat(3 Prints)\Kubrow(2 Prints) Pets + KubrowPetPrints: [Schema.Types.Mixed], + + //Item for EquippedGear example:Scaner,LoadoutTechSummon etc + Consumables: [Schema.Types.Mixed], + //Weel Emotes+Gear EquippedEmotes: [String], - PendingTrades: [Schema.Types.Mixed], - Boosters: [BoosterSchema], - ActiveDojoColorResearch: String, - SentientSpawnChanceBoosters: Schema.Types.Mixed, - Affiliations: [Schema.Types.Mixed], - QualifyingInvasions: [Schema.Types.Mixed], - FactionScores: [Number], + EquippedGear: [String], + //Equipped Shawzin + EquippedInstrument: String, + ReceivedStartingGear: Boolean, + + //to use add SummonItem to Consumables+EquippedGear + //Archwing need Suits+Melee+Guns SpaceSuits: [GenericItemSchema], SpaceMelee: [GenericItemSchema], SpaceGuns: [Schema.Types.Mixed], ArchwingEnabled: Boolean, - PendingSpectreLoadouts: [Schema.Types.Mixed], + //Mech need Suits+SpaceGuns+SpecialItem + MechSuits: [suitSchema], + ///Restoratives/HoverboardSummon (like Suit) + Hoverboards: [Schema.Types.Mixed], + + //Use Operator\Drifter + UseAdultOperatorLoadout: Boolean, + //Operator\Drifter Weapon + OperatorAmps: [Schema.Types.Mixed], + //Operator + OperatorLoadOuts: [operatorConfigSchema], + //Drifter + AdultOperatorLoadOuts: [operatorConfigSchema], + DrifterMelee: [GenericItemSchema], + DrifterGuns: [GenericItemSchema], + //ErsatzHorsePowerSuit + Horses: [GenericItemSchema], + + //Liset colors skin etc + Ships: [Schema.Types.Mixed], + // /Lotus/Types/Items/ShipDecos/ + ShipDecorations: [Schema.Types.Mixed], + + //RailJack Setting(Mods,Skin,Weapon,etc) + CrewShipHarnesses: [Schema.Types.Mixed], + //Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components) + CrewShipRawSalvage: [Schema.Types.Mixed], + + + //Default RailJack + CrewShips: [Schema.Types.Mixed], + CrewShipAmmo: [Schema.Types.Mixed], + CrewShipWeapons: [Schema.Types.Mixed], + CrewShipWeaponSkins: [Schema.Types.Mixed], + + + //NPC Crew and weapon + CrewMembers: [Schema.Types.Mixed], + CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed], + CrewShipSalvagedWeapons: [Schema.Types.Mixed], + + + //Complete Mission\Quests + Missions: [Schema.Types.Mixed], + QuestKeys: [Schema.Types.Mixed], + //item like DojoKey or Boss missions key + LevelKeys: [Schema.Types.Mixed], + //Active quests + Quests: [Schema.Types.Mixed], + + //Cosmetics like profile glyphs\Kavasa Prime Kubrow Collar\Game Theme etc + FlavourItems: [FlavourItemSchema], + + //Lunaro Weapon + Scoops: [GenericItemSchema], + + //Mastery Rank*(Need item XPInfo to rank up) + PlayerLevel: Number, + //Item Mastery Rank exp + XPInfo: [Schema.Types.Mixed], + //24h timer rank up + TrainingDate: Date, + //Retries rank up(3 time) + TrainingRetriesLeft: Number, + + + //you saw last played Region when you opened the star map + LastRegionPlayed: String, + + //Blueprint + Recipes: [Schema.Types.Mixed], + //Crafting Blueprint(Item Name + CompletionDate) + PendingRecipes: [Schema.Types.Mixed], + + //warframe\Weapon skins + WeaponSkins: [Schema.Types.Mixed], + + + //Ayatan Item + FusionTreasures: [Schema.Types.Mixed], + //"node": "TreasureTutorial", "state": "TS_COMPLETED" + TauntHistory: [Schema.Types.Mixed], + + + //noShow2FA,VisitPrimeVault etc + WebFlags: Schema.Types.Mixed, + //Id CompletedAlerts + CompletedAlerts: [String], + + //Warframe\Duviri + StoryModeChoice: String, + + //Alert->Kuva Siphon + PeriodicMissionCompletions: [Schema.Types.Mixed], + + + //Codex->LoreFragment + LoreFragmentScans: [Schema.Types.Mixed], + + //Resource,Credit,Affinity etc or Bless any boosters + Boosters: [BoosterSchema], + BlessingCooldown: Schema.Types.Mixed, + + //the color your clan requests like Items/Research/DojoColors/DojoColorPlainsB + ActiveDojoColorResearch: String, + + SentientSpawnChanceBoosters: Schema.Types.Mixed, + + QualifyingInvasions: [Schema.Types.Mixed], + FactionScores: [Number], + + //Have only Suit+Pistols+LongGuns+Melee+ItemType(BronzeSpectre,GoldSpectre,PlatinumSpectreArmy,SilverSpectreArmy) + //"/Lotus/Types/Game/SpectreArmies/BronzeSpectreArmy": "Vapor Specter Regiment", SpectreLoadouts: [Schema.Types.Mixed], - Sentinels: [WeaponSchema], - SentinelWeapons: [WeaponSchema], + //If you want change Spectre Gear id + PendingSpectreLoadouts: [Schema.Types.Mixed], + + + //New quest Email spam + //example:"ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestEmailItem", EmailItems: [Schema.Types.Mixed], - CompletedSyndicates: [String], - FocusXP: Schema.Types.Mixed, + + + //Profile->Wishlist Wishlist: [String], + + //https://warframe.fandom.com/wiki/Alignment + //like "Alignment": { "Wisdom": 9, "Alignment": 1 }, Alignment: Schema.Types.Mixed, + AlignmentReplay: Schema.Types.Mixed, + + //https://warframe.fandom.com/wiki/Sortie CompletedSorties: [String], LastSortieReward: [Schema.Types.Mixed], + + //Resource_Drone[Uselees stuff] Drones: [Schema.Types.Mixed], - StepSequencers: [Schema.Types.Mixed], + + //Active profile ico ActiveAvatarImageType: String, - KubrowPets: [Schema.Types.Mixed], - ShipDecorations: [Schema.Types.Mixed], - DailyAffiliationCetus: Number, - DailyAffiliationQuills: Number, + + // open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable DiscoveredMarkers: [Schema.Types.Mixed], + //Open location mission like "JobId" + "StageCompletions" CompletedJobs: [Schema.Types.Mixed], - FocusAbility: String, - FocusUpgrades: [Schema.Types.Mixed], - OperatorAmps: [Schema.Types.Mixed], - HasContributedToDojo: Boolean, - HWIDProtectEnabled: Boolean, - KubrowPetPrints: [Schema.Types.Mixed], - AlignmentReplay: Schema.Types.Mixed, + + //Game mission\ivent score example "Tag": "WaterFight", "Best": 170, "Count": 1258, PersonalGoalProgress: [Schema.Types.Mixed], - DailyAffiliationSolaris: Number, - SpecialItems: [Schema.Types.Mixed], + + //Setting interface Style ThemeStyle: String, ThemeBackground: String, ThemeSounds: String, - BountyScore: Number, - ChallengeInstanceStates: [Schema.Types.Mixed], + + //Daily LoginRewards LoginMilestoneRewards: [String], - OperatorLoadOuts: [operatorConfigSchema], - DailyAffiliationVentkids: Number, - DailyAffiliationVox: Number, - RecentVendorPurchases: [Schema.Types.Mixed], - Hoverboards: [Schema.Types.Mixed], + + //You first Dialog with NPC or use new Item NodeIntrosCompleted: [String], + + //https://warframe.fandom.com/wiki/Heist + //ProfitTaker(1-4) Example:"LocationTag": "EudicoHeists", "Jobs":Mission name CompletedJobChains: [Schema.Types.Mixed], + //Night Wave Challenge SeasonChallengeHistory: [Schema.Types.Mixed], - MoaPets: [Schema.Types.Mixed], - EquippedInstrument: String, + + + //Cephalon Simaris Entries Example:"TargetType"+"Scans"(1-10)+"Completed": true|false + LibraryPersonalProgress: [Schema.Types.Mixed], + //Cephalon Simaris Daily Task + LibraryAvailableDailyTaskInfo: Schema.Types.Mixed, + + //https://warframe.fandom.com/wiki/Invasion InvasionChainProgress: [Schema.Types.Mixed], + + //https://warframe.fandom.com/wiki/Parazon DataKnives: [GenericItemSchema], + + //CorpusLich or GrineerLich + NemesisAbandonedRewards: [String], + //CorpusLich\KuvaLich NemesisHistory: [Schema.Types.Mixed], LastNemesisAllySpawnTime: Schema.Types.Mixed, + + //TradingRulesConfirmed,ShowFriendInvNotifications(Option->Social) Settings: Schema.Types.Mixed, + + //Railjack craft + //https://warframe.fandom.com/wiki/Rising_Tide PersonalTechProjects: [Schema.Types.Mixed], - CrewShips: [Schema.Types.Mixed], + + //Modulars lvl and exp(Railjack|Duviri) + //https://warframe.fandom.com/wiki/Intrinsics PlayerSkills: Schema.Types.Mixed, - CrewShipAmmo: [Schema.Types.Mixed], - CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed], - CrewShipWeapons: [Schema.Types.Mixed], - CrewShipSalvagedWeapons: [Schema.Types.Mixed], - CrewShipWeaponSkins: [Schema.Types.Mixed], + + //TradeBannedUntil data TradeBannedUntil: Schema.Types.Mixed, + + + //https://warframe.fandom.com/wiki/Helminth + InfestedFoundry: Schema.Types.Mixed, + NextRefill: Schema.Types.Mixed, + + //Purchase this new permanent skin from the Lotus customization options in Personal Quarters located in your Orbiter. + //https://warframe.fandom.com/wiki/Lotus#The_New_War + LotusCustomization: Schema.Types.Mixed, + + //Progress+Rank+ItemType(ZarimanPumpShotgun) + //https://warframe.fandom.com/wiki/Incarnon + EvolutionProgress: [Schema.Types.Mixed], + + + //Unknown and system + DuviriInfo: DuviriInfoSchema, + Mailbox: MailboxSchema, + KahlLoadOuts: [Schema.Types.Mixed], + HandlerPoints: Number, + ChallengesFixVersion: Number, PlayedParkourTutorial: Boolean, SubscribedToEmailsPersonalized: Number, - DailyAffiliationEntrati: Number, - DailyAffiliationNecraloid: Number, - MechSuits: [suitSchema], - InfestedFoundry: Schema.Types.Mixed, - BlessingCooldown: Schema.Types.Mixed, - CrewShipHarnesses: [Schema.Types.Mixed], - CrewShipRawSalvage: [Schema.Types.Mixed], - CrewMembers: [Schema.Types.Mixed], - AdultOperatorLoadOuts: [operatorConfigSchema], - LotusCustomization: Schema.Types.Mixed, - UseAdultOperatorLoadout: Boolean, - DailyAffiliationZariman: Number, - NemesisAbandonedRewards: [String], - DailyAffiliationKahl: Number, LastInventorySync: Schema.Types.Mixed, - NextRefill: Schema.Types.Mixed, ActiveLandscapeTraps: [Schema.Types.Mixed], - EvolutionProgress: [Schema.Types.Mixed], RepVotes: [Schema.Types.Mixed], LeagueTickets: [Schema.Types.Mixed], - Quests: [Schema.Types.Mixed], + HasContributedToDojo: Boolean, + HWIDProtectEnabled: Boolean, + LoadOutPresets: { type: Schema.Types.ObjectId, ref: "Loadout" }, + CurrentLoadOutIds: [Schema.Types.Mixed], + RandomUpgradesIdentified: Number, + BountyScore: Number, + ChallengeInstanceStates: [Schema.Types.Mixed], + RecentVendorPurchases: [Schema.Types.Mixed], Robotics: [Schema.Types.Mixed], UsedDailyDeals: [Schema.Types.Mixed], - LibraryPersonalProgress: [Schema.Types.Mixed], CollectibleSeries: [Schema.Types.Mixed], - LibraryAvailableDailyTaskInfo: Schema.Types.Mixed, HasResetAccount: Boolean, + + //Discount Coupon PendingCoupon: Schema.Types.Mixed, + //Like BossAladV,BossCaptainVor come for you on missions % chance + DeathMarks: [String], + //Zanuka Harvestable: Boolean, + //Grustag three DeathSquadable: Boolean }); -- 2.47.2 From c251e448660c3ba0cc0a58a5174b206b2435624d Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 6 Jan 2024 16:51:53 +0100 Subject: [PATCH 055/522] version update 35.0.4 (#112) --- config.json | 6 +- static/fixed_responses/worldState.json | 2992 ++++++++++-------------- 2 files changed, 1212 insertions(+), 1786 deletions(-) diff --git a/config.json b/config.json index 205c173f..b6f0bf82 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.11.06.13.39/1TcsxlckBF8b8jiE4E3eQg", + "buildLabel": "2023.12.19.15.34/ccslDhWoFeu8lZi6eT+HXg", "matchmakingBuildId": "9186822613720189878", - "version": "34.0.8", - "worldSeed": "LPilWYzp4Sgk9VoUjNUeQ0St81TzYSKmtjx/yZRdT26a6C/Rd8/5q9QrTbLPD08iv1z+Byulw+0fVagfp7JB0b3uUi8G03Bq37HHFtqARTmukBuW3FYmrr5pyLhSz5woWo/HR63oUSaX6lGvnjmWLf6/5AW/QNkjgD2lDqaYIh/IumYtBon+RtlKn/np62ljsK+vlnorw2zfXA95gdvQAMeBNk/G2SMTPjlQJdlRTjVhfRuJTlywsIv+Qy4ammWGEcms3uzRnbS8KzQohiD7wpd5GW6nbjim6BOkbgaTGjz0HOix8oVoqrJJNLgwH6rcFWWvh2MuOo+ehbNfW3Z5Bg==", + "version": "35.0.4", + "worldSeed": "t8Bnmc5fxNpCmCM+xPwf/HB4EVWUN9ErRdDro1yMiEkFmzHL74Khle/apjMMYvli5MS9nu1ZAi83e2wCAa4o9uSMhgVAocPQbWIYHX/AgHPpb0kFszqpcWF20QaCRW6ebAXduGBBOvsU3h5zDCBgRPdqzd64BIYG8cD+nmpnHKPfq7HlTFQCOsq3ipHgGSZypji5oGxXdMKwDVP/uMFmiosjr8XCVnw4aTPq1MDjSBBbNlc4KIJpAokdOUokrbo+7jvbfSQvKCZiNxSEyDjxxCqwdJn3GyIk/yjpXPWmtS5GS1/R9+0DrjLs+ra3bKWeUlwRFKl4zjeyFivy/1nZkw==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index bd216092..ad9092f3 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "LPilWYzp4Sgk9VoUjNUeQ0St81TzYSKmtjx/yZRdT26a6C/Rd8/5q9QrTbLPD08iv1z+Byulw+0fVagfp7JB0b3uUi8G03Bq37HHFtqARTmukBuW3FYmrr5pyLhSz5woWo/HR63oUSaX6lGvnjmWLf6/5AW/QNkjgD2lDqaYIh/IumYtBon+RtlKn/np62ljsK+vlnorw2zfXA95gdvQAMeBNk/G2SMTPjlQJdlRTjVhfRuJTlywsIv+Qy4ammWGEcms3uzRnbS8KzQohiD7wpd5GW6nbjim6BOkbgaTGjz0HOix8oVoqrJJNLgwH6rcFWWvh2MuOo+ehbNfW3Z5Bg==", + "WorldSeed": "t8Bnmc5fxNpCmCM+xPwf/HB4EVWUN9ErRdDro1yMiEkFmzHL74Khle/apjMMYvli5MS9nu1ZAi83e2wCAa4o9uSMhgVAocPQbWIYHX/AgHPpb0kFszqpcWF20QaCRW6ebAXduGBBOvsU3h5zDCBgRPdqzd64BIYG8cD+nmpnHKPfq7HlTFQCOsq3ipHgGSZypji5oGxXdMKwDVP/uMFmiosjr8XCVnw4aTPq1MDjSBBbNlc4KIJpAokdOUokrbo+7jvbfSQvKCZiNxSEyDjxxCqwdJn3GyIk/yjpXPWmtS5GS1/R9+0DrjLs+ra3bKWeUlwRFKl4zjeyFivy/1nZkw==", "Version": 10, - "MobileVersion": "4.15.17.0", - "BuildLabel": "2023.11.06.13.39/1TcsxlckBF8b8jiE4E3eQg", - "Time": 1699800661, + "MobileVersion": "4.15.19.0", + "BuildLabel": "2023.12.19.15.34/ccslDhWoFeu8lZi6eT+HXg", + "Time": 1704555310, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -57,26 +57,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "652ff61922ce61c81d09480e" }, - "Messages": [{ "LanguageCode": "ja", "Message": "アップデート34:Dagathの深淵 パッチノート" }], - "Prop": "https://bit.ly/3S3XSsA", - "Date": { "$date": { "$numberLong": "1697641860000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "652ff9fb6c4b32386f0875fa" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj : Dagath" }], - "Prop": "https://forums.warframe.com/topic/1368162-les-abysses-de-dagath-mise-%C3%A0-jour-34/", - "Date": { "$date": { "$numberLong": "1697642940000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/370d04da5187b9e07b99f850bccfb270.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "652ffa87514198765c053540" }, "Messages": [{ "LanguageCode": "pl", "Message": "OTCHŁAŃ DAGATH: AKTUALIZACJA 34 - NOTKI" }], @@ -87,30 +67,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "652ffe7ced7a6da19c039ccf" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Abyss of Dagath Available Now" }, - { "LanguageCode": "fr", "Message": "Les Abysses de Dagath sont maintenant disponibles" }, - { "LanguageCode": "it", "Message": "Abisso di Dagath - Ora Disponibile" }, - { "LanguageCode": "de", "Message": "Abgrund von Dagath ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "«Abismo de Dagath» ya está disponible" }, - { "LanguageCode": "pt", "Message": "O Abismo de Dagath já está disponível" }, - { "LanguageCode": "ru", "Message": "Бездна Дагаc уже доступна" }, - { "LanguageCode": "pl", "Message": "Otchłań Dagath jest już dostępna" }, - { "LanguageCode": "uk", "Message": "«Безодня Даґат» уже доступна" }, - { "LanguageCode": "tr", "Message": "Abyss of Dagath Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "アップデート「Dagathの深淵」が登場" }, - { "LanguageCode": "zh", "Message": "《Dagath 之深渊》现已推出" }, - { "LanguageCode": "ko", "Message": "다가스의 나락을 지금 만나보세요" }, - { "LanguageCode": "tc", "Message": "《Dagath 的深淵》現已登場" } - ], - "Prop": "https://www.warframe.com/news/abyss-of-dagath?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-AbyssofDagathLaunchIGN", - "Date": { "$date": { "$numberLong": "1697643780000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/901ae8af74582f796d0b744867def81e.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "653001a6be47fe5645028add" }, "Messages": [ @@ -134,68 +90,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65300215ed7a6da19c039ec4" }, - "Messages": [{ "LanguageCode": "ko", "Message": "다가스의 나락: 업데이트 34" }], - "Prop": "", - "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1368181-%EB%8B%A4%EA%B0%80%EC%8A%A4%EC%9D%98-%EB%82%98%EB%9D%BD-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-34/" }], - "Date": { "$date": { "$numberLong": "1697644980000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "653018c12a039099d3075b8a" }, - "Messages": [{ "LanguageCode": "es", "Message": "Notas de Actualización 34: Abismo de Dagath" }], - "Prop": "https://forums.warframe.com/topic/1368242-abismo-de-dagath-actualizaci%C3%B3n-34/", - "Date": { "$date": { "$numberLong": "1697650740000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65302a44bd9493463b0b49fe" }, - "Messages": [{ "LanguageCode": "fr", "Message": "[Bugs] Les Abysses de Dagath" }], - "Prop": "https://forums.warframe.com/topic/1368262-bugs-les-abysses-de-dagath/", - "Date": { "$date": { "$numberLong": "1697655300000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/370d04da5187b9e07b99f850bccfb270.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65303836b3f0d70f280d629b" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Listen to the Warframe Soundtracks!" }, - { "LanguageCode": "fr", "Message": "Écoutez les Bandes originales de Warframe !" }, - { "LanguageCode": "it", "Message": "Ascolta le Colonne Sonore di Warframe!" }, - { "LanguageCode": "de", "Message": "Hört euch die Warframe Soundtracks an!" }, - { "LanguageCode": "es", "Message": "¡Escucha las bandas sonoras de Warframe!" }, - { "LanguageCode": "pt", "Message": "Ouça as Trilhas Sonoras do Warframe!" }, - { "LanguageCode": "ru", "Message": "Слушайте саундтреки Warframe!" }, - { "LanguageCode": "pl", "Message": "Posłuchajcie Ścieżek dźwiękowych Warframe!" }, - { "LanguageCode": "uk", "Message": "Слухайте саундтреки Warframe!" }, - { "LanguageCode": "tr", "Message": "Warframe Oyun Müziklerini dinle!" }, - { "LanguageCode": "ja", "Message": "Warframeサウンドトラックを聴こう!" }, - { "LanguageCode": "zh", "Message": "聆听 Warframe 官方原声带!" }, - { "LanguageCode": "ko", "Message": "워프레임 사운드트랙을 들어보세요!" }, - { "LanguageCode": "tc", "Message": "享受 Warframe 原聲音樂!" } - ], - "Prop": "https://www.warframe.com/news/warframe-soundtracks-available-now?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-WarframeSoundtrackDigitalRelease", - "Date": { "$date": { "$numberLong": "1697658660000" } }, - "EventStartDate": { "$date": { "$numberLong": "1697655600000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/091bf394ece5c739cb6facdb6d83103a_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6532efb2a6c68d36aa0b35ea" }, - "Messages": [{ "LanguageCode": "es", "Message": "Abismo de Dagath: Revisión 34.0.2 + 34.0.3" }], - "Prop": "https://forums.warframe.com/topic/1369074-abismo-de-dagath-revisi%C3%B3n-3402-3403/", - "Date": { "$date": { "$numberLong": "1697833260000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "65368b9aa7625caedf0d6715" }, "Messages": [{ "LanguageCode": "tr", "Message": "2023 Ürpertici Dojo Yarışması [Dagath'ın Çukuru]" }], @@ -207,614 +101,629 @@ "Community": true }, { - "_id": { "$oid": "65382320239dbdb44b06ec93" }, - "Messages": [{ "LanguageCode": "es", "Message": "Abismo de Dagath: Revisión 34.0.4" }], - "Prop": "https://forums.warframe.com/topic/1369754-abismo-de-dagath-revisi%C3%B3n-3404/", - "Date": { "$date": { "$numberLong": "1698174120000" } }, + "_id": { "$oid": "6553c26fcd5e49b3c50aa556" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Eksiksiz Kavat ve Kubrow Rehberi" }], + "Prop": "https://forums.warframe.com/topic/1371844-eksiksiz-kavat-ve-kubrow-rehberi/", + "Date": { "$date": { "$numberLong": "1699987980000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "6538302d6e58888cc6051068" }, - "Messages": [{ "LanguageCode": "es", "Message": "YA DISPONIBLE: Juego entre plataformas de Clanes/Alianzas y amigos" }], - "Prop": "https://forums.warframe.com/topic/1369774-ya-disponible-juego-entre-plataformas-de-clanesalianzas-y-amigos/", - "Date": { "$date": { "$numberLong": "1698181140000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "653bddb39e4cb1318200a5b8" }, + "_id": { "$oid": "65611ad1713ea52411002f8e" }, "Messages": [ - { "LanguageCode": "en", "Message": "Cross Platform Clans and Friends" }, - { "LanguageCode": "fr", "Message": "Clans et amis Cross-Platform" }, - { "LanguageCode": "it", "Message": "Clan e Amici Multipiattaforma" }, - { "LanguageCode": "de", "Message": "Cross-Platform-Clans & -Freunde" }, - { "LanguageCode": "es", "Message": "Clanes y amigos entre plataformas" }, - { "LanguageCode": "pt", "Message": "Clãs e Amigos Multiplataforma" }, - { "LanguageCode": "ru", "Message": "Кроссплатформенные кланы и друзья" }, - { "LanguageCode": "pl", "Message": "Klany międzyplatformowe i Przyjaciele" }, - { "LanguageCode": "uk", "Message": "Міжплатформні клани та друзі" }, - { "LanguageCode": "tr", "Message": "Çapraz Platform Klanları ve Arkadaşları" }, - { "LanguageCode": "ja", "Message": "クロスプラットフォーム:クランとフレンド" }, - { "LanguageCode": "ko", "Message": "크로스 플랫폼 클랜 및 친구 추가" } + { "LanguageCode": "en", "Message": "Android Pre-registration is Open!" }, + { "LanguageCode": "fr", "Message": "La pré-inscription Android est ouverte !" }, + { "LanguageCode": "it", "Message": "La preregistrazione Android è aperta!" }, + { "LanguageCode": "de", "Message": "Die Android-Vorregistrierung ist geöffnet!" }, + { "LanguageCode": "es", "Message": "¡El prerregistro de Android está abierto!" }, + { "LanguageCode": "pt", "Message": "O pré-registro do Warframe para Android está aberto!" }, + { "LanguageCode": "ru", "Message": "Предварительная регистрация для игры в Warframe на Android открыта!" }, + { "LanguageCode": "pl", "Message": "Rejestracja wstępna na Androidzie jest otwarta!" }, + { "LanguageCode": "uk", "Message": "Попередня реєстрація на Android відкрита!" }, + { "LanguageCode": "tr", "Message": "Android için ön kayıt açıldı!" }, + { "LanguageCode": "ja", "Message": "Android版の事前登録が開始!" }, + { "LanguageCode": "zh", "Message": "安卓版预注册现已开发!" }, + { "LanguageCode": "ko", "Message": "안드로이드 기기 사전등록이 시작되었습니다!" }, + { "LanguageCode": "tc", "Message": "Android 版本的 Warframe 已開放預先註冊!" } ], - "Prop": "https://www.warframe.com/news/cross-platform-clans-and-friends?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-CrossPlayClanandFriendsIGN", - "Date": { "$date": { "$numberLong": "1698422040000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e5e7600d9b43d8707806c53d6bba3255_1600x900.png", + "Prop": "https://www.warframe.com/android?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-AndroidBetaSignUpLaunchIGN", + "Date": { "$date": { "$numberLong": "1700861400000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/9efb4cd34cc8698927ac5d5e40ff5634.jpg", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "653d20bdcc79da182b09737d" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #174" }], - "Prop": "https://forums.warframe.com/topic/1370288-r%C3%A9sum%C3%A9-devstream-174-version-fr/", - "Date": { "$date": { "$numberLong": "1698504600000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_10/image.png.64e11d3e55c3f0a96a845e0147162f20.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65426158e60609918a08b0e7" }, + "_id": { "$oid": "65708eb08538b4a03707c29d" }, "Messages": [ - { "LanguageCode": "en", "Message": "Movember 2023 is live!" }, - { "LanguageCode": "fr", "Message": "Movember 2023 a commencé !" }, - { "LanguageCode": "it", "Message": "Movember 2023 è ora disponibile!" }, - { "LanguageCode": "de", "Message": "Movember 2023 ist live!" }, - { "LanguageCode": "es", "Message": "¡Comenzó Movember 2023!" }, - { "LanguageCode": "pt", "Message": "O Novembro Azul 2023 (Movember) já começou!" }, - { "LanguageCode": "ru", "Message": "Усабрь 2023 уже пришёл!" }, - { "LanguageCode": "pl", "Message": "Movember 2023 już trwa!" }, - { "LanguageCode": "uk", "Message": "«Вусопад 2023» вже в грі!" }, - { "LanguageCode": "tr", "Message": "Movember 2023 şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "モーベンバー2023開催!" }, - { "LanguageCode": "zh", "Message": "2023 胡子月大赛开始啦!" }, - { "LanguageCode": "ko", "Message": "모벰버 2023이 시작되었습니다!" }, - { "LanguageCode": "tc", "Message": "鬍子月 2023 登場了!" } + { "LanguageCode": "en", "Message": "Save the date(s) for TennoCon 2024!" }, + { "LanguageCode": "fr", "Message": "Réservez la date de la TennoCon 2024 !" }, + { "LanguageCode": "it", "Message": "Segna la data per il TennoCon 2024!" }, + { "LanguageCode": "de", "Message": "Merkt euch die Termine für die TennoCon 2024 vor!" }, + { "LanguageCode": "es", "Message": "¡Guarda las fechas para la TennoCon 2024!" }, + { "LanguageCode": "pt", "Message": "Reserve as datas para a TennoCon 2024!" }, + { "LanguageCode": "ru", "Message": "Зарезервируйте эти даты для TennoCon 2024!" }, + { "LanguageCode": "pl", "Message": "Zarezerwujcie czas na TennoCon 2024!" }, + { "LanguageCode": "uk", "Message": "Позначте в календарі дату Теннокону 2024!" }, + { "LanguageCode": "tr", "Message": "TennoCon 2024 için tarih(ler)i kaydet!" }, + { "LanguageCode": "ja", "Message": "TennoCon 2024開催日決定!" }, + { "LanguageCode": "ko", "Message": "텐노콘 2024을 위해 이 날(들) 의 일정을 비워두세요!" } ], - "Prop": "https://www.warframe.com/news/movember-2023-in-warframe?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Movember2023EventLaunch", - "Date": { "$date": { "$numberLong": "1698847200000" } }, - "EventStartDate": { "$date": { "$numberLong": "1698847200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/7f90b8f98c9530584e016641fa0360b0_1600x900.png", + "Prop": "https://www.warframe.com/news/tennocon-2024-en?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-TennoConSaveTheDate", + "Date": { "$date": { "$numberLong": "1701872280000" } }, + "EventStartDate": { "$date": { "$numberLong": "1701874800000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/efdbbeef36dd56d3ebdf852de51647b2_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "654292994eb21dd3d4023272" }, - "Messages": [{ "LanguageCode": "en", "Message": "Nora's Mix Vol. 4 Ending + Vol. 5 Incoming!" }], - "Prop": "https://forums.warframe.com/topic/1370861-noras-mix-vol-4-ending-vol-5-incoming/", - "Date": { "$date": { "$numberLong": "1698861660000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6542a80ddd58248c8603ce9b" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Fin du Mix de Nora Vol. 4" }], - "Prop": "https://forums.warframe.com/topic/1370873-le-mix-de-nora-vol-4-se-termine-bient%C3%B4t-le-vol-5-arrive/", - "Date": { "$date": { "$numberLong": "1698867120000" } }, - "ImageUrl": "https://warframe-web-assets-dev.nyc3.cdn.digitaloceanspaces.com/uploads/cms/Nora's_Investigation_Templates_16x9_4k.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6543e628b1a68db9800fb00e" }, + "_id": { "$oid": "65721c0f98c0c0c0e309040b" }, "Messages": [ - { "LanguageCode": "en", "Message": "Nezha Prime and Octavia Prime are back!" }, - { "LanguageCode": "fr", "Message": "Nezha Prime et Octavia Prime sont de retour !" }, - { "LanguageCode": "it", "Message": "Nezha Prime e Octavia Prime stanno tornando!" }, - { "LanguageCode": "de", "Message": "Nezha Prime und Octavia Prime sind zurück!" }, - { "LanguageCode": "es", "Message": "¡Nezha Prime y Octavia Prime están de vuelta!" }, - { "LanguageCode": "pt", "Message": "O Nezha Prime e a Octavia Prime voltaram!" }, - { "LanguageCode": "ru", "Message": "Нэчжа Прайм и Октавия Прайм возвращаются!" }, - { "LanguageCode": "pl", "Message": "Nezha Prime i Octavia Prime powrócili!" }, - { "LanguageCode": "uk", "Message": "Неджа-прайм і Октавія-прайм повертаються!" }, - { "LanguageCode": "tr", "Message": "Nezha Prime ve Octavia Prime geri döndü!" }, - { "LanguageCode": "ja", "Message": "Nezha PrimeとOctavia Primeが復帰!" }, - { "LanguageCode": "zh", "Message": "Nezha Prime 和 Octavia Prime 现已回归!" }, - { "LanguageCode": "ko", "Message": "나타 프라임과 옥타비아 프라임이 돌아왔습니다!" }, - { "LanguageCode": "tc", "Message": "Nezha Prime 以及 Octavia Prime 回歸了!" } + { "LanguageCode": "en", "Message": "Pre-Order: Whispers in the Walls Merch" }, + { "LanguageCode": "de", "Message": "Vorbestellung: Die 'Flüstern in den Wänden' Merch-Kollektion" }, + { "LanguageCode": "pt", "Message": "Pré-encomenda: Coleção de Produtos dos Sussurros nas Paredes" }, + { "LanguageCode": "tr", "Message": "Ön Sipariş: Whispers in the Walls Ürün Koleksiyonu" }, + { "LanguageCode": "ja", "Message": "「壁の中の囁き」グッズコレクションを今すぐ予約購入" }, + { "LanguageCode": "ko", "Message": "사전 예약 주문하세요: 벽 속의 속삭임 굿즈 컬렉션" } ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-PrimeResurgenceNezhaOctaviaIGN", - "Date": { "$date": { "$numberLong": "1698948480000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/prime-resurgence/rotations/nezha-octavia/masthead-keyart-desktop.png", + "Prop": "https://store.warframe.com/collections/whispers-in-the-walls-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-WhispersintheWallsCollectionLaunch", + "Date": { "$date": { "$numberLong": "1701976740000" } }, + "EventStartDate": { "$date": { "$numberLong": "1701975600000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/53ae5115fa3e794f97dafbd726c3ea2a_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "654940a38a899732aa0d09c1" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Stream Schedule: Nov 6 - 10 " }], - "Prop": "https://forums.warframe.com/topic/1371398-community-stream-schedule-nov-6-10/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Community-Streams-06", - "Date": { "$date": { "$numberLong": "1699299420000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65494d8eae516ee0620cbfa7" }, - "Messages": [{ "LanguageCode": "ja", "Message": "11月6日~11月10日の配信スケジュール" }], - "Prop": "https://bit.ly/46ZfkmZ", - "Date": { "$date": { "$numberLong": "1699302720000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_11/UniversalMedallion.png.77c37ff5cc77679310041b52ab14d6e7.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "654a60bd4cc72868230eeb48" }, - "Messages": [{ "LanguageCode": "en", "Message": "Full Details On How To Play Plague Star!" }], - "Prop": "https://forums.warframe.com/topic/1371415-live-on-all-platforms-operation-plague-star-how-to-faq/", - "Date": { "$date": { "$numberLong": "1699372860000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/00f8832b92926fe968e0407f6d409e17.png", + "_id": { "$oid": "6579d80beeb4b033ed0ce33f" }, + "Messages": [{ "LanguageCode": "en", "Message": "Update 35: Whispers in the Walls" }], + "Prop": "https://forums.warframe.com/topic/1374376-update-35-whispers-in-the-walls/", + "Date": { "$date": { "$numberLong": "1702483020000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/71619183f29041bae5d62979ec39f2ee.jpg", "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "6579d98f401337afef087f3f" }, + "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 35: 벽 속의 속삭임" }], + "Prop": "", + "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1374381-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-35-%EB%B2%BD-%EC%86%8D%EC%9D%98-%EC%86%8D%EC%82%AD%EC%9E%84/" }], + "Date": { "$date": { "$numberLong": "1702484340000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6579dae50faa971ce30d3a46" }, + "Messages": [{ "LanguageCode": "ja", "Message": "アップデート35:「壁の中の囁き」パッチノート" }], + "Prop": "https://bit.ly/4aj8sTd", + "Date": { "$date": { "$numberLong": "1702484580000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/71619183f29041bae5d62979ec39f2ee.jpg", + "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "654a635bd86fbf17f5094d48" }, + "_id": { "$oid": "6579e123716960516c0a520f" }, "Messages": [ - { "LanguageCode": "en", "Message": "Play Plague Star today!" }, - { "LanguageCode": "fr", "Message": "Jouez au Fléau Céleste !" }, - { "LanguageCode": "it", "Message": "Gioca a Plague Star oggi stesso!" }, - { "LanguageCode": "de", "Message": "Spielt noch heute Plagenstern!" }, - { "LanguageCode": "es", "Message": "¡Juega Estrella Infestada hoy mismo!" }, - { "LanguageCode": "pt", "Message": "Jogue a Praga Estelar hoje mesmo!" }, - { "LanguageCode": "ru", "Message": "Сыграйте в «Чумную звезду» уже сегодня!" }, - { "LanguageCode": "pl", "Message": "Zagraj w Plagę z Gwiazd już dziś!" }, - { "LanguageCode": "uk", "Message": "Грайте в операцію «Морова зірка» вже сьогодні!" }, - { "LanguageCode": "tr", "Message": "Salgın Yıldızını hemen oynamaya başla!" }, - { "LanguageCode": "ja", "Message": "「疫病の星」作戦を今すぐプレイ!" }, - { "LanguageCode": "zh", "Message": "今天就来玩《瘟疫之星》吧!" }, - { "LanguageCode": "ko", "Message": "오늘 플레이그 스타를 플레이해보세요!" }, - { "LanguageCode": "tc", "Message": "今天就來遊玩《瘟疫之星》吧!" } + { "LanguageCode": "en", "Message": "Get the Sanctum Supporter Pack!" }, + { "LanguageCode": "fr", "Message": "Obtenez le Pack Supporter Sanctum" }, + { "LanguageCode": "it", "Message": "Ottieni il Pacchetto Sostenitore Sanctum!" }, + { "LanguageCode": "de", "Message": "Holt euch das Sanctum Unterstützer-Paket!" }, + { "LanguageCode": "es", "Message": "¡Obtén el Paquete de Apoyo Sanctum!" }, + { "LanguageCode": "pt", "Message": "Adquira o Pacote de Suporte do Sanctum!" }, + { "LanguageCode": "ru", "Message": "Получите набор поддержки «Санктум»!" }, + { "LanguageCode": "pl", "Message": "Zdobądź Pakiet Wsparcia Sanctum!" }, + { "LanguageCode": "uk", "Message": "Отримайте набір шанувальників «Святилище»!" }, + { "LanguageCode": "tr", "Message": "Sanctum Destek Paketini Al!" }, + { "LanguageCode": "ja", "Message": "サンクタムサポーターパックをゲットしよう!" }, + { "LanguageCode": "zh", "Message": "获得圣所支援包!" }, + { "LanguageCode": "ko", "Message": "생텀 서포터 팩을 만나보세요!" }, + { "LanguageCode": "tc", "Message": "獲取聖所支援組合包!" } ], - "Prop": "https://www.warframe.com/news/plague-star-is-back?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-PlagueStarLaunch", - "Date": { "$date": { "$numberLong": "1699373640000" } }, - "EventStartDate": { "$date": { "$numberLong": "1699372800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1700582400000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/c21040f179c8d299f9869073977c3aa6_1600x900.png", + "Prop": "https://www.warframe.com/buyplatinum?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-SanctumSupporterPack", + "Date": { "$date": { "$numberLong": "1702484700000" } }, + "ImageUrl": "https://www-static.warframe.com/images/promo/whispers/supporter-pack-desktop.jpg", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "654a649af7a870b7820650e8" }, - "Messages": [{ "LanguageCode": "ja", "Message": "「疫病の星」作戦プレイガイド" }], - "Prop": "https://bit.ly/463Pqx3", - "Date": { "$date": { "$numberLong": "1699374180000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/00f8832b92926fe968e0407f6d409e17.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "654a64a946a65a886100284b" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Fléau Céleste - FAQ" }], - "Prop": "https://forums.warframe.com/topic/1371498-dispo-sur-toutes-les-plateformes-op%C3%A9ration%C2%A0%C2%A0fl%C3%A9au-c%C3%A9leste-conseils-et-faq/", - "Date": { "$date": { "$numberLong": "1699374180000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/00f8832b92926fe968e0407f6d409e17.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "654a88b29727773d6f02e3b4" }, - "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops 6 - 10 de noviembre" }], - "Prop": "https://forums.warframe.com/topic/1371521-programa-de-streams-y-twitch-drops-6-10-de-noviembre/", - "Date": { "$date": { "$numberLong": "1699383360000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "654ac60b941def0313097bff" }, - "Messages": [{ "LanguageCode": "en", "Message": "PSA: Operation Plague Star Bounty Standing Changes" }], - "Prop": "https://forums.warframe.com/topic/1371541-psa-operation-plague-star-bounty-standing-changes/", - "Date": { "$date": { "$numberLong": "1699399140000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "654d21fa2832bdb80d0e4332" }, - "Messages": [{ "LanguageCode": "en", "Message": "Give your dojo a place of honour on the Starchart!" }], - "Prop": "https://forums.warframe.com/topic/1371407-star-chart-dojo-showcase-autumn-2023/", - "Date": { "$date": { "$numberLong": "1699553700000" } }, - "EventStartDate": { "$date": { "$numberLong": "1699506000000" } }, - "EventEndDate": { "$date": { "$numberLong": "1700802000000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "654d34a42737ba454202fd8f" }, - "Messages": [{ "LanguageCode": "en", "Message": "Abyss of Dagath: Hotfix 34.0.8" }], - "Prop": "https://www.warframe.com/updates/pc/34-0-8", - "Date": { "$date": { "$numberLong": "1699558500000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "654d4a3573ea4f53bc0c7c18" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes : 34.0.8" }], - "Prop": "https://forums.warframe.com/topic/1371728-les-abysses-de-dagath%C2%A0-correctif-3408/", - "Date": { "$date": { "$numberLong": "1699564020000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "654d4e11bbfcd1a99e0eb0c7" }, - "Messages": [{ "LanguageCode": "es", "Message": "Abismo de Dagath: Revisión 34.0.8" }], - "Prop": "https://forums.warframe.com/topic/1371737-abismo-de-dagath-revisi%C3%B3n-3408/", - "Date": { "$date": { "$numberLong": "1699564980000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "654e5a60b8336c43bc007747" }, + "_id": { "$oid": "6579f5121ac944e9910da155" }, "Messages": [ - { "LanguageCode": "en", "Message": "Vasca Kavat Floof Plush Available Now!" }, - { "LanguageCode": "fr", "Message": "Peluche Kavat Vasca disponible!" }, - { "LanguageCode": "it", "Message": "Peluche Floof Vasca Kavat - Ora Disponibile!" }, - { "LanguageCode": "de", "Message": "Floof-Plüschtier: Vasca Kavat ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡El peluche del Floof de kavat Vasca ya está disponible!" }, - { "LanguageCode": "pt", "Message": "Floof de Pelúcia do Kavat Vasca Já Disponível!" }, - { "LanguageCode": "ru", "Message": "Пушистик Васка Кават уже доступен!" }, - { "LanguageCode": "pl", "Message": "Pluszak Kavata Vasca już dostępny!" }, - { "LanguageCode": "uk", "Message": "Плюш васкозного кавата вже доступний!" }, - { "LanguageCode": "tr", "Message": "Vasca Kavat Peluşu Şimdi Sizlerle!" }, - { "LanguageCode": "ja", "Message": "Vasca キャバットのぬいぐるみが登場!" }, - { "LanguageCode": "zh", "Message": "噬血型库娃毛绒玩偶现已登场!" }, - { "LanguageCode": "ko", "Message": "바스카 카밧 플루프 봉제인형을 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "噬血型庫娃毛絨玩偶現已登場!" } + { "LanguageCode": "en", "Message": "Whispers in the Walls Available Now" }, + { "LanguageCode": "fr", "Message": "Dispo : Murmures dans les Murs" }, + { "LanguageCode": "it", "Message": "Sussurri nelle Mura Disponibile Ora" }, + { "LanguageCode": "de", "Message": "'Flüstern in den Wänden' ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "«Susurros en las Paredes» ya está disponible" }, + { "LanguageCode": "pt", "Message": "Atualização \"Sussurros nas Paredes\" Já Disponível" }, + { "LanguageCode": "ru", "Message": "Обновление «Шёпот в стенах» уже доступно" }, + { "LanguageCode": "pl", "Message": "Szepty w Ścianach już dostępne" }, + { "LanguageCode": "uk", "Message": "Оновлення «Шепіт у стінах» уже доступно" }, + { "LanguageCode": "tr", "Message": "Whispers in the Walls Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "アップデート「壁の中の囁き」実装中" }, + { "LanguageCode": "zh", "Message": "《墙中低语》现已推出!" }, + { "LanguageCode": "ko", "Message": "벽 속의 속삭임을 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "《牆中低語》現已登場" } ], - "Prop": "https://store.warframe.com/products/vasca-kavat-floof-plush?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Merch-VascaFloofLaunch", - "Date": { "$date": { "$numberLong": "1699633440000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/2c5efbd804bbcc60de119b82e407489c_1600x900.png", + "Prop": "https://www.warframe.com/whispers-in-the-walls?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-WhispersintheWallsUpdateLaunch", + "Date": { "$date": { "$numberLong": "1702486800000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/08941b26231d2cf366bdfe97b2b46886_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "654e5b5d0d02a46783044c99" }, + "_id": { "$oid": "6579f572c25a5319740dd6b8" }, "Messages": [ - { "LanguageCode": "en", "Message": "Black Friday Merch Sale" }, - { "LanguageCode": "fr", "Message": "Promo sur les Produits Dérivés du Black Friday" }, - { "LanguageCode": "it", "Message": "Offerte Merch Black Friday" }, - { "LanguageCode": "de", "Message": "Black Friday Merch-Angebote" }, - { "LanguageCode": "es", "Message": "Productos en oferta por Black Friday" }, - { "LanguageCode": "pt", "Message": "Promoção de Produtos da Black Friday" }, - { "LanguageCode": "ru", "Message": "Распродажа товаров Чёрной Пятницы" }, - { "LanguageCode": "pl", "Message": "Wyprzedaż Czarnego Piątku" }, - { "LanguageCode": "uk", "Message": "Розпродаж товарів на Чорну п’ятницю" }, - { "LanguageCode": "tr", "Message": "Efsane Cuma Ürün İndirimleri" }, - { "LanguageCode": "ja", "Message": "ブラックフライデーグッズセール" }, - { "LanguageCode": "zh", "Message": "黑色星期五周边商品促销活动" }, - { "LanguageCode": "ko", "Message": "블랙 프라이데이 굿즈 세일" }, - { "LanguageCode": "tc", "Message": "黑色星期五周边商品促销活动" } + { "LanguageCode": "en", "Message": "Get the Initiate Power Pack Now!" }, + { "LanguageCode": "fr", "Message": "Obtenez le Pack d'Initié Renforcé !" }, + { "LanguageCode": "it", "Message": "Ottieni Ora il Pacchetto Initiate Power!" }, + { "LanguageCode": "de", "Message": "Holt euch jetzt das Initiant Macht-Paket!" }, + { "LanguageCode": "es", "Message": "¡Obtén ya el Paquete de Poder Inicial!" }, + { "LanguageCode": "pt", "Message": "Obtenha o Pacote de Poder Inicial agora mesmo!" }, + { "LanguageCode": "ru", "Message": "Получите Первоначальный Набор Усиления сейчас!" }, + { "LanguageCode": "pl", "Message": "Zdobądź teraz Zestaw Mocy Początkującego!" }, + { "LanguageCode": "uk", "Message": "Отримайте набір початківця «Потужність» зараз!" }, + { "LanguageCode": "tr", "Message": "Başlangıç Güç Paketi Şimdi Sahip Ol!" }, + { "LanguageCode": "ja", "Message": "イニシエートパワーパックを今すぐゲット!" }, + { "LanguageCode": "zh", "Message": "立即获取启蒙力量组合包!" }, + { "LanguageCode": "ko", "Message": "이니시에이트 파워 팩을 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "獲取啟蒙威力組合包!" } ], - "Prop": "https://store.warframe.com/collections/clearance?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-Merch-BlackFridaySale", - "Date": { "$date": { "$numberLong": "1699633800000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/6562efad3861076ae401127ed6de907f_1600x900.png", + "Prop": "https://www.warframe.com/buyplatinum?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-InitiatePowerPack", + "Date": { "$date": { "$numberLong": "1702486320000" } }, + "ImageUrl": "https://www-static.warframe.com/images/promo/whispers/power-pack-desktop.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "657a01d262df6147f3052a63" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj #35 : Murmures" }], + "Prop": "https://forums.warframe.com/topic/1374393-mise-%C3%A0-jour-35-murmures-dans-les-murs/", + "Date": { "$date": { "$numberLong": "1702493700000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_12/image.png.e2f1dbd07b876a02af28c0bef20fcfe6.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "657a230aa75056b794032950" }, + "Messages": [{ "LanguageCode": "es", "Message": "ACTUALIZACIÓN 35: SUSURROS EN LAS PAREDES" }], + "Prop": "https://forums.warframe.com/topic/1374551-actualizaci%C3%B3n-35-susurros-en-las-paredes/", + "Date": { "$date": { "$numberLong": "1702503120000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6580a8b524e6af1e160336d2" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Gargoyle’s Cry is Live Now!" }, + { "LanguageCode": "fr", "Message": "Maintenant dispo : Cri de la Gargouille" }, + { "LanguageCode": "it", "Message": "Gargoyle’s Cry è Ora Disponibile!" }, + { "LanguageCode": "de", "Message": "Schrei des Gargoyles ist jetzt live!" }, + { "LanguageCode": "es", "Message": "¡Grito de Gárgola ya está disponible!" }, + { "LanguageCode": "pt", "Message": "O Clamor da Gárgula já está disponível!" }, + { "LanguageCode": "ru", "Message": "«Операция: Плач Горгульи» уже доступна!" }, + { "LanguageCode": "pl", "Message": "Krzyk Gargulca jest już dostępny!" }, + { "LanguageCode": "uk", "Message": "«Плач ґарґуйля» вже у грі!" }, + { "LanguageCode": "tr", "Message": "Gargoyle'ın Feryadı Şimdi Sizlerle!" }, + { "LanguageCode": "ja", "Message": "「ガーゴイルの叫び」作戦開催中!" }, + { "LanguageCode": "ko", "Message": "가고일의 외침이 지금 시작되었습니다!" }, + { "LanguageCode": "tc", "Message": "《嵌合長嘯》行動現已登場!" } + ], + "Prop": "https://www.warframe.com/news/operation-gargoyles-cry?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-OperationGargoylesCryLaunch", + "Date": { "$date": { "$numberLong": "1702930320000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/d9919b30fed2f5a5376d01a5ae7d2b05.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6581bf424c4cd7a561075388" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Clan Rank Decrease Temporarily Disabled" }], + "Prop": "https://forums.warframe.com/topic/1376645-psa-clan-rank-locking-for-operation-gargolyes-cry/", + "Date": { "$date": { "$numberLong": "1703001840000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6585c0d16a6b17dcee047787" }, + "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.0.6" }], + "Prop": "https://forums.warframe.com/topic/1377693-whispers-in-the-walls-hotfix-3506/", + "Date": { "$date": { "$numberLong": "1703264400000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "658607bcce34ebee6b09b3a3" }, + "Messages": [{ "LanguageCode": "en", "Message": "Cross Platform Save: Mid-Release Review (re-opens in JANUARY)" }], + "Prop": "https://forums.warframe.com/topic/1377846-cross-platform-save-mid-release-review-re-opens-in-january/", + "Date": { "$date": { "$numberLong": "1703282520000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6586f67449d74955a40f7baf" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[PSA] Sauv. Cross-Platform : retour en janvier" }], + "Prop": "https://forums.warframe.com/topic/1378022-psa-sauvegarde-cross-platform-reprendra-en-janvier/", + "Date": { "$date": { "$numberLong": "1703343660000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6586fb16a650b8ad1f0f4802" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Adieu 2023, on se revoit en 2024 !" }], + "Prop": "https://forums.warframe.com/topic/1378027-adieu-2023-on-se-revoit-en-2024/", + "Date": { "$date": { "$numberLong": "1703344860000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65873a2755795a7ee60e804d" }, + "Messages": [{ "LanguageCode": "es", "Message": " Susurros en las Paredes: Revisión 35.0.5 + 35.0.6" }], + "Prop": "https://forums.warframe.com/topic/1378072-susurros-en-las-paredes-revisi%C3%B3n-3505-3506/", + "Date": { "$date": { "$numberLong": "1703361000000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65883db88cb3f2c420048454" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Міжплатформне збереження: відкривається знову в січні 2024" }], + "Prop": "https://forums.warframe.com/topic/1378222-%D0%BC%D1%96%D0%B6%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%BD%D0%B5-%D0%B7%D0%B1%D0%B5%D1%80%D0%B5%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F-%D0%B2%D1%96%D0%B4%D0%BA%D1%80%D0%B8%D0%B2%D0%B0%D1%94%D1%82%D1%8C%D1%81%D1%8F-%D0%B7%D0%BD%D0%BE%D0%B2%D1%83-%D0%B2-%D1%81%D1%96%D1%87%D0%BD%D1%96-2024/", + "Date": { "$date": { "$numberLong": "1703427480000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6597048052f914e2df0b8d32" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Prime Resurgence Event: Rotation 2" }, + { "LanguageCode": "fr", "Message": "Événement Résurgence Prime : 2ème rotation" }, + { "LanguageCode": "it", "Message": "Evento Risorgenza Prime: Rotazione 2" }, + { "LanguageCode": "de", "Message": "Prime Rückkehr Event: Rotation 2" }, + { "LanguageCode": "es", "Message": "Evento de Resurgimiento Prime: Rotación 2" }, + { "LanguageCode": "pt", "Message": "Evento da Ressurgência Prime: 2ª Rotação" }, + { "LanguageCode": "ru", "Message": "Событие «Возрождение Прайм»: Ротация 2" }, + { "LanguageCode": "pl", "Message": "Odrodzenie Prime: Rotacja 2" }, + { "LanguageCode": "uk", "Message": "Подія прайм-відродження: друга ротація" }, + { "LanguageCode": "tr", "Message": "Prime Diriliş Etkinliği: Rotasyon 2" }, + { "LanguageCode": "ja", "Message": "Prime Resurgence 特別イベント:ローテーション2" }, + { "LanguageCode": "zh", "Message": "Prime 重生活动:轮换 2" }, + { "LanguageCode": "ko", "Message": "프라임 리서전스 이벤트: 로테이션 2" }, + { "LanguageCode": "tc", "Message": "Prime Resurgence 活動:輪替 2" } + ], + "Prop": "https://www.warframe.com/news/prime-resurgence-event-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-PrimeResurgenceR2Event2024", + "Date": { "$date": { "$numberLong": "1704394320000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/9bf82d4a590a069b219c01544464d166_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6598395d0433a1c66c070c45" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Grendel Prime Access Ending Soon" }, + { "LanguageCode": "fr", "Message": "Le Prime Access Grendel Prime se termine bientôt" }, + { "LanguageCode": "it", "Message": "L'Accesso Grendel Prime Terminerà Presto" }, + { "LanguageCode": "de", "Message": "Grendel Prime Access endet bald" }, + { "LanguageCode": "es", "Message": "Prime Access de Grendel está por terminar" }, + { "LanguageCode": "pt", "Message": "O Prime Access do Grendel Prime terminará em breve" }, + { "LanguageCode": "ru", "Message": "Доступ Грендель Прайм скоро закончится" }, + { "LanguageCode": "pl", "Message": "Grendel Prime Access wkrótce się skończy" }, + { "LanguageCode": "uk", "Message": "Доступ до Ґренделя-прайм невдовзі завершується" }, + { "LanguageCode": "tr", "Message": "Grendel Prime Access Yakında Sona Eriyor" }, + { "LanguageCode": "ja", "Message": "Grendel Prime Accessが近日終了" }, + { "LanguageCode": "zh", "Message": "Grendel Prime Access 即将结束" }, + { "LanguageCode": "ko", "Message": "그렌델 프라임 액세스가 곧 종료됩니다" }, + { "LanguageCode": "tc", "Message": "Grendel Prime Access 即將結束" } + ], + "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-GrendelPrimeEndingSoon", + "Date": { "$date": { "$numberLong": "1704473220000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fc9e09a4ca79eddd55383762476c71e1_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65983e32a798c19dd4082312" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Full Schedule: Void Corruption Weekend Alerts" }, + { "LanguageCode": "fr", "Message": "Programme : Alertes Corruption du Néant (WE)" }, + { "LanguageCode": "it", "Message": "Programmazione Completa: Allerte del Weekend Corruzione Void" }, + { "LanguageCode": "de", "Message": "Vollständiger Zeitplan: Void-Korruption Alarmierungen an den Wochenenden" }, + { "LanguageCode": "es", "Message": "Calendario completo: Alertas de fin de semana de Corrupción del Vacío" }, + { "LanguageCode": "pt", "Message": "Programação Completa: Alertas de Fim de Semana de Corrupção do Void" }, + { "LanguageCode": "ru", "Message": "Полное расписание: «Сигналы Тревоги: Искажение Бездны»" }, + { "LanguageCode": "pl", "Message": "Pełen harmonogram weekendowych Alarmów Skażenia Pustki" }, + { "LanguageCode": "uk", "Message": "Повний розклад: виклики на вихідних «Викривлення Порожнечі»" }, + { "LanguageCode": "tr", "Message": "Tam Program: Void Kirliliği Haftasonu Alert Görevleri" }, + { "LanguageCode": "ja", "Message": "イベントスケジュール:Voidコラプトウィークエンドアラート" }, + { "LanguageCode": "zh", "Message": "完整时间表:虚空堕落周末警报" }, + { "LanguageCode": "ko", "Message": "전체 일정: 보이드 커럽션 주말 얼럿" }, + { "LanguageCode": "tc", "Message": "完整時間表:虛空墮落週末警報" } + ], + "Prop": "https://www.warframe.com/news/void-corruption-alerts", + "Date": { "$date": { "$numberLong": "1704475980000" } }, + "EventStartDate": { "$date": { "$numberLong": "1704438000000" } }, + "EventEndDate": { "$date": { "$numberLong": "1707116400000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/09e25944d5374ec6e372c7ec7c297d67_1600x900.png", "Priority": false, "MobileOnly": false } ], "Goals": [ { - "_id": { "$oid": "654a5058c757487cdb11824f" }, - "Activation": { "$date": { "$numberLong": "1699372800000" } }, - "Expiry": { "$date": { "$numberLong": "1700582400000" } }, - "Tag": "InfestedPlains", - "RegionIdx": 2, - "Faction": "FC_INFESTATION", - "Desc": "/Lotus/Language/InfestedPlainsEvent/InfestedPlainsBountyName", - "ToolTip": "/Lotus/Language/InfestedPlainsEvent/InfestedPlainsBountyDesc", - "Icon": "/Lotus/Materials/Emblems/PlagueStarEventBadge_e.png", - "JobAffiliationTag": "EventSyndicate", - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/InfestedPlainsBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/PlagueStarTableRewards", - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [50, 300, 100, 575] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/InfestedPlainsBountyAdvanced", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/PlagueStarTableRewards", - "minEnemyLevel": 55, - "maxEnemyLevel": 65, - "xpAmounts": [200, 1000, 300, 1700], - "requiredItems": ["/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventIngredient", "/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventClanIngredient"], - "useRequiredItemsAsMiscItemFee": true - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/InfestedPlainsBountySteelPath", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/PlagueStarTableSteelPathRewards", - "minEnemyLevel": 100, - "maxEnemyLevel": 110, - "xpAmounts": [200, 1100, 400, 2100], - "masteryReq": 10, - "requiredItems": ["/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventIngredient", "/Lotus/StoreItems/Types/Items/Eidolon/InfestedEventClanIngredient"], - "useRequiredItemsAsMiscItemFee": true - } - ], - "Transmission": "/Lotus/Sounds/Dialog/PlainsMeteorLeadUp/LeadUp/DLeadUp0021Lotus", - "InstructionalItem": "/Lotus/Types/StoreItems/Packages/PlagueStarEventStoreItem" + "_id": { "$oid": "658094c3a929ee19cc7aa4ce" }, + "Activation": { "$date": { "$numberLong": "1702926000000" } }, + "Expiry": { "$date": { "$numberLong": "1705345200000" } }, + "Tag": "EntratiEvent", + "Faction": "FC_MITW", + "Desc": "/Lotus/Language/EntratiLab/EntratiGeneral/EntratiEventName", + "ToolTip": "/Lotus/Language/EntratiLab/EntratiGeneral/EntratiEventDesc", + "Icon": "/Lotus/Interface/Icons/WorldStatePanel/GargoylesCryEventBadge.png", + "InstructionalItem": "/Lotus/Types/StoreItems/Packages/GargoylesCryEventStoreItem", + "Community": true, + "Count": 0, + "Goal": 100, + "HealthPct": 1, + "ScoreLocTag": "/Lotus/Language/EntratiLab/EntratiGeneral/EntratiEventMurmurNodes" } ], "Alerts": [ { - "_id": { "$oid": "6543f40fa0ae5796cf06c709" }, - "Activation": { "$date": { "$numberLong": "1699034400000" } }, - "Expiry": { "$date": { "$numberLong": "1700247600000" } }, + "_id": { "$oid": "6570f6593dd37a164e0e069e" }, + "Activation": { "$date": { "$numberLong": "1704470400000" } }, + "Expiry": { "$date": { "$numberLong": "1704729600000" } }, "MissionInfo": { - "location": "SolNode43", - "missionType": "MT_TERRITORY", - "faction": "FC_CORPUS", - "difficulty": 1, - "missionReward": { "credits": 10000, "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/Forma", "ItemCount": 3 }] }, - "levelOverride": "/Lotus/Levels/Proc/Corpus/CorpusOutpostInterception", - "enemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadDefenseB", - "minEnemyLevel": 20, - "maxEnemyLevel": 30, - "descText": "/Lotus/Language/Alerts/TennoUnitedAlert", - "maxWaveNum": 2 - }, - "Tag": "LotusGift", - "ForceUnlock": true - }, - { - "_id": { "$oid": "6543f47b76f923206c0bda1a" }, - "Activation": { "$date": { "$numberLong": "1699034400000" } }, - "Expiry": { "$date": { "$numberLong": "1700247600000" } }, - "MissionInfo": { - "location": "SolNode164", + "location": "SolNode402", "missionType": "MT_DEFENSE", - "faction": "FC_INFESTATION", + "faction": "FC_OROKIN", "difficulty": 1, - "missionReward": { "credits": 10000, "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/FormaUmbra", "ItemCount": 1 }] }, - "levelOverride": "/Lotus/Levels/Proc/Infestation/InfestedCorpusShipDefense", - "enemySpec": "/Lotus/Types/Game/EnemySpecs/InfestedDefenseB", - "minEnemyLevel": 20, - "maxEnemyLevel": 30, - "descText": "/Lotus/Language/Alerts/TennoUnitedAlert", + "missionReward": { "credits": 30000, "items": ["/Lotus/StoreItems/Upgrades/Mods/Warframe/DualStat/CorruptedEfficiencyDurationWarframe"] }, + "levelOverride": "/Lotus/Levels/Proc/Orokin/OrokinTowerDefense", + "enemySpec": "/Lotus/Types/Game/EnemySpecs/OrokinDefenseSquadB", + "minEnemyLevel": 10, + "maxEnemyLevel": 15, "maxWaveNum": 10 - }, - "Tag": "LotusGift" + } } ], "Sorties": [ { - "_id": { "$oid": "654faf8dabd662d926f8b75d" }, - "Activation": { "$date": { "$numberLong": "1699722000000" } }, - "Expiry": { "$date": { "$numberLong": "1699808400000" } }, + "_id": { "$oid": "6598320df46f603a49ca4362" }, + "Activation": { "$date": { "$numberLong": "1704474000000" } }, + "Expiry": { "$date": { "$numberLong": "1704560400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 20945, - "Boss": "SORTIE_BOSS_INFALAD", + "Seed": 35109, + "Boss": "SORTIE_BOSS_RUK", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_SECONDARY_ONLY", "node": "SolNode24", "tileset": "GrineerForestTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode48", "tileset": "CorpusOutpostTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_MAGNETIC", "node": "SolNode166", "tileset": "InfestedCorpusShipTileset" } + { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode96", "tileset": "GrineerGalleonTileset" }, + { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode748", "tileset": "GrineerFortressTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SNIPER_ONLY", "node": "SolNode46", "tileset": "GrineerSettlementTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "654828fda5da5fcb5331f09c" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, + "_id": { "$oid": "6591fcfddcd072b88de858a7" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 20998, - "Boss": "SORTIE_BOSS_BOREAL", + "Seed": 46899, + "Boss": "SORTIE_BOSS_NIRA", "Missions": [ - { "missionType": "MT_EXTERMINATION", "node": "SolNode59" }, - { "missionType": "MT_DEFENSE", "node": "SolNode75" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } + { "missionType": "MT_SABOTAGE", "node": "SolNode121" }, + { "missionType": "MT_TERRITORY", "node": "SolNode10" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "654fb2d5935447c35c5a0ae5" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a7785e" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "ArbitersSyndicate", - "Seed": 20945, - "Nodes": ["SolNode226", "SolNode123", "SolNode209", "SolNode85", "SolNode4", "SolNode45", "SolNode400"] + "Seed": 35109, + "Nodes": ["SolNode27", "SolNode11", "SolNode18", "SettlementNode1", "SolNode2", "SolNode146", "SolNode217"] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0ae6" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a7785f" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 56908, - "Nodes": ["SolNode119", "SolNode23", "SolNode14", "SolNode25", "SolNode412", "SolNode76", "SolNode49"] + "Seed": 41134, + "Nodes": ["SolNode226", "SolNode30", "SolNode711", "SolNode214", "SolNode162", "SolNode102", "SolNode67"] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0ae7" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77860" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "NecraloidSyndicate", - "Seed": 48195, + "Seed": 80261, "Nodes": [] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0ae8" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77861" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "EventSyndicate", - "Seed": 81647, + "Seed": 29248, "Nodes": [] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0ae9" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77862" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "KahlSyndicate", - "Seed": 19395, + "Seed": 57839, "Nodes": [] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0aea" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 7425, - "Nodes": ["SolNode16", "SolNode223", "SolNode139", "SettlementNode2", "SolNode39", "SolNode2", "SolNode205"] - }, - { - "_id": { "$oid": "654fb2d5935447c35c5a0aeb" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77864" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "QuillsSyndicate", - "Seed": 101, + "Seed": 56241, "Nodes": [] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0aec" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77863" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 82392, + "Nodes": ["SolNode101", "SolNode39", "SettlementNode14", "SolNode100", "SolNode189", "SolNode140", "SolNode205"] + }, + { + "_id": { "$oid": "659835564c9f6830d8a77865" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "PerrinSyndicate", - "Seed": 58090, - "Nodes": ["SolNode224", "SolNode66", "SolNode710", "SolNode20", "SolNode215", "SettlementNode12", "SolNode97"] + "Seed": 18654, + "Nodes": ["SolNode119", "SolNode45", "SolNode141", "SolNode73", "SolNode403", "SolNode181", "SolNode61"] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0aed" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77866" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 66815, + "Seed": 27071, "Nodes": [] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0aee" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 71306, - "Nodes": [] - }, - { - "_id": { "$oid": "654fb2d5935447c35c5a0aef" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77868" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 43673, + "Seed": 23888, "Nodes": [] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0af0" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77867" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 7591, + "Nodes": [] + }, + { + "_id": { "$oid": "659835564c9f6830d8a77869" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 26200, + "Seed": 99726, "Nodes": [] }, { - "_id": { "$oid": "654fb2d5935447c35c5a0af1" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 1910, - "Nodes": [] - }, - { - "_id": { "$oid": "654fb2d5935447c35c5a0af2" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 83458, - "Nodes": [] - }, - { - "_id": { "$oid": "654fb2d5935447c35c5a0af3" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 68685, - "Nodes": [] - }, - { - "_id": { "$oid": "654fb2d5935447c35c5a0af4" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 62837, - "Nodes": [] - }, - { - "_id": { "$oid": "654fb2d6935447c35c5a0af5" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 67457, - "Nodes": [] - }, - { - "_id": { "$oid": "654fb2d6935447c35c5a0af6" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a7786f" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 35940, + "Seed": 69343, "Nodes": [] }, { - "_id": { "$oid": "654fb2d6935447c35c5a0af7" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a7786d" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 55294, + "Nodes": [] + }, + { + "_id": { "$oid": "659835564c9f6830d8a7786e" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 11252, + "Nodes": [] + }, + { + "_id": { "$oid": "659835564c9f6830d8a7786c" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 99928, + "Nodes": [] + }, + { + "_id": { "$oid": "659835564c9f6830d8a7786a" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 77391, + "Nodes": [] + }, + { + "_id": { "$oid": "659835564c9f6830d8a7786b" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 39908, + "Nodes": [] + }, + { + "_id": { "$oid": "659835564c9f6830d8a77870" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 95754, + "Seed": 82965, "Nodes": [] }, { - "_id": { "$oid": "654fb2d6935447c35c5a0af8" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77871" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 37335, + "Seed": 79586, "Nodes": [] }, { - "_id": { "$oid": "654fb2d6935447c35c5a0af9" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77872" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "RedVeilSyndicate", - "Seed": 69629, - "Nodes": ["SolNode22", "SolNode225", "SolNode79", "SolNode214", "SolNode189", "SolNode30", "SolNode406"] + "Seed": 49638, + "Nodes": ["SolNode225", "SolNode41", "SettlementNode2", "SolNode149", "SolNode48", "SolNode64", "SolNode126"] }, { - "_id": { "$oid": "654fb2d6935447c35c5a0afa" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 92938, - "Nodes": [] - }, - { - "_id": { "$oid": "654fb2d6935447c35c5a0afb" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, + "_id": { "$oid": "659835564c9f6830d8a77874" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, "Tag": "VoxSyndicate", - "Seed": 38402, + "Seed": 27464, "Nodes": [] }, { - "_id": { "$oid": "654fb2d6935447c35c5a0afc" }, - "Activation": { "$date": { "$numberLong": "1699721941149" } }, - "Expiry": { "$date": { "$numberLong": "1699808340000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 93407, - "Nodes": ["SolNode130", "SolNode107", "SolNode217", "SolNode126", "SolNode59", "SolNode57", "SettlementNode1"] + "_id": { "$oid": "659835564c9f6830d8a77873" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 72638, + "Nodes": [] }, { - "_id": { "$oid": "6550e07a0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1699799162362" } }, - "Expiry": { "$date": { "$numberLong": "1699808161236" } }, + "_id": { "$oid": "659835564c9f6830d8a77875" }, + "Activation": { "$date": { "$numberLong": "1704473942005" } }, + "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 59732, + "Nodes": ["SolNode14", "SolNode63", "SolNode706", "SettlementNode12", "SolNode216", "SolNode57", "SolNode22"] + }, + { + "_id": { "$oid": "659960a80000000000000004" }, + "Activation": { "$date": { "$numberLong": "1704550568258" } }, + "Expiry": { "$date": { "$numberLong": "1704559567132" } }, + "Tag": "EntratiLabSyndicate", + "Seed": 47257, + "Nodes": [] + }, + { + "_id": { "$oid": "659960a80000000000000002" }, + "Activation": { "$date": { "$numberLong": "1704550568258" } }, + "Expiry": { "$date": { "$numberLong": "1704559567132" } }, "Tag": "EntratiSyndicate", - "Seed": 84413, + "Seed": 47257, "Nodes": [], "Jobs": [ { @@ -823,10 +732,10 @@ "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [4, 4, 4] + "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", "masteryReq": 1, "minEnemyLevel": 15, @@ -834,7 +743,7 @@ "xpAmounts": [10, 10, 10] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", "masteryReq": 5, "minEnemyLevel": 25, @@ -844,23 +753,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 28] + "xpAmounts": [16, 16, 16, 25] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 41] + "xpAmounts": [22, 22, 22, 22, 43] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -897,55 +806,55 @@ ] }, { - "_id": { "$oid": "6550e07a0000000000000007" }, - "Activation": { "$date": { "$numberLong": "1699799162362" } }, - "Expiry": { "$date": { "$numberLong": "1699808161236" } }, + "_id": { "$oid": "659960a80000000000000008" }, + "Activation": { "$date": { "$numberLong": "1704550568258" } }, + "Expiry": { "$date": { "$numberLong": "1704559567132" } }, "Tag": "CetusSyndicate", - "Seed": 84413, + "Seed": 47257, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [340, 340, 340] + "xpAmounts": [490, 490, 490] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [700, 700, 700] + "xpAmounts": [630, 630, 630] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [620, 620, 620, 910] + "xpAmounts": [570, 570, 570, 830] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [620, 620, 620, 620, 1210] + "xpAmounts": [600, 600, 600, 600, 1170] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [720, 720, 720, 720, 1410] + "xpAmounts": [700, 700, 700, 700, 1380] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -953,65 +862,65 @@ "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [810, 810, 810, 810, 1590] + "xpAmounts": [820, 820, 820, 820, 1610] } ] }, { - "_id": { "$oid": "6550e07a0000000000000023" }, - "Activation": { "$date": { "$numberLong": "1699799162362" } }, - "Expiry": { "$date": { "$numberLong": "1699808161236" } }, + "_id": { "$oid": "659960a80000000000000024" }, + "Activation": { "$date": { "$numberLong": "1704550568258" } }, + "Expiry": { "$date": { "$numberLong": "1704559567132" } }, "Tag": "SolarisSyndicate", - "Seed": 84413, + "Seed": 47257, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [340, 340, 340] + "xpAmounts": [420, 420, 420] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [590, 590, 590] + "xpAmounts": [620, 620, 620] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [570, 570, 570, 840] + "xpAmounts": [670, 670, 670, 980] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobAmbush", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [600, 600, 600, 600, 1180] + "xpAmounts": [600, 600, 600, 600, 1170] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [760, 760, 760, 760, 1490] + "xpAmounts": [690, 690, 690, 690, 1360] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobRecovery", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -1024,263 +933,282 @@ "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [810, 810, 810, 810, 1600] + "xpAmounts": [770, 770, 770, 770, 1510] } ] }, { - "_id": { "$oid": "6550e07a0000000000000027" }, - "Activation": { "$date": { "$numberLong": "1699799162362" } }, - "Expiry": { "$date": { "$numberLong": "1699808161236" } }, + "_id": { "$oid": "659960a80000000000000028" }, + "Activation": { "$date": { "$numberLong": "1704550568258" } }, + "Expiry": { "$date": { "$numberLong": "1704559567132" } }, "Tag": "ZarimanSyndicate", - "Seed": 84413, + "Seed": 47257, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "6550d5ed467b39cd26619fd3" }, + "_id": { "$oid": "6599595d25bdc25c1ecedbc6" }, "Region": 13, - "Seed": 8999, - "Activation": { "$date": { "$numberLong": "1699796461223" } }, - "Expiry": { "$date": { "$numberLong": "1699802079700" } }, + "Seed": 88339, + "Activation": { "$date": { "$numberLong": "1704548701758" } }, + "Expiry": { "$date": { "$numberLong": "1704555758279" } }, "Node": "SolNode205", "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "6550d6a28bef104892f59c0a" }, - "Region": 13, - "Seed": 43264, - "Activation": { "$date": { "$numberLong": "1699796642084" } }, - "Expiry": { "$date": { "$numberLong": "1699803713775" } }, - "Node": "SolNode215", - "MissionType": "MT_INTEL", "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "6550d6a28bef104892f59c0b" }, - "Region": 8, - "Seed": 55313, - "Activation": { "$date": { "$numberLong": "1699796642084" } }, - "Expiry": { "$date": { "$numberLong": "1699802469360" } }, - "Node": "SolNode84", - "MissionType": "MT_INTEL", + "_id": { "$oid": "6599595d25bdc25c1ecedbc7" }, + "Region": 7, + "Seed": 89653, + "Activation": { "$date": { "$numberLong": "1704548701758" } }, + "Expiry": { "$date": { "$numberLong": "1704555378519" } }, + "Node": "SolNode64", + "MissionType": "MT_TERRITORY", "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "6550d845e1909b3e90c77663" }, + "_id": { "$oid": "659959d62408c1087e9abd91" }, "Region": 19, - "Seed": 49516, - "Activation": { "$date": { "$numberLong": "1699797061375" } }, - "Expiry": { "$date": { "$numberLong": "1699800818115" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", + "Seed": 42602, + "Activation": { "$date": { "$numberLong": "1704548822127" } }, + "Expiry": { "$date": { "$numberLong": "1704555475986" } }, + "Node": "SolNode744", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "659963ad419074eadcc36f6d" }, + "Region": 19, + "Seed": 64193, + "Activation": { "$date": { "$numberLong": "1704551341949" } }, + "Expiry": { "$date": { "$numberLong": "1704557390513" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "6550d9ad079cd43578f9b6ed" }, - "Region": 2, - "Seed": 25432, - "Activation": { "$date": { "$numberLong": "1699797421713" } }, - "Expiry": { "$date": { "$numberLong": "1699802429943" } }, - "Node": "SolNode23", + "_id": { "$oid": "659963ad419074eadcc36f6e" }, + "Region": 19, + "Seed": 71201, + "Activation": { "$date": { "$numberLong": "1704551341949" } }, + "Expiry": { "$date": { "$numberLong": "1704558487644" } }, + "Node": "SolNode743", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "6599646199349b9f72d4c608" }, + "Region": 5, + "Seed": 63813, + "Activation": { "$date": { "$numberLong": "1704551521372" } }, + "Expiry": { "$date": { "$numberLong": "1704557321450" } }, + "Node": "SolNode88", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "6599646199349b9f72d4c609" }, + "Region": 16, + "Seed": 98495, + "Activation": { "$date": { "$numberLong": "1704551521372" } }, + "Expiry": { "$date": { "$numberLong": "1704557081572" } }, + "Node": "SettlementNode12", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "6599646199349b9f72d4c60a" }, + "Region": 10, + "Seed": 21656, + "Activation": { "$date": { "$numberLong": "1704551521372" } }, + "Expiry": { "$date": { "$numberLong": "1704556608408" } }, + "Node": "SolNode131", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65996a01002c9bd2a8030751" }, + "Region": 7, + "Seed": 7737, + "Activation": { "$date": { "$numberLong": "1704552961863" } }, + "Expiry": { "$date": { "$numberLong": "1704558819693" } }, + "Node": "SolNode122", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "65996a01002c9bd2a8030752" }, + "Region": 13, + "Seed": 77774, + "Activation": { "$date": { "$numberLong": "1704552961863" } }, + "Expiry": { "$date": { "$numberLong": "1704558976409" } }, + "Node": "SolNode209", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "65996b6922a7b7cdd3063406" }, + "Region": 4, + "Seed": 55473, + "Activation": { "$date": { "$numberLong": "1704553321777" } }, + "Expiry": { "$date": { "$numberLong": "1704559417204" } }, + "Node": "SolNode68", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "65996b6922a7b7cdd3063407" }, + "Region": 3, + "Seed": 8227, + "Activation": { "$date": { "$numberLong": "1704553321777" } }, + "Expiry": { "$date": { "$numberLong": "1704559708597" } }, + "Node": "SolNode85", "MissionType": "MT_TERRITORY", "Modifier": "VoidT1" }, { - "_id": { "$oid": "6550d9ad079cd43578f9b6ee" }, + "_id": { "$oid": "65996b6922a7b7cdd3063408" }, + "Region": 3, + "Seed": 33892, + "Activation": { "$date": { "$numberLong": "1704553321777" } }, + "Expiry": { "$date": { "$numberLong": "1704558935177" } }, + "Node": "SolNode89", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "65996b6922a7b7cdd3063409" }, + "Region": 2, + "Seed": 11544, + "Activation": { "$date": { "$numberLong": "1704553321777" } }, + "Expiry": { "$date": { "$numberLong": "1704557337139" } }, + "Node": "SolNode23", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "65996be1095ba09968e5c293" }, "Region": 15, - "Seed": 94235, - "Activation": { "$date": { "$numberLong": "1699797421713" } }, - "Expiry": { "$date": { "$numberLong": "1699804216526" } }, - "Node": "SolNode405", + "Seed": 52866, + "Activation": { "$date": { "$numberLong": "1704553441173" } }, + "Expiry": { "$date": { "$numberLong": "1704557944185" } }, + "Node": "SolNode402", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65996be1095ba09968e5c294" }, + "Region": 12, + "Seed": 11006, + "Activation": { "$date": { "$numberLong": "1704553441173" } }, + "Expiry": { "$date": { "$numberLong": "1704557156372" } }, + "Node": "SolNode196", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65996cd141e495c8170329f1" }, + "Region": 6, + "Seed": 83840, + "Activation": { "$date": { "$numberLong": "1704553681856" } }, + "Expiry": { "$date": { "$numberLong": "1704559075854" } }, + "Node": "SolNode67", + "MissionType": "MT_INTEL", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "65996cd141e495c8170329f2" }, + "Region": 10, + "Seed": 94654, + "Activation": { "$date": { "$numberLong": "1704553681856" } }, + "Expiry": { "$date": { "$numberLong": "1704559395779" } }, + "Node": "SolNode141", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "65996cd141e495c8170329f3" }, + "Region": 16, + "Seed": 59379, + "Activation": { "$date": { "$numberLong": "1704553681856" } }, + "Expiry": { "$date": { "$numberLong": "1704558778504" } }, + "Node": "SettlementNode14", + "MissionType": "MT_INTEL", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "65996d0e7e8c0b39805f9d2f" }, + "Region": 15, + "Seed": 67983, + "Activation": { "$date": { "$numberLong": "1704553742063" } }, + "Expiry": { "$date": { "$numberLong": "1704558731665" } }, + "Node": "SolNode409", "MissionType": "MT_SURVIVAL", "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "6550d9ad079cd43578f9b6ef" }, + "_id": { "$oid": "65996d0e7e8c0b39805f9d30" }, "Region": 11, - "Seed": 8445, - "Activation": { "$date": { "$numberLong": "1699797421713" } }, - "Expiry": { "$date": { "$numberLong": "1699803984227" } }, - "Node": "SolNode164", + "Seed": 74682, + "Activation": { "$date": { "$numberLong": "1704553742063" } }, + "Expiry": { "$date": { "$numberLong": "1704557791586" } }, + "Node": "SolNode173", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "65996d0e7e8c0b39805f9d31" }, + "Region": 9, + "Seed": 15538, + "Activation": { "$date": { "$numberLong": "1704553742063" } }, + "Expiry": { "$date": { "$numberLong": "1704557868519" } }, + "Node": "SolNode72", "MissionType": "MT_DEFENSE", "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "6550dd6d89297b4edd0ab591" }, - "Region": 15, - "Seed": 13169, - "Activation": { "$date": { "$numberLong": "1699798381217" } }, - "Expiry": { "$date": { "$numberLong": "1699805459419" } }, - "Node": "SolNode407", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "6550dd6d89297b4edd0ab592" }, - "Region": 11, - "Seed": 64688, - "Activation": { "$date": { "$numberLong": "1699798381217" } }, - "Expiry": { "$date": { "$numberLong": "1699804918952" } }, - "Node": "SolNode175", - "MissionType": "MT_HIVE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "6550e12d77680bffc97fff94" }, - "Region": 10, - "Seed": 32976, - "Activation": { "$date": { "$numberLong": "1699799341931" } }, - "Expiry": { "$date": { "$numberLong": "1699803723656" } }, - "Node": "SolNode141", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "6550e12e77680bffc97fff95" }, - "Region": 16, - "Seed": 95642, - "Activation": { "$date": { "$numberLong": "1699799341931" } }, - "Expiry": { "$date": { "$numberLong": "1699805538261" } }, - "Node": "SettlementNode1", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "6550e2597c4ec4698c00444e" }, + "_id": { "$oid": "659972aebdefee45d6c87d6b" }, "Region": 19, - "Seed": 59447, - "Activation": { "$date": { "$numberLong": "1699799641761" } }, - "Expiry": { "$date": { "$numberLong": "1699804786535" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", + "Seed": 5511, + "Activation": { "$date": { "$numberLong": "1704555182038" } }, + "Expiry": { "$date": { "$numberLong": "1704561187882" } }, + "Node": "SolNode742", + "MissionType": "MT_DEFENSE", "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "6550e2597c4ec4698c00444f" }, - "Region": 19, - "Seed": 91439, - "Activation": { "$date": { "$numberLong": "1699799641761" } }, - "Expiry": { "$date": { "$numberLong": "1699805160813" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "6550e3c1c049d0fa328f0521" }, - "Region": 3, - "Seed": 6557, - "Activation": { "$date": { "$numberLong": "1699800001532" } }, - "Expiry": { "$date": { "$numberLong": "1699803951263" } }, - "Node": "SolNode75", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "6550e3c1c049d0fa328f0522" }, - "Region": 4, - "Seed": 54408, - "Activation": { "$date": { "$numberLong": "1699800001532" } }, - "Expiry": { "$date": { "$numberLong": "1699806966377" } }, - "Node": "SolNode14", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "6550e3fdfcddd45807588003" }, - "Region": 10, - "Seed": 15144, - "Activation": { "$date": { "$numberLong": "1699800061579" } }, - "Expiry": { "$date": { "$numberLong": "1699804353480" } }, - "Node": "SolNode140", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "6550e5de9fd64a593bd70001" }, - "Region": 19, - "Seed": 67074, - "Activation": { "$date": { "$numberLong": "1699800542134" } }, - "Expiry": { "$date": { "$numberLong": "1699806483750" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT5", - "Hard": true } ], "GlobalUpgrades": [], "FlashSales": [ { - "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1735689600000" } }, "ShowInMarket": true, "HideFromMarket": false, - "SupporterPack": false, + "SupporterPack": true, "Discount": 0, "RegularOverride": 0, - "PremiumOverride": 20, + "PremiumOverride": 1, "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 90, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 325, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 430, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" + "BogoGet": 0 }, { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "EndDate": { "$date": { "$numberLong": "1735689600000" } }, "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": true, @@ -1290,102 +1218,6 @@ "BogoBuy": 0, "BogoGet": 0 }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "StartDate": { "$date": { "$numberLong": "1662422400000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 260, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 195, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 35, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 80, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 165, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, @@ -1399,571 +1231,304 @@ "EndDate": { "$date": { "$numberLong": "1719838800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "ShowInMarket": true, - "HideFromMarket": false, + "HideFromMarket": true, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696266000000" } }, - "EndDate": { "$date": { "$numberLong": "1704038340000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696266000000" } }, - "EndDate": { "$date": { "$numberLong": "1704038340000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696266000000" } }, - "EndDate": { "$date": { "$numberLong": "1704038340000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704038340000" } } - }, - { - "TypeName": "/Lotus/Powersuits/EntratiMech/NechroTech", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 25, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 281, + "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696528800000" } }, - "EndDate": { "$date": { "$numberLong": "1699984800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Sigils/ConqueraSigil", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021C", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021A", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022A", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/Conquera2022Ephemera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1696946400000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1704081540000" } } + "StartDate": { "$date": { "$numberLong": "1701103800000" } }, + "EndDate": { "$date": { "$numberLong": "1893516600000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "ShowInMarket": true, - "HideFromMarket": false, + "HideFromMarket": true, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1696941480000" } }, - "EndDate": { "$date": { "$numberLong": "1894365480000" } } + "StartDate": { "$date": { "$numberLong": "1701103860000" } }, + "EndDate": { "$date": { "$numberLong": "1893516660000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", + "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", "ShowInMarket": true, "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1702380180000" } }, + "EndDate": { "$date": { "$numberLong": "1736767380000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 65, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1702381620000" } }, + "EndDate": { "$date": { "$numberLong": "1706788020000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackC", + "ShowInMarket": true, + "HideFromMarket": true, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1697542380000" } }, - "EndDate": { "$date": { "$numberLong": "1700146800000" } } + "StartDate": { "$date": { "$numberLong": "1704187800000" } }, + "EndDate": { "$date": { "$numberLong": "1735723800000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem", + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", "ShowInMarket": true, - "HideFromMarket": false, + "HideFromMarket": true, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1697542380000" } }, - "EndDate": { "$date": { "$numberLong": "1700146800000" } } + "StartDate": { "$date": { "$numberLong": "1704187920000" } }, + "EndDate": { "$date": { "$numberLong": "1735723920000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache02", + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", "ShowInMarket": true, - "HideFromMarket": false, + "HideFromMarket": true, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache03", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache04", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache05", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache06", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache07", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache08", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache09", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache10", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Mustache/Stache", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1698847200000" } }, - "EndDate": { "$date": { "$numberLong": "1701403140000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1701403140000" } } + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704187860000" } }, + "EndDate": { "$date": { "$numberLong": "1735723860000" } } } ], "InGameMarket": { "LandingPage": { "Categories": [ + { + "CategoryName": "WHISPERS", + "Name": "/Lotus/Language/Store/WhispersInTheWallCategory", + "Icon": "updatepacks", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/SanctumPack", + "/Lotus/Types/StoreItems/Packages/PowerPack", + "/Lotus/Types/StoreItems/Packages/WarframeBundles/QorvexItemsBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/SevagothDeluxeSkinBundle", + "/Lotus/StoreItems/Upgrades/Skins/Weapons/Grimoire/GrimoireSciFiSkin", + "/Lotus/StoreItems/Upgrades/Skins/Weapons/Grimoire/GrimoireFantasySkin", + "/Lotus/Types/StoreItems/Packages/ShipDecoBundleEntrati", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", + "/Lotus/StoreItems/Upgrades/Skins/Wraith/SevagothDeluxeSkin", + "/Lotus/StoreItems/Powersuits/ConcreteFrame/ConcreteFrame", + "/Lotus/StoreItems/Upgrades/Skins/ConcreteFrame/ConcreteFrameAltHelmet", + "/Lotus/StoreItems/Weapons/Tenno/Archwing/Primary/TnConcreteArchgun/TnConcreteArchgunWeapon", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/TnConcreteSyandana", + "/Lotus/StoreItems/Weapons/Thanotech/EntSphereHammer/EntSphereHammer", + "/Lotus/StoreItems/Upgrades/Skins/Crowns/DexVinesCrown", + "/Lotus/Types/StoreItems/Packages/KavatColorPackEntrati", + "/Lotus/Types/StoreItems/Packages/EssentialTennokaiModPack", + "/Lotus/Types/StoreItems/Packages/EssentialGrimoireModPack", + "/Lotus/Types/StoreItems/Packages/WitWGlyphsBundle", + "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropNecraMechDrone", + "/Lotus/StoreItems/Types/Items/ShipDecos/WitWSupporterPoster", + "/Lotus/StoreItems/Types/Items/ShipDecos/AlbrechtPortrait", + "/Lotus/StoreItems/Types/Items/ShipDecos/GrimoireAltar", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/BirdPlush", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/FishPlush", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/DeerPlush" + ] + }, { "CategoryName": "POPULAR", "Name": "/Lotus/Language/Menu/StorePopular", "Icon": "popular", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", "/Lotus/Types/StoreItems/Packages/WarframeBundles/DagathItemsBundle", - "/Lotus/Types/StoreItems/Packages/Halloween2023CompleteBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", "/Lotus/Types/StoreItems/Packages/Halloween2023BatBundle", - "/Lotus/StoreItems/Powersuits/EntratiMech/NechroTech", - "/Lotus/Types/StoreItems/Packages/HarrowDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/Halloween2023CompleteBundle", + "/Lotus/StoreItems/Powersuits/Wraith/Wraith", + "/Lotus/StoreItems/Powersuits/EntratiMech/ThanoTech", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/StoreItems/Powersuits/Fairy/Fairy", + "/Lotus/Types/StoreItems/Packages/IncarnonPackages/BoarIncarnonBundle", "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", "/Lotus/StoreItems/Powersuits/Runner/Runner", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/RevenantDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/RevenantDlxOperatorBundle", - "/Lotus/StoreItems/Powersuits/Wraith/Wraith", - "/Lotus/StoreItems/Types/Items/MiscItems/Forma", + "/Lotus/Types/StoreItems/Packages/ColorPack", "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeIridosOctaviaStoreItem" + "/Lotus/Types/StoreItems/Packages/FormaPack" ] }, - { - "CategoryName": "SEASONAL", - "Name": "/Lotus/Language/Store/SeasonalCategoryTitle", - "Icon": "seasonal", - "AddToMenu": true, - "Items": [ - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache02", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache03", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache04", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache05", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache06", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache07", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache08", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache09", - "/Lotus/StoreItems/Upgrades/Skins/Mustache/Stache10", - "/Lotus/StoreItems/Upgrades/Skins/Sigils/ConqueraSigil", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021C", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021D", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021A", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2021B", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageConquera2022A", - "/Lotus/StoreItems/Types/Items/ShipDecos/Conquera2021Deco", - "/Lotus/StoreItems/Upgrades/Skins/Effects/ConqueraEphemera", - "/Lotus/StoreItems/Upgrades/Skins/Effects/Conquera2022Ephemera", - "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", - "/Lotus/StoreItems/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/TnCharityRibbonSyandana" - ] - }, - { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "AddToMenu": true, "Items": [] }, + { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "Items": [] }, + { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] }, { "CategoryName": "PREMIUM_BUNDLES", "Name": "/Lotus/Language/Store/Store_PremiumBundles", "Icon": "premiumbundles", "Items": [ + "/Lotus/Types/StoreItems/Packages/SanctumPack", "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "/Lotus/Types/StoreItems/Packages/HeirloomPackC", - "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "/Lotus/Types/StoreItems/Packages/HeirloomPackA", - "/Lotus/Types/StoreItems/Packages/HeirloomPackB", + "/Lotus/Types/StoreItems/Packages/PowerPack", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier2StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier1StoreItem" ] - }, - { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] } + } ] } }, "Invasions": [ { - "_id": { "$oid": "654e62bececd776bc3cab972" }, + "_id": { "$oid": "65979c0df1c7a9161bfd0867" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode19", - "Count": 38149, - "Goal": 38000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "654657c15150463957963b1f" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 983860, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 98731, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1699636839881" } } - }, - { - "_id": { "$oid": "6550cea94a84460eed3b8b5f" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode50", - "Count": 1161, - "Goal": 43000, + "Node": "SolNode196", + "Count": -6144, + "Goal": 36000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "654657c15150463957963b1f" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalReceiver", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 761676, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/GrineerCombatKnifeSortieBlueprint", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 568677, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1699795642956" } } + "ChainID": { "$oid": "659348a1828ed5fd1886eeb5" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 404308, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 681215, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1704435349138" } } }, { - "_id": { "$oid": "654d9cb1803c5203e40bcd1d" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode31", - "Count": 35073, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6549a2566144383d2587a9c0" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 47329, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 421973, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1699585690899" } } - }, - { - "_id": { "$oid": "6550759aca836ca4a44cfcec" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode18", - "Count": 6066, - "Goal": 38000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "6549a2566144383d2587a9c0" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 19461, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 223581, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1699772697113" } } - }, - { - "_id": { "$oid": "654d4e2d3ef02a6712d9edfa" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode17", - "Count": -47005, - "Goal": 47000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "654d4e2d3ef02a6712d9edfa" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 178317, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 746120, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1699623046665" } } - }, - { - "_id": { "$oid": "654f74f5bed2841b81c402f2" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode144", - "Count": -30050, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "654f3de13c46a435328f495e" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 430032, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 944337, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1699706101486" } } - }, - { - "_id": { "$oid": "654f8434792e97d2d96c0e76" }, + "_id": { "$oid": "659786f5a5663c49db7f7450" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode51", - "Count": -23078, + "Count": -30011, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "65974c5d8c545041bbaad208" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 180036, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 734207, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1704429301149" } } + }, + { + "_id": { "$oid": "65977436f5ef62271799cd7d" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode62", + "Count": 13573, + "Goal": 45000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65977436f5ef62271799cd7d" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 335652, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalStock", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 114617, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1704496199605" } } + }, + { + "_id": { "$oid": "65979c0df1c7a9161bfd0868" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode187", + "Count": -3142, + "Goal": 47000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65979c0df1c7a9161bfd0868" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/DeraVandalBlueprint", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 348816, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/TwinVipersWraithReceiver", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 557051, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1704509479191" } } + }, + { + "_id": { "$oid": "6597db56de4a78820af945e6" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode99", + "Count": -30102, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "6597aff9e9c5ac11dfcdfe90" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 803034, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 239664, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1704450902042" } } + }, + { + "_id": { "$oid": "65992cd5eeae97743aca67fd" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode42", + "Count": -21975, + "Goal": 34000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65992cd5eeae97743aca67fd" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 642142, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 778617, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1704542201390" } } + }, + { + "_id": { "$oid": "659955d90ec412d0f19f5173" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode19", + "Count": -1145, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65992cd5eeae97743aca67fd" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 733256, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 226984, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1704547801551" } } + }, + { + "_id": { "$oid": "659955d90ec412d0f19f5174" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode32", + "Count": -5510, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "654f5fdeaeaccbc4bcc25e2d" }, + "ChainID": { "$oid": "65992cd5eeae97743aca67fd" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 46086, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 859516, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1699710003673" } } + "AttackerMissionInfo": { "seed": 657818, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 585189, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1704547801551" } } } ], "HubEvents": [], @@ -1971,7 +1536,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9724537 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9799953 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1985,41 +1550,13 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } - }, - { - "_id": { "$oid": "6550759aca836ca4a44cfceb" }, - "Node": "SolNode31", - "Faction": "FC_CORPUS", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadA", - "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusDropship", - "Expiry": { "$date": { "$numberLong": "1699833627218" } } - }, - { - "_id": { "$oid": "6550cea94a84460eed3b8b5e" }, - "Node": "SolNode19", - "Faction": "FC_CORPUS", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadB", - "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/CorpusHeavyEnemiesDropship", - "Expiry": { "$date": { "$numberLong": "1699849477801" } } - }, - { - "Node": "SolNode228", - "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/InfestedSquadA", - "CustomNpcEncounters": [ - "/Lotus/Types/Gameplay/Eidolon/Encounters/InfestedEncounters/InfestedPatrol", - "/Lotus/Types/Gameplay/Eidolon/Encounters/InfestedEncounters/InfestedDropPods", - "/Lotus/Types/Gameplay/Eidolon/Encounters/InfestedEncounters/InfestedDropPodsReinforcements" - ], - "_id": { "$oid": "654a5058c757487cdb11824f" }, - "Activation": { "$date": { "$numberLong": "1699372800000" } }, - "Expiry": { "$date": { "$numberLong": "1700582400000" } } } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1700226000000" } }, - "Expiry": { "$date": { "$numberLong": "1700398800000" } }, + "Activation": { "$date": { "$numberLong": "1705068000000" } }, + "Expiry": { "$date": { "$numberLong": "1705240800000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", "Node": "SaturnHUB" @@ -2028,155 +1565,48 @@ "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1698948000000" } }, + "Activation": { "$date": { "$numberLong": "1704394800000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNezhaPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNezhaOctaviaPrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOctaviaPrimeSinglePack", "PrimePrice": 6 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostMagPrimeDualPack", - "PrimePrice": 10, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVFrostPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMagPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Nezha/NezhaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVRanshaPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/EphemeraNezhaPrime", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Polearms/PrimeGuandao/PrimeGuandaoWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeZakti/PrimeZaktiPistol", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Bard/OctaviaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVGlissandaPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeOctaviaSyandana", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropShawzinPrime", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTenora/TenoraPrimeWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimePandero/PanderoPrimeWeapon", "PrimePrice": 2 }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Frost/FrostPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarf", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitanPrimeSet", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/LatronPrime", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Scythe/ReaperWeapon", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Mag/MagPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTargisPrimeArmorSet", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVDistillingExtractorPrimeSet", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Shotgun/PrimeBoar", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/CronusSword/PrimeCronusLongSword", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NezhaPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OctaviaPrimeBobbleHead", "PrimePrice": 1 }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/FrostPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/MagPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNezhaOctaviaVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNezhaOctaviaVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNezhaOctaviaVaultABronze", "RegularPrice": 1 }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionFrostMagVaultBBronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionFrostMagVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionFrostMagVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionFrostMagVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1693072800000" } }, - "EndDate": { "$date": { "$numberLong": "1704081540000" } } - } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoltLokiPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaTrinityPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoltPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVLokiPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTrinityPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Volt/VoltPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/KazeruPrimeMeleeDangle", "PrimePrice": 1 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEdoPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Archwing/PrimeJetPack/PrimeJetPack", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Loki/LokiPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/PrimeMeleeDangle", "PrimePrice": 1 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVSummusPrimeSentAccessories", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Staff/PrimeBo/PrimeBoWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeWyrmPowerSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/AntiMatter/NovaPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilFive", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeVasto/PrimeVastoPistol", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSoma/PrimeSomaRifle", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Trinity/TrinityPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVKavasaPrimeKubrowArmor", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeDualKamas/PrimeDualKamas", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NovaPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TrinityPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/VoltPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LokiPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1703185200000" } }, + "Expiry": { "$date": { "$numberLong": "1705604400000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -2259,93 +1689,100 @@ "PreviewHiddenUntil": { "$date": { "$numberLong": "1697738400000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNezhaOctaviaPrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1704394800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1704394800000" } } } + { + "Expiry": { "$date": { "$numberLong": "1704394800000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1697738400000" } }, + "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" + }, + { "Expiry": { "$date": { "$numberLong": "1705604400000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, + { "Expiry": { "$date": { "$numberLong": "1706814000000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, + { "Expiry": { "$date": { "$numberLong": "1708023600000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" } ] } ], "VoidStorms": [ { - "_id": { "$oid": "6550c7a1bbb11874ea80f56e" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1699795201821" } }, - "Expiry": { "$date": { "$numberLong": "1699800601821" } }, + "_id": { "$oid": "6599538219418ebd4f6e9b5f" }, + "Node": "CrewBattleNode518", + "Activation": { "$date": { "$numberLong": "1704550801821" } }, + "Expiry": { "$date": { "$numberLong": "1704556201821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "6550c7a1bbb11874ea80f56f" }, - "Node": "CrewBattleNode515", - "Activation": { "$date": { "$numberLong": "1699795201825" } }, - "Expiry": { "$date": { "$numberLong": "1699800601825" } }, - "ActiveMissionTier": "VoidT1" + "_id": { "$oid": "6599538219418ebd4f6e9b64" }, + "Node": "CrewBattleNode539", + "Activation": { "$date": { "$numberLong": "1704550801834" } }, + "Expiry": { "$date": { "$numberLong": "1704556201834" } }, + "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "6550c7a1bbb11874ea80f570" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1699795201827" } }, - "Expiry": { "$date": { "$numberLong": "1699800601827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "6550c7a2bbb11874ea80f571" }, - "Node": "CrewBattleNode525", - "Activation": { "$date": { "$numberLong": "1699795201829" } }, - "Expiry": { "$date": { "$numberLong": "1699800601829" } }, + "_id": { "$oid": "6599538219418ebd4f6e9b62" }, + "Node": "CrewBattleNode521", + "Activation": { "$date": { "$numberLong": "1704550801829" } }, + "Expiry": { "$date": { "$numberLong": "1704556201829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "6550c7a2bbb11874ea80f572" }, + "_id": { "$oid": "6599538219418ebd4f6e9b60" }, + "Node": "CrewBattleNode512", + "Activation": { "$date": { "$numberLong": "1704550801825" } }, + "Expiry": { "$date": { "$numberLong": "1704556201825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "6599538219418ebd4f6e9b61" }, + "Node": "CrewBattleNode534", + "Activation": { "$date": { "$numberLong": "1704550801827" } }, + "Expiry": { "$date": { "$numberLong": "1704556201827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "6599538219418ebd4f6e9b63" }, "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1699795201832" } }, - "Expiry": { "$date": { "$numberLong": "1699800601832" } }, + "Activation": { "$date": { "$numberLong": "1704550801832" } }, + "Expiry": { "$date": { "$numberLong": "1704556201832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "6550c7a2bbb11874ea80f573" }, - "Node": "CrewBattleNode555", - "Activation": { "$date": { "$numberLong": "1699795201834" } }, - "Expiry": { "$date": { "$numberLong": "1699800601834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "6550d5b2210e9a054eef5a21" }, + "_id": { "$oid": "65996641accd4cc7867ee02d" }, "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1699798801821" } }, - "Expiry": { "$date": { "$numberLong": "1699804201821" } }, + "Activation": { "$date": { "$numberLong": "1704554401821" } }, + "Expiry": { "$date": { "$numberLong": "1704559801821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "6550d5b2210e9a054eef5a22" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1699798801825" } }, - "Expiry": { "$date": { "$numberLong": "1699804201825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "6550d5b2210e9a054eef5a23" }, - "Node": "CrewBattleNode533", - "Activation": { "$date": { "$numberLong": "1699798801827" } }, - "Expiry": { "$date": { "$numberLong": "1699804201827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "6550d5b2210e9a054eef5a24" }, + "_id": { "$oid": "65996641accd4cc7867ee030" }, "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1699798801829" } }, - "Expiry": { "$date": { "$numberLong": "1699804201829" } }, + "Activation": { "$date": { "$numberLong": "1704554401829" } }, + "Expiry": { "$date": { "$numberLong": "1704559801829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "6550d5b2210e9a054eef5a25" }, - "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1699798801832" } }, - "Expiry": { "$date": { "$numberLong": "1699804201832" } }, + "_id": { "$oid": "65996641accd4cc7867ee02f" }, + "Node": "CrewBattleNode533", + "Activation": { "$date": { "$numberLong": "1704554401827" } }, + "Expiry": { "$date": { "$numberLong": "1704559801827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "65996641accd4cc7867ee032" }, + "Node": "CrewBattleNode543", + "Activation": { "$date": { "$numberLong": "1704554401834" } }, + "Expiry": { "$date": { "$numberLong": "1704559801834" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "6550d5b2210e9a054eef5a26" }, - "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1699798801834" } }, - "Expiry": { "$date": { "$numberLong": "1699804201834" } }, + "_id": { "$oid": "65996641accd4cc7867ee02e" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1704554401825" } }, + "Expiry": { "$date": { "$numberLong": "1704559801825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65996641accd4cc7867ee031" }, + "Node": "CrewBattleNode529", + "Activation": { "$date": { "$numberLong": "1704554401832" } }, + "Expiry": { "$date": { "$numberLong": "1704559801832" } }, "ActiveMissionTier": "VoidT4" } ], @@ -2354,23 +1791,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Pistols/TnBardPistol/TnBardPistolGun", - "Activation": { "$date": { "$numberLong": "1699707600000" } }, - "Expiry": { "$date": { "$numberLong": "1699801200000" } }, + "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Pistol/CrossBow", + "Activation": { "$date": { "$numberLong": "1704481200000" } }, + "Expiry": { "$date": { "$numberLong": "1704574800000" } }, "Discount": 50, - "OriginalPrice": 190, - "SalePrice": 95, - "AmountTotal": 150, - "AmountSold": 71 + "OriginalPrice": 175, + "SalePrice": 87, + "AmountTotal": 200, + "AmountSold": 30 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "654e98a68f77ff95a143d8e9" }, + "_id": { "$oid": "659873ad24ae204a62fa071b" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1699649702069" } }, - "endDate": { "$date": { "$numberLong": "1700254502069" } }, + "startDate": { "$date": { "$numberLong": "1704489901970" } }, + "endDate": { "$date": { "$numberLong": "1705094701970" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2378,21 +1815,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "654e98a68f77ff95a143d8ea" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1699649702069" } }, - "endDate": { "$date": { "$numberLong": "1700254502069" } }, - "params": [{ "n": "ScriptParamValue", "v": 20 }], + "_id": { "$oid": "659873ad24ae204a62fa071e" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1704489901970" } }, + "endDate": { "$date": { "$numberLong": "1705094701970" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "659873ad24ae204a62fa071b" }, { "$oid": "659873ad24ae204a62fa071c" }, { "$oid": "659873ad24ae204a62fa071d" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "654e98a68f77ff95a143d8eb" }, + "_id": { "$oid": "659873ad24ae204a62fa071d" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1699649702069" } }, - "endDate": { "$date": { "$numberLong": "1700254502069" } }, + "startDate": { "$date": { "$numberLong": "1704489901970" } }, + "endDate": { "$date": { "$numberLong": "1705094701970" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2400,21 +1837,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "654e98a68f77ff95a143d8ec" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1699649702069" } }, - "endDate": { "$date": { "$numberLong": "1700254502069" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], + "_id": { "$oid": "659873ad24ae204a62fa071c" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", + "startDate": { "$date": { "$numberLong": "1704489901970" } }, + "endDate": { "$date": { "$numberLong": "1705094701970" } }, + "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "654e98a68f77ff95a143d8e9" }, { "$oid": "654e98a68f77ff95a143d8ea" }, { "$oid": "654e98a68f77ff95a143d8eb" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6550006969f22db526abb815" }, + "_id": { "$oid": "6598af7191b9e0eea5d5e293" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2422,10 +1859,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6550006969f22db526abb816" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, + "_id": { "$oid": "6598af7191b9e0eea5d5e292" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2433,10 +1870,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6550006969f22db526abb817" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirEASY", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, + "_id": { "$oid": "6598af7191b9e0eea5d5e295" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD", + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6598af7191b9e0eea5d5e294" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPaybackEASY", + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2444,164 +1892,142 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6550006969f22db526abb818" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerMEDIUM", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6550006a69f22db526abb819" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeMEDIUM", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6550006a69f22db526abb81a" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6550006a69f22db526abb81b" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6550006a69f22db526abb81c" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesHARD", - "startDate": { "$date": { "$numberLong": "1699741801931" } }, - "endDate": { "$date": { "$numberLong": "1699828201931" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6550e4ed03f0626fc01c4f6d" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedAffectorSuperEverything", - "startDate": { "$date": { "$numberLong": "1699800301512" } }, - "endDate": { "$date": { "$numberLong": "1699800901512" } }, + "_id": { "$oid": "6598af7191b9e0eea5d5e296" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, "params": [{ "n": "ScriptParamValue", "v": 2 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_MODEAFFECTOR" + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6598af7191b9e0eea5d5e299" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsEASY", + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6598af7191b9e0eea5d5e298" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesHARD", + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6598af7191b9e0eea5d5e297" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakStoppedEASY", + "startDate": { "$date": { "$numberLong": "1704505201665" } }, + "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [91.68905726815011, 53.82862202580854, 0], + "ProjectPct": [38.73147325043345, 25.356565957635535, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, - { "Category": "EXC_HARD", "Choices": ["Boar", "Gammacor", "Anku", "Gorgon", "Angstrum"] } + { "Category": "EXC_NORMAL", "Choices": ["Ash", "Frost", "Nyx"] }, + { "Category": "EXC_HARD", "Choices": ["Bo", "Latron", "Furis", "Furax", "Strun"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "5fa2e5812794220e700f6f6a" }, "Name": "Ministry of Wonderland#405", "Tier": 1, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5efc425c4e453377337c5ad4" }, "Name": "SATANS KAT#927", "Tier": 2, "AllianceId": { "$oid": "589ba800be87e42d0a24942c" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5c5713243f8d4a3bb04e09b1" }, "Name": "Orokin Legionnaires#083", "Tier": 3, "AllianceId": { "$oid": "613df42cc566ad767f53d9e0" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "599b1e8cbe87e4a2d713dc74" }, "Name": "La Legione Oscura#122", "Tier": 5, "AllianceId": { "$oid": "5f98a7ccace62c369071e561" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "552c713807c56fafac7b3f37" }, "Name": "Syndicate Synergy#282", "Tier": 5, "AllianceId": { "$oid": "56031df008c56fe8106a9982" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "559bb99d06c56f888a4b2f44" }, "Name": "--UMBRA--Lua Lycans#447", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "6365589e89dc6b94480fbb06" }, "OriginalPlatform": 0 } + { "_id": { "$oid": "5b4478a82183dbb61871e464" }, "Name": "_People_#660", "Tier": 1, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, "Name": "Miau after Tomorrow#004", "Tier": 2, "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "51e332a507c56f8131001afe" }, "Name": "La confrerie#881", "Tier": 3, "AllianceId": { "$oid": "535d3fbc07c56fa289fec649" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz#996", "Tier": 4, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5a44a1ba2183db95d61d3e56" }, "Name": "Syndicate Solstice#268", "Tier": 5, "AllianceId": { "$oid": "56031df008c56fe8106a9982" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5d6e8383a38e4ab3d87910b4" }, "Name": "KHAO SAN ROAD#515", "Tier": 1, "AllianceId": { "$oid": "62ca246ada801e95e10faef5" }, "Emblem": true, "OriginalPlatform": 0 } ], "SeasonInfo": { - "Activation": { "$date": { "$numberLong": "1684951200000" } }, - "Expiry": { "$date": { "$numberLong": "1700679600000" } }, - "AffiliationTag": "RadioLegionIntermission8Syndicate", - "Season": 10, + "Activation": { "$date": { "$numberLong": "1701284400000" } }, + "Expiry": { "$date": { "$numberLong": "1719187200000" } }, + "AffiliationTag": "RadioLegionIntermission9Syndicate", + "Season": 11, "Phase": 0, "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100250000000000000348" }, + "_id": { "$oid": "001200060000000000000084" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1699574400000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithElectricity" + "Activation": { "$date": { "$numberLong": "1704326400000" } }, + "Expiry": { "$date": { "$numberLong": "1704585600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySuspendFiveEnemies" }, { - "_id": { "$oid": "001100250000000000000349" }, + "_id": { "$oid": "001200060000000000000085" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1699660800000" } }, - "Expiry": { "$date": { "$numberLong": "1699920000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyMedic" + "Activation": { "$date": { "$numberLong": "1704412800000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCodexScan" }, { - "_id": { "$oid": "001100250000000000000350" }, + "_id": { "$oid": "001200060000000000000086" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1699747200000" } }, - "Expiry": { "$date": { "$numberLong": "1700006400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyDeployAirSupport" + "Activation": { "$date": { "$numberLong": "1704499200000" } }, + "Expiry": { "$date": { "$numberLong": "1704758400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithAbilities" }, { - "_id": { "$oid": "001100250000000000000337" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyVenusBounties" + "_id": { "$oid": "001200060000000000000074" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions6" }, { - "_id": { "$oid": "001100250000000000000338" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyMineRarePlainsResources" + "_id": { "$oid": "001200060000000000000075" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus6" }, { - "_id": { "$oid": "001100250000000000000339" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPickUpRareMods" + "_id": { "$oid": "001200060000000000000076" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies6" }, { - "_id": { "$oid": "001100250000000000000340" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEnemiesInMech" + "_id": { "$oid": "001200060000000000000077" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyDestroyCrewshipArtillery" }, { - "_id": { "$oid": "001100250000000000000341" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklySimarisScan" + "_id": { "$oid": "001200060000000000000078" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyLoyalty" }, { - "_id": { "$oid": "001100250000000000000342" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardUnlockRelics" + "_id": { "$oid": "001200060000000000000079" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteSteelPathMissions" }, { - "_id": { "$oid": "001100250000000000000343" }, - "Activation": { "$date": { "$numberLong": "1699228800000" } }, - "Expiry": { "$date": { "$numberLong": "1699833600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardTerminated" + "_id": { "$oid": "001200060000000000000080" }, + "Activation": { "$date": { "$numberLong": "1704067200000" } }, + "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardAntiquarian" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"sfn\":554}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":550}" } -- 2.47.2 From fa90ce057194f21320a6a0e749e7673c2411c32d Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Mon, 8 Jan 2024 01:06:19 +0100 Subject: [PATCH 056/522] logging: formatting (#115) --- src/middleware/morgenMiddleware.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/middleware/morgenMiddleware.ts b/src/middleware/morgenMiddleware.ts index 396f39ca..dd989258 100644 --- a/src/middleware/morgenMiddleware.ts +++ b/src/middleware/morgenMiddleware.ts @@ -2,5 +2,5 @@ import morgan from "morgan"; import { logger } from "@/src/utils/logger"; export const requestLogger = morgan("dev", { - stream: { write: message => logger.http(message) } + stream: { write: message => logger.http(message.trim()) } }); -- 2.47.2 From 4a102b9d3b917c7d072f0fbe86c6d6b257a87edb Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 13 Jan 2024 16:06:43 +0100 Subject: [PATCH 057/522] Version update 35.0.8 (#119) --- config.json | 8 +- static/fixed_responses/worldState.json | 1745 ++++++++++++------------ 2 files changed, 875 insertions(+), 878 deletions(-) diff --git a/config.json b/config.json index b6f0bf82..0639296b 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.12.19.15.34/ccslDhWoFeu8lZi6eT+HXg", - "matchmakingBuildId": "9186822613720189878", - "version": "35.0.4", - "worldSeed": "t8Bnmc5fxNpCmCM+xPwf/HB4EVWUN9ErRdDro1yMiEkFmzHL74Khle/apjMMYvli5MS9nu1ZAi83e2wCAa4o9uSMhgVAocPQbWIYHX/AgHPpb0kFszqpcWF20QaCRW6ebAXduGBBOvsU3h5zDCBgRPdqzd64BIYG8cD+nmpnHKPfq7HlTFQCOsq3ipHgGSZypji5oGxXdMKwDVP/uMFmiosjr8XCVnw4aTPq1MDjSBBbNlc4KIJpAokdOUokrbo+7jvbfSQvKCZiNxSEyDjxxCqwdJn3GyIk/yjpXPWmtS5GS1/R9+0DrjLs+ra3bKWeUlwRFKl4zjeyFivy/1nZkw==", + "buildLabel": "2024.01.10.17.09/nhtkV2+-Ko5jCzUxhAEUIw", + "matchmakingBuildId": "7083290396338825240", + "version": "35.0.8", + "worldSeed": "tulS3NEyXcLBvAM4JnJF7udXygp8YKQyAM1SANa0/DXLTvPmqvpeV/4J0cPs7AqlpvuLbuMwCfDloSENRNN7RO8eL9vqjya+k0fi6ACbKUdAV2L8Ugu6JXBTavHuLtxe2X+Z5uxariP3GbXoAArRia4Hi6eYnJP+sinlzK2vN4Z2fy32cGMJ6AMAbHDZeBSU/26onmyrs9T++PbRRYUgfgVdf5XVRfoWAiktTOipz3BDcdjImdFrlSWfHVdxYaDXgIArVObpRMWKPMeixgOaZ2zzcRWxIsaQ4z1j1fLjbz5kwh4jAJMh/12l/8djPM9mQhPIRwOp2HOSPNwjyLEsFA==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index ad9092f3..dae872c8 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "t8Bnmc5fxNpCmCM+xPwf/HB4EVWUN9ErRdDro1yMiEkFmzHL74Khle/apjMMYvli5MS9nu1ZAi83e2wCAa4o9uSMhgVAocPQbWIYHX/AgHPpb0kFszqpcWF20QaCRW6ebAXduGBBOvsU3h5zDCBgRPdqzd64BIYG8cD+nmpnHKPfq7HlTFQCOsq3ipHgGSZypji5oGxXdMKwDVP/uMFmiosjr8XCVnw4aTPq1MDjSBBbNlc4KIJpAokdOUokrbo+7jvbfSQvKCZiNxSEyDjxxCqwdJn3GyIk/yjpXPWmtS5GS1/R9+0DrjLs+ra3bKWeUlwRFKl4zjeyFivy/1nZkw==", + "WorldSeed": "tulS3NEyXcLBvAM4JnJF7udXygp8YKQyAM1SANa0/DXLTvPmqvpeV/4J0cPs7AqlpvuLbuMwCfDloSENRNN7RO8eL9vqjya+k0fi6ACbKUdAV2L8Ugu6JXBTavHuLtxe2X+Z5uxariP3GbXoAArRia4Hi6eYnJP+sinlzK2vN4Z2fy32cGMJ6AMAbHDZeBSU/26onmyrs9T++PbRRYUgfgVdf5XVRfoWAiktTOipz3BDcdjImdFrlSWfHVdxYaDXgIArVObpRMWKPMeixgOaZ2zzcRWxIsaQ4z1j1fLjbz5kwh4jAJMh/12l/8djPM9mQhPIRwOp2HOSPNwjyLEsFA==", "Version": 10, "MobileVersion": "4.15.19.0", - "BuildLabel": "2023.12.19.15.34/ccslDhWoFeu8lZi6eT+HXg", - "Time": 1704555310, + "BuildLabel": "2024.01.10.17.09/nhtkV2+-Ko5jCzUxhAEUIw", + "Time": 1705017602, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -67,29 +67,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "653001a6be47fe5645028add" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Grendel Prime Access is available now!" }, - { "LanguageCode": "fr", "Message": "Le Prime Access Grendel Prime est maintenant disponible !" }, - { "LanguageCode": "it", "Message": "L'Accesso Grendel Prime è ora disponibile!" }, - { "LanguageCode": "de", "Message": "Grendel Prime Access ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡Prime Access de Grendel ya está disponible!" }, - { "LanguageCode": "pt", "Message": "O Prime Access do Grendel Prime já está disponível!" }, - { "LanguageCode": "ru", "Message": "Доступ Гренделя Прайм доступен уже сейчас!" }, - { "LanguageCode": "pl", "Message": "Grendel Prime Access już dostępny!" }, - { "LanguageCode": "tr", "Message": "Grendel Prime Access şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "Grendel Prime Accessが登場!" }, - { "LanguageCode": "zh", "Message": "Grendel Prime Access 现已登场!" }, - { "LanguageCode": "ko", "Message": "그렌델 프라임 액세스를 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "Grendel Prime Access 現已登場!" } - ], - "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-10-GrendelPrimeLaunchIGN", - "Date": { "$date": { "$numberLong": "1697644500000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fc9e09a4ca79eddd55383762476c71e1_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65368b9aa7625caedf0d6715" }, "Messages": [{ "LanguageCode": "tr", "Message": "2023 Ürpertici Dojo Yarışması [Dagath'ın Çukuru]" }], @@ -156,32 +133,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65721c0f98c0c0c0e309040b" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Pre-Order: Whispers in the Walls Merch" }, - { "LanguageCode": "de", "Message": "Vorbestellung: Die 'Flüstern in den Wänden' Merch-Kollektion" }, - { "LanguageCode": "pt", "Message": "Pré-encomenda: Coleção de Produtos dos Sussurros nas Paredes" }, - { "LanguageCode": "tr", "Message": "Ön Sipariş: Whispers in the Walls Ürün Koleksiyonu" }, - { "LanguageCode": "ja", "Message": "「壁の中の囁き」グッズコレクションを今すぐ予約購入" }, - { "LanguageCode": "ko", "Message": "사전 예약 주문하세요: 벽 속의 속삭임 굿즈 컬렉션" } - ], - "Prop": "https://store.warframe.com/collections/whispers-in-the-walls-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-WhispersintheWallsCollectionLaunch", - "Date": { "$date": { "$numberLong": "1701976740000" } }, - "EventStartDate": { "$date": { "$numberLong": "1701975600000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/53ae5115fa3e794f97dafbd726c3ea2a_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6579d80beeb4b033ed0ce33f" }, - "Messages": [{ "LanguageCode": "en", "Message": "Update 35: Whispers in the Walls" }], - "Prop": "https://forums.warframe.com/topic/1374376-update-35-whispers-in-the-walls/", - "Date": { "$date": { "$numberLong": "1702483020000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/71619183f29041bae5d62979ec39f2ee.jpg", - "Priority": true, - "MobileOnly": false - }, { "_id": { "$oid": "6579d98f401337afef087f3f" }, "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 35: 벽 속의 속삭임" }], @@ -201,30 +152,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6579e123716960516c0a520f" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Get the Sanctum Supporter Pack!" }, - { "LanguageCode": "fr", "Message": "Obtenez le Pack Supporter Sanctum" }, - { "LanguageCode": "it", "Message": "Ottieni il Pacchetto Sostenitore Sanctum!" }, - { "LanguageCode": "de", "Message": "Holt euch das Sanctum Unterstützer-Paket!" }, - { "LanguageCode": "es", "Message": "¡Obtén el Paquete de Apoyo Sanctum!" }, - { "LanguageCode": "pt", "Message": "Adquira o Pacote de Suporte do Sanctum!" }, - { "LanguageCode": "ru", "Message": "Получите набор поддержки «Санктум»!" }, - { "LanguageCode": "pl", "Message": "Zdobądź Pakiet Wsparcia Sanctum!" }, - { "LanguageCode": "uk", "Message": "Отримайте набір шанувальників «Святилище»!" }, - { "LanguageCode": "tr", "Message": "Sanctum Destek Paketini Al!" }, - { "LanguageCode": "ja", "Message": "サンクタムサポーターパックをゲットしよう!" }, - { "LanguageCode": "zh", "Message": "获得圣所支援包!" }, - { "LanguageCode": "ko", "Message": "생텀 서포터 팩을 만나보세요!" }, - { "LanguageCode": "tc", "Message": "獲取聖所支援組合包!" } - ], - "Prop": "https://www.warframe.com/buyplatinum?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-SanctumSupporterPack", - "Date": { "$date": { "$numberLong": "1702484700000" } }, - "ImageUrl": "https://www-static.warframe.com/images/promo/whispers/supporter-pack-desktop.jpg", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "6579f5121ac944e9910da155" }, "Messages": [ @@ -249,39 +176,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "6579f572c25a5319740dd6b8" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Get the Initiate Power Pack Now!" }, - { "LanguageCode": "fr", "Message": "Obtenez le Pack d'Initié Renforcé !" }, - { "LanguageCode": "it", "Message": "Ottieni Ora il Pacchetto Initiate Power!" }, - { "LanguageCode": "de", "Message": "Holt euch jetzt das Initiant Macht-Paket!" }, - { "LanguageCode": "es", "Message": "¡Obtén ya el Paquete de Poder Inicial!" }, - { "LanguageCode": "pt", "Message": "Obtenha o Pacote de Poder Inicial agora mesmo!" }, - { "LanguageCode": "ru", "Message": "Получите Первоначальный Набор Усиления сейчас!" }, - { "LanguageCode": "pl", "Message": "Zdobądź teraz Zestaw Mocy Początkującego!" }, - { "LanguageCode": "uk", "Message": "Отримайте набір початківця «Потужність» зараз!" }, - { "LanguageCode": "tr", "Message": "Başlangıç Güç Paketi Şimdi Sahip Ol!" }, - { "LanguageCode": "ja", "Message": "イニシエートパワーパックを今すぐゲット!" }, - { "LanguageCode": "zh", "Message": "立即获取启蒙力量组合包!" }, - { "LanguageCode": "ko", "Message": "이니시에이트 파워 팩을 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "獲取啟蒙威力組合包!" } - ], - "Prop": "https://www.warframe.com/buyplatinum?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-InitiatePowerPack", - "Date": { "$date": { "$numberLong": "1702486320000" } }, - "ImageUrl": "https://www-static.warframe.com/images/promo/whispers/power-pack-desktop.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "657a01d262df6147f3052a63" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj #35 : Murmures" }], - "Prop": "https://forums.warframe.com/topic/1374393-mise-%C3%A0-jour-35-murmures-dans-les-murs/", - "Date": { "$date": { "$numberLong": "1702493700000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_12/image.png.e2f1dbd07b876a02af28c0bef20fcfe6.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "657a230aa75056b794032950" }, "Messages": [{ "LanguageCode": "es", "Message": "ACTUALIZACIÓN 35: SUSURROS EN LAS PAREDES" }], @@ -291,29 +185,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6580a8b524e6af1e160336d2" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Gargoyle’s Cry is Live Now!" }, - { "LanguageCode": "fr", "Message": "Maintenant dispo : Cri de la Gargouille" }, - { "LanguageCode": "it", "Message": "Gargoyle’s Cry è Ora Disponibile!" }, - { "LanguageCode": "de", "Message": "Schrei des Gargoyles ist jetzt live!" }, - { "LanguageCode": "es", "Message": "¡Grito de Gárgola ya está disponible!" }, - { "LanguageCode": "pt", "Message": "O Clamor da Gárgula já está disponível!" }, - { "LanguageCode": "ru", "Message": "«Операция: Плач Горгульи» уже доступна!" }, - { "LanguageCode": "pl", "Message": "Krzyk Gargulca jest już dostępny!" }, - { "LanguageCode": "uk", "Message": "«Плач ґарґуйля» вже у грі!" }, - { "LanguageCode": "tr", "Message": "Gargoyle'ın Feryadı Şimdi Sizlerle!" }, - { "LanguageCode": "ja", "Message": "「ガーゴイルの叫び」作戦開催中!" }, - { "LanguageCode": "ko", "Message": "가고일의 외침이 지금 시작되었습니다!" }, - { "LanguageCode": "tc", "Message": "《嵌合長嘯》行動現已登場!" } - ], - "Prop": "https://www.warframe.com/news/operation-gargoyles-cry?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-OperationGargoylesCryLaunch", - "Date": { "$date": { "$numberLong": "1702930320000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/d9919b30fed2f5a5376d01a5ae7d2b05.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "6581bf424c4cd7a561075388" }, "Messages": [{ "LanguageCode": "en", "Message": "PSA: Clan Rank Decrease Temporarily Disabled" }], @@ -323,15 +194,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6585c0d16a6b17dcee047787" }, - "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.0.6" }], - "Prop": "https://forums.warframe.com/topic/1377693-whispers-in-the-walls-hotfix-3506/", - "Date": { "$date": { "$numberLong": "1703264400000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "658607bcce34ebee6b09b3a3" }, "Messages": [{ "LanguageCode": "en", "Message": "Cross Platform Save: Mid-Release Review (re-opens in JANUARY)" }], @@ -356,15 +218,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65873a2755795a7ee60e804d" }, - "Messages": [{ "LanguageCode": "es", "Message": " Susurros en las Paredes: Revisión 35.0.5 + 35.0.6" }], - "Prop": "https://forums.warframe.com/topic/1378072-susurros-en-las-paredes-revisi%C3%B3n-3505-3506/", - "Date": { "$date": { "$numberLong": "1703361000000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "65883db88cb3f2c420048454" }, "Messages": [{ "LanguageCode": "uk", "Message": "Міжплатформне збереження: відкривається знову в січні 2024" }], @@ -397,30 +250,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "6598395d0433a1c66c070c45" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Grendel Prime Access Ending Soon" }, - { "LanguageCode": "fr", "Message": "Le Prime Access Grendel Prime se termine bientôt" }, - { "LanguageCode": "it", "Message": "L'Accesso Grendel Prime Terminerà Presto" }, - { "LanguageCode": "de", "Message": "Grendel Prime Access endet bald" }, - { "LanguageCode": "es", "Message": "Prime Access de Grendel está por terminar" }, - { "LanguageCode": "pt", "Message": "O Prime Access do Grendel Prime terminará em breve" }, - { "LanguageCode": "ru", "Message": "Доступ Грендель Прайм скоро закончится" }, - { "LanguageCode": "pl", "Message": "Grendel Prime Access wkrótce się skończy" }, - { "LanguageCode": "uk", "Message": "Доступ до Ґренделя-прайм невдовзі завершується" }, - { "LanguageCode": "tr", "Message": "Grendel Prime Access Yakında Sona Eriyor" }, - { "LanguageCode": "ja", "Message": "Grendel Prime Accessが近日終了" }, - { "LanguageCode": "zh", "Message": "Grendel Prime Access 即将结束" }, - { "LanguageCode": "ko", "Message": "그렌델 프라임 액세스가 곧 종료됩니다" }, - { "LanguageCode": "tc", "Message": "Grendel Prime Access 即將結束" } - ], - "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-GrendelPrimeEndingSoon", - "Date": { "$date": { "$numberLong": "1704473220000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fc9e09a4ca79eddd55383762476c71e1_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65983e32a798c19dd4082312" }, "Messages": [ @@ -446,9 +275,189 @@ "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/09e25944d5374ec6e372c7ec7c297d67_1600x900.png", "Priority": false, "MobileOnly": false + }, + { + "_id": { "$oid": "659c719746192c8d270447b6" }, + "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #375!" }], + "Prop": "https://www.twitch.tv/warframe", + "Date": { "$date": { "$numberLong": "1704751320000" } }, + "EventStartDate": { "$date": { "$numberLong": "1705014000000" } }, + "EventEndDate": { "$date": { "$numberLong": "1705021200000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframe", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "659d9b7a23990fa16b0fc1dd" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Operation: Gargoyle’s Cry Ends Soon" }, + { "LanguageCode": "fr", "Message": "Bientôt terminé : Cri de la Gargouille" }, + { "LanguageCode": "it", "Message": "L'Operazione: Gargoyle’s Cry Terminerà Presto" }, + { "LanguageCode": "de", "Message": "Operation: Schrei des Gargoyles endet bald" }, + { "LanguageCode": "es", "Message": "La Operación: Grito de Gárgola está por terminar" }, + { "LanguageCode": "pt", "Message": "A Operação Clamor da Gárgula terminará em breve" }, + { "LanguageCode": "ru", "Message": "«Операция: Плач Горгульи» скоро закончится" }, + { "LanguageCode": "pl", "Message": "Operacja: Krzyk Gargulca już się kończy" }, + { "LanguageCode": "uk", "Message": "Операція: «Плач ґарґуйля» незабаром завершиться" }, + { "LanguageCode": "tr", "Message": "Operasyon: Gargoyle'ın Feryadı Yakında Sona Eriyor" }, + { "LanguageCode": "ja", "Message": "「ガーゴイルの叫び」作戦が近日終了" }, + { "LanguageCode": "zh", "Message": "《嵌合長嘯》行動即將結束" }, + { "LanguageCode": "ko", "Message": "작전명: 가고일의 외침이 곧 종료됩니다" }, + { "LanguageCode": "tc", "Message": "《嵌合長嘯》行動即將結束" } + ], + "Prop": "https://forums.warframe.com/topic/1375452-operation-gargoyles-cry-live-on-all-platforms/", + "Date": { "$date": { "$numberLong": "1704827640000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "659ec513b761b7f0b3100a77" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj - 35.0.7" }], + "Prop": "https://forums.warframe.com/topic/1380237-murmures-dans-les-murs%C2%A0-correctif-3507/", + "Date": { "$date": { "$numberLong": "1704903900000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "62dff6238607d6b5d80876f5" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Une ressource indispensable, le Wiki FR Warframe !" }], + "Prop": "https://warframe.fandom.com/fr/wiki/Wiki_Warframe", + "Date": { "$date": { "$numberLong": "1658851800000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2022_07/image.png.f54c43d80f7da00887a7c41471884c84.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "62ff8739293d0365d3046528" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Que faire après avoir terminé \"Le Trophée de Vor\"" }], + "Prop": "https://forums.warframe.com/topic/1315672-guide-que-faire-apr%C3%A8s-avoir-termin%C3%A9-le-troph%C3%A9e-de-vor/", + "Date": { "$date": { "$numberLong": "1660920600000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0bd16bb52c55ec09ca1168becb87b030.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "634d7f66679bbddde805723b" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[Guide] Intro aux Chasses aux Archontes" }], + "Prop": "https://forums.warframe.com/topic/1328159-guide-introduction-aux-chasses-aux-archontes/", + "Date": { "$date": { "$numberLong": "1666030440000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8c34580f18d0a489c282192bfc2a810b_1600x900.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "659ee5b8957e7618f306a56f" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Streams + Twitch Drops: Jan 11 - 12" }], + "Prop": "https://forums.warframe.com/topic/1380259-community-stream-schedule-december-jan-8-12-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CommunityStreams-08", + "Date": { "$date": { "$numberLong": "1704912180000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "659eeadf95858ca756032dff" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Gauss Prime Access Begins January 17" }, + { "LanguageCode": "fr", "Message": "Prime Access Gauss Prime : 17 janvier" }, + { "LanguageCode": "it", "Message": "L'Accesso Gauss Prime Inizia il 17 Gennaio" }, + { "LanguageCode": "de", "Message": "Gauss Prime Access beginnt am 17. Januar" }, + { "LanguageCode": "es", "Message": "Prime Access de Gauss comienza el 17 de enero" }, + { "LanguageCode": "pt", "Message": "O Prime Access do Gauss Prime estará disponível no dia 17 de janeiro" }, + { "LanguageCode": "ru", "Message": "Доступ Гаусса Прайм открывается 17 января" }, + { "LanguageCode": "pl", "Message": "Gauss Prime Access rozpoczyna się 17 stycznia" }, + { "LanguageCode": "uk", "Message": "Доступ до Ґаусса-прайм відкривається 17 січня" }, + { "LanguageCode": "tr", "Message": "Gauss Prime Access 17 Ocak'ta Başlıyor" }, + { "LanguageCode": "ja", "Message": "Gauss Prime Accessが1月18日に登場" }, + { "LanguageCode": "zh", "Message": "Gauss Prime Access 将于美东冬令时间 1 月 17 日登场" }, + { "LanguageCode": "ko", "Message": "가우스 프라임 액세스가 북미 시각 1월 17일 시작됩니다" }, + { "LanguageCode": "tc", "Message": "Gauss Prime Access 於美東冬令時間 1 月 17 日登場" } + ], + "Prop": "https://www.warframe.com/news/gauss-prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-GaussPrimeAccessAnnounceIGN", + "Date": { "$date": { "$numberLong": "1704913380000" } }, + "EventEndDate": { "$date": { "$numberLong": "1705467600000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/22f9399fc8ab62f336674db143f2de96_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "659eec73513fef0d62034aac" }, + "Messages": [{ "LanguageCode": "ja", "Message": "1月8日~1月12日の配信スケジュール" }], + "Prop": "https://bit.ly/3vBShk4", + "Date": { "$date": { "$numberLong": "1704913980000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.395673bf50e3d249d8a47403a1e9be45.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "659eeda5a62d3a40dd059ee9" }, + "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.0.7" }], + "Prop": "https://forums.warframe.com/topic/1380265-susurros-en-las-paredes-revisi%C3%B3n-3507/", + "Date": { "$date": { "$numberLong": "1704914280000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "659ef6fa1b371d4f7e0e78f6" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Drops Twitch : 8-12 janvier" }], + "Prop": "https://forums.warframe.com/topic/1380272-streams-communautaires-8-12-janvier/", + "Date": { "$date": { "$numberLong": "1704916680000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.d71181e729a8e0dd260b74aadc136e2c.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65a01c9fb68add02bf0642e7" }, + "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.0.8" }], + "Prop": "https://www.warframe.com/updates/pc/35-0-8", + "Date": { "$date": { "$numberLong": "1704991860000" } }, + "Priority": false, + "MobileOnly": false } ], "Goals": [ + { + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1704906000000" } }, + "Expiry": { "$date": { "$numberLong": "1706115600000" } }, + "Node": "SolNode129", + "ScoreVar": "FissuresClosed", + "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", + "Count": 5, + "HealthPct": 0.05, + "Regions": [1], + "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", + "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", + "OptionalInMission": true, + "Tag": "HeatFissure", + "UpgradeIds": [{ "$oid": "659da5c292ed3d8cfe475260" }, { "$oid": "659da5c292ed3d8cfe475261" }], + "Personal": true, + "Community": true, + "Goal": 100, + "Reward": { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], "countedItems": [] }, + "InterimGoals": [5, 25, 50, 75], + "InterimRewards": [ + { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], "countedItems": [] }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], + "countedItems": [] + }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], + "countedItems": [] + }, + { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], "countedItems": [] } + ] + }, { "_id": { "$oid": "658094c3a929ee19cc7aa4ce" }, "Activation": { "$date": { "$numberLong": "1702926000000" } }, @@ -466,281 +475,255 @@ "ScoreLocTag": "/Lotus/Language/EntratiLab/EntratiGeneral/EntratiEventMurmurNodes" } ], - "Alerts": [ - { - "_id": { "$oid": "6570f6593dd37a164e0e069e" }, - "Activation": { "$date": { "$numberLong": "1704470400000" } }, - "Expiry": { "$date": { "$numberLong": "1704729600000" } }, - "MissionInfo": { - "location": "SolNode402", - "missionType": "MT_DEFENSE", - "faction": "FC_OROKIN", - "difficulty": 1, - "missionReward": { "credits": 30000, "items": ["/Lotus/StoreItems/Upgrades/Mods/Warframe/DualStat/CorruptedEfficiencyDurationWarframe"] }, - "levelOverride": "/Lotus/Levels/Proc/Orokin/OrokinTowerDefense", - "enemySpec": "/Lotus/Types/Game/EnemySpecs/OrokinDefenseSquadB", - "minEnemyLevel": 10, - "maxEnemyLevel": 15, - "maxWaveNum": 10 - } - } - ], + "Alerts": [], "Sorties": [ { - "_id": { "$oid": "6598320df46f603a49ca4362" }, - "Activation": { "$date": { "$numberLong": "1704474000000" } }, - "Expiry": { "$date": { "$numberLong": "1704560400000" } }, + "_id": { "$oid": "65a01b0e91cf44fa728fa9ac" }, + "Activation": { "$date": { "$numberLong": "1704992400000" } }, + "Expiry": { "$date": { "$numberLong": "1705078800000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 35109, - "Boss": "SORTIE_BOSS_RUK", + "Seed": 1696, + "Boss": "SORTIE_BOSS_AMBULAS", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode96", "tileset": "GrineerGalleonTileset" }, - { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode748", "tileset": "GrineerFortressTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SNIPER_ONLY", "node": "SolNode46", "tileset": "GrineerSettlementTileset" } + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_SNIPER_ONLY", "node": "SolNode43", "tileset": "CorpusOutpostTileset" }, + { "missionType": "MT_TERRITORY", "modifierType": "SORTIE_MODIFIER_MELEE_ONLY", "node": "SolNode10", "tileset": "CorpusGasCityTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode215", "tileset": "CorpusShipTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "6591fcfddcd072b88de858a7" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, + "_id": { "$oid": "659b377d0573b98446ffa294" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 46899, - "Boss": "SORTIE_BOSS_NIRA", + "Seed": 75293, + "Boss": "SORTIE_BOSS_BOREAL", "Missions": [ - { "missionType": "MT_SABOTAGE", "node": "SolNode121" }, - { "missionType": "MT_TERRITORY", "node": "SolNode10" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } + { "missionType": "MT_EXTERMINATION", "node": "SolNode79" }, + { "missionType": "MT_EXCAVATE", "node": "SolNode26" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "659835564c9f6830d8a7785e" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e556c7ede78154b9f74" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "ArbitersSyndicate", - "Seed": 35109, - "Nodes": ["SolNode27", "SolNode11", "SolNode18", "SettlementNode1", "SolNode2", "SolNode146", "SolNode217"] + "Seed": 1696, + "Nodes": ["SolNode30", "SolNode61", "SolNode27", "SolNode70", "SolNode84", "SolNode412", "SolNode76"] }, { - "_id": { "$oid": "659835564c9f6830d8a7785f" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 41134, - "Nodes": ["SolNode226", "SolNode30", "SolNode711", "SolNode214", "SolNode162", "SolNode102", "SolNode67"] - }, - { - "_id": { "$oid": "659835564c9f6830d8a77860" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 80261, - "Nodes": [] - }, - { - "_id": { "$oid": "659835564c9f6830d8a77861" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f77" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "EventSyndicate", - "Seed": 29248, + "Seed": 21478, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77862" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f75" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 20607, + "Nodes": ["SolNode36", "SolNode2", "SolNode709", "SolNode89", "SolNode166", "SolNode20", "SolNode4"] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f76" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 8731, + "Nodes": [] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f78" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "KahlSyndicate", - "Seed": 57839, + "Seed": 84508, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77864" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f7a" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "QuillsSyndicate", - "Seed": 56241, + "Seed": 35173, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77863" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f79" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "NewLokaSyndicate", - "Seed": 82392, - "Nodes": ["SolNode101", "SolNode39", "SettlementNode14", "SolNode100", "SolNode189", "SolNode140", "SolNode205"] + "Seed": 28994, + "Nodes": ["SolNode41", "SolNode79", "SolNode88", "SolNode707", "SolNode103", "SolNode172", "SolNode42"] }, { - "_id": { "$oid": "659835564c9f6830d8a77865" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f7b" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "PerrinSyndicate", - "Seed": 18654, - "Nodes": ["SolNode119", "SolNode45", "SolNode141", "SolNode73", "SolNode403", "SolNode181", "SolNode61"] + "Seed": 66902, + "Nodes": ["SolNode16", "SolNode26", "SolNode711", "SolNode82", "SolNode17", "SolNode125", "SettlementNode14"] }, { - "_id": { "$oid": "659835564c9f6830d8a77866" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f7c" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 27071, + "Seed": 48390, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77868" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 23888, - "Nodes": [] - }, - { - "_id": { "$oid": "659835564c9f6830d8a77867" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f7d" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 7591, + "Seed": 95756, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77869" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 99726, + "_id": { "$oid": "65a01e566c7ede78154b9f7e" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 53283, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a7786f" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 69343, - "Nodes": [] - }, - { - "_id": { "$oid": "659835564c9f6830d8a7786d" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 55294, - "Nodes": [] - }, - { - "_id": { "$oid": "659835564c9f6830d8a7786e" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 11252, - "Nodes": [] - }, - { - "_id": { "$oid": "659835564c9f6830d8a7786c" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 99928, - "Nodes": [] - }, - { - "_id": { "$oid": "659835564c9f6830d8a7786a" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f80" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 77391, + "Seed": 60542, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a7786b" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f82" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 89920, + "Nodes": [] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f85" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 47838, + "Nodes": [] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f83" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 69540, + "Nodes": [] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f81" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 39908, + "Seed": 20769, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77870" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f84" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 13023, + "Nodes": [] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f7f" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 3994, + "Nodes": [] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f86" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 82965, + "Seed": 64418, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77871" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f87" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 79586, + "Seed": 71712, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77872" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 49638, - "Nodes": ["SolNode225", "SolNode41", "SettlementNode2", "SolNode149", "SolNode48", "SolNode64", "SolNode126"] - }, - { - "_id": { "$oid": "659835564c9f6830d8a77874" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, - "Tag": "VoxSyndicate", - "Seed": 27464, - "Nodes": [] - }, - { - "_id": { "$oid": "659835564c9f6830d8a77873" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f89" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "VentKidsSyndicate", - "Seed": 72638, + "Seed": 40485, "Nodes": [] }, { - "_id": { "$oid": "659835564c9f6830d8a77875" }, - "Activation": { "$date": { "$numberLong": "1704473942005" } }, - "Expiry": { "$date": { "$numberLong": "1704560340000" } }, + "_id": { "$oid": "65a01e566c7ede78154b9f8a" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "VoxSyndicate", + "Seed": 70490, + "Nodes": [] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f88" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 19414, + "Nodes": ["SolNode46", "SolNode109", "SolNode212", "SolNode137", "SolNode67", "SolNode223", "SolNode181"] + }, + { + "_id": { "$oid": "65a01e566c7ede78154b9f8b" }, + "Activation": { "$date": { "$numberLong": "1704992341970" } }, + "Expiry": { "$date": { "$numberLong": "1705078740000" } }, "Tag": "SteelMeridianSyndicate", - "Seed": 59732, - "Nodes": ["SolNode14", "SolNode63", "SolNode706", "SettlementNode12", "SolNode216", "SolNode57", "SolNode22"] + "Seed": 52322, + "Nodes": ["SolNode39", "SolNode66", "SolNode58", "SolNode139", "SolNode102", "SolNode119", "SolNode64"] }, { - "_id": { "$oid": "659960a80000000000000004" }, - "Activation": { "$date": { "$numberLong": "1704550568258" } }, - "Expiry": { "$date": { "$numberLong": "1704559567132" } }, - "Tag": "EntratiLabSyndicate", - "Seed": 47257, - "Nodes": [] - }, - { - "_id": { "$oid": "659960a80000000000000002" }, - "Activation": { "$date": { "$numberLong": "1704550568258" } }, - "Expiry": { "$date": { "$numberLong": "1704559567132" } }, + "_id": { "$oid": "65a061660000000000000002" }, + "Activation": { "$date": { "$numberLong": "1705009510873" } }, + "Expiry": { "$date": { "$numberLong": "1705018509747" } }, "Tag": "EntratiSyndicate", - "Seed": 47257, + "Seed": 2861, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [5, 5, 5] + "xpAmounts": [4, 4, 4] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [10, 10, 10] + "xpAmounts": [11, 11, 11] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", @@ -753,23 +736,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [16, 16, 16, 25] + "xpAmounts": [18, 18, 18, 27] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [22, 22, 22, 22, 43] + "xpAmounts": [21, 21, 21, 21, 41] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -806,44 +789,52 @@ ] }, { - "_id": { "$oid": "659960a80000000000000008" }, - "Activation": { "$date": { "$numberLong": "1704550568258" } }, - "Expiry": { "$date": { "$numberLong": "1704559567132" } }, + "_id": { "$oid": "65a061660000000000000004" }, + "Activation": { "$date": { "$numberLong": "1705009510873" } }, + "Expiry": { "$date": { "$numberLong": "1705018509747" } }, + "Tag": "EntratiLabSyndicate", + "Seed": 2862, + "Nodes": [] + }, + { + "_id": { "$oid": "65a061660000000000000008" }, + "Activation": { "$date": { "$numberLong": "1705009510873" } }, + "Expiry": { "$date": { "$numberLong": "1705018509747" } }, "Tag": "CetusSyndicate", - "Seed": 47257, + "Seed": 2861, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [490, 490, 490] + "xpAmounts": [430, 430, 430] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [630, 630, 630] + "xpAmounts": [620, 620, 620] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [570, 570, 570, 830] + "xpAmounts": [600, 600, 600, 890] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [600, 600, 600, 600, 1170] + "xpAmounts": [590, 590, 590, 590, 1160] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", @@ -851,7 +842,7 @@ "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [700, 700, 700, 700, 1380] + "xpAmounts": [750, 750, 750, 750, 1470] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", @@ -867,60 +858,60 @@ "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1610] + "xpAmounts": [810, 810, 810, 810, 1580] } ] }, { - "_id": { "$oid": "659960a80000000000000024" }, - "Activation": { "$date": { "$numberLong": "1704550568258" } }, - "Expiry": { "$date": { "$numberLong": "1704559567132" } }, + "_id": { "$oid": "65a061660000000000000024" }, + "Activation": { "$date": { "$numberLong": "1705009510873" } }, + "Expiry": { "$date": { "$numberLong": "1705018509747" } }, "Tag": "SolarisSyndicate", - "Seed": 47257, + "Seed": 2861, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] + "xpAmounts": [400, 400, 400] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobAmbush", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [620, 620, 620] + "xpAmounts": [720, 720, 720] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [670, 670, 670, 980] + "xpAmounts": [650, 650, 650, 960] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [600, 600, 600, 600, 1170] + "xpAmounts": [560, 560, 560, 560, 1100] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1360] + "xpAmounts": [760, 760, 760, 760, 1480] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -928,266 +919,265 @@ "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [770, 770, 770, 770, 1510] + "xpAmounts": [790, 790, 790, 790, 1550] } ] }, { - "_id": { "$oid": "659960a80000000000000028" }, - "Activation": { "$date": { "$numberLong": "1704550568258" } }, - "Expiry": { "$date": { "$numberLong": "1704559567132" } }, + "_id": { "$oid": "65a061660000000000000028" }, + "Activation": { "$date": { "$numberLong": "1705009510873" } }, + "Expiry": { "$date": { "$numberLong": "1705018509747" } }, "Tag": "ZarimanSyndicate", - "Seed": 47257, + "Seed": 2862, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "6599595d25bdc25c1ecedbc6" }, + "_id": { "$oid": "65a07023f58b4c9a94eb83c1" }, "Region": 13, - "Seed": 88339, - "Activation": { "$date": { "$numberLong": "1704548701758" } }, - "Expiry": { "$date": { "$numberLong": "1704555758279" } }, - "Node": "SolNode205", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "6599595d25bdc25c1ecedbc7" }, - "Region": 7, - "Seed": 89653, - "Activation": { "$date": { "$numberLong": "1704548701758" } }, - "Expiry": { "$date": { "$numberLong": "1704555378519" } }, - "Node": "SolNode64", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "659959d62408c1087e9abd91" }, - "Region": 19, - "Seed": 42602, - "Activation": { "$date": { "$numberLong": "1704548822127" } }, - "Expiry": { "$date": { "$numberLong": "1704555475986" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "659963ad419074eadcc36f6d" }, - "Region": 19, - "Seed": 64193, - "Activation": { "$date": { "$numberLong": "1704551341949" } }, - "Expiry": { "$date": { "$numberLong": "1704557390513" } }, - "Node": "SolNode741", - "MissionType": "MT_ASSAULT", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "659963ad419074eadcc36f6e" }, - "Region": 19, - "Seed": 71201, - "Activation": { "$date": { "$numberLong": "1704551341949" } }, - "Expiry": { "$date": { "$numberLong": "1704558487644" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "6599646199349b9f72d4c608" }, - "Region": 5, - "Seed": 63813, - "Activation": { "$date": { "$numberLong": "1704551521372" } }, - "Expiry": { "$date": { "$numberLong": "1704557321450" } }, - "Node": "SolNode88", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "6599646199349b9f72d4c609" }, - "Region": 16, - "Seed": 98495, - "Activation": { "$date": { "$numberLong": "1704551521372" } }, - "Expiry": { "$date": { "$numberLong": "1704557081572" } }, - "Node": "SettlementNode12", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "6599646199349b9f72d4c60a" }, - "Region": 10, - "Seed": 21656, - "Activation": { "$date": { "$numberLong": "1704551521372" } }, - "Expiry": { "$date": { "$numberLong": "1704556608408" } }, - "Node": "SolNode131", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "65996a01002c9bd2a8030751" }, - "Region": 7, - "Seed": 7737, - "Activation": { "$date": { "$numberLong": "1704552961863" } }, - "Expiry": { "$date": { "$numberLong": "1704558819693" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "65996a01002c9bd2a8030752" }, - "Region": 13, - "Seed": 77774, - "Activation": { "$date": { "$numberLong": "1704552961863" } }, - "Expiry": { "$date": { "$numberLong": "1704558976409" } }, + "Seed": 39232, + "Activation": { "$date": { "$numberLong": "1705013281535" } }, + "Expiry": { "$date": { "$numberLong": "1705018594074" } }, "Node": "SolNode209", "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT3" + "Modifier": "VoidT3", + "Hard": true }, { - "_id": { "$oid": "65996b6922a7b7cdd3063406" }, - "Region": 4, - "Seed": 55473, - "Activation": { "$date": { "$numberLong": "1704553321777" } }, - "Expiry": { "$date": { "$numberLong": "1704559417204" } }, - "Node": "SolNode68", + "_id": { "$oid": "65a07024f58b4c9a94eb83c2" }, + "Region": 7, + "Seed": 59922, + "Activation": { "$date": { "$numberLong": "1705013281535" } }, + "Expiry": { "$date": { "$numberLong": "1705018667988" } }, + "Node": "SolNode122", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "65a0714d7cdf1943353a0592" }, + "Region": 12, + "Seed": 73278, + "Activation": { "$date": { "$numberLong": "1705013581791" } }, + "Expiry": { "$date": { "$numberLong": "1705020707853" } }, + "Node": "SolNode181", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "65a0727922c78e8f5fb60b47" }, + "Region": 19, + "Seed": 40682, + "Activation": { "$date": { "$numberLong": "1705013881965" } }, + "Expiry": { "$date": { "$numberLong": "1705020618878" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65a0727922c78e8f5fb60b48" }, + "Region": 19, + "Seed": 83784, + "Activation": { "$date": { "$numberLong": "1705013881965" } }, + "Expiry": { "$date": { "$numberLong": "1705018576588" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65a0727a22c78e8f5fb60b49" }, + "Region": 19, + "Seed": 7212, + "Activation": { "$date": { "$numberLong": "1705013881965" } }, + "Expiry": { "$date": { "$numberLong": "1705018398825" } }, + "Node": "SolNode743", "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT1" + "Modifier": "VoidT5" }, { - "_id": { "$oid": "65996b6922a7b7cdd3063407" }, - "Region": 3, - "Seed": 8227, - "Activation": { "$date": { "$numberLong": "1704553321777" } }, - "Expiry": { "$date": { "$numberLong": "1704559708597" } }, - "Node": "SolNode85", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "65996b6922a7b7cdd3063408" }, - "Region": 3, - "Seed": 33892, - "Activation": { "$date": { "$numberLong": "1704553321777" } }, - "Expiry": { "$date": { "$numberLong": "1704558935177" } }, - "Node": "SolNode89", + "_id": { "$oid": "65a073a6483fc3545eb47738" }, + "Region": 4, + "Seed": 45953, + "Activation": { "$date": { "$numberLong": "1705014182081" } }, + "Expiry": { "$date": { "$numberLong": "1705019580012" } }, + "Node": "SolNode58", "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "65996b6922a7b7cdd3063409" }, + "_id": { "$oid": "65a073a6483fc3545eb47739" }, "Region": 2, - "Seed": 11544, - "Activation": { "$date": { "$numberLong": "1704553321777" } }, - "Expiry": { "$date": { "$numberLong": "1704557337139" } }, - "Node": "SolNode23", - "MissionType": "MT_TERRITORY", + "Seed": 18908, + "Activation": { "$date": { "$numberLong": "1705014182081" } }, + "Expiry": { "$date": { "$numberLong": "1705020837721" } }, + "Node": "SolNode101", + "MissionType": "MT_EXCAVATE", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "65996be1095ba09968e5c293" }, - "Region": 15, - "Seed": 52866, - "Activation": { "$date": { "$numberLong": "1704553441173" } }, - "Expiry": { "$date": { "$numberLong": "1704557944185" } }, - "Node": "SolNode402", + "_id": { "$oid": "65a073e1d9c07556623537ee" }, + "Region": 19, + "Seed": 31683, + "Activation": { "$date": { "$numberLong": "1705014241266" } }, + "Expiry": { "$date": { "$numberLong": "1705020703541" } }, + "Node": "SolNode742", "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4" + "Modifier": "VoidT5", + "Hard": true }, { - "_id": { "$oid": "65996be1095ba09968e5c294" }, - "Region": 12, - "Seed": 11006, - "Activation": { "$date": { "$numberLong": "1704553441173" } }, - "Expiry": { "$date": { "$numberLong": "1704557156372" } }, - "Node": "SolNode196", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4" + "_id": { "$oid": "65a073e1d9c07556623537ef" }, + "Region": 19, + "Seed": 9354, + "Activation": { "$date": { "$numberLong": "1705014241266" } }, + "Expiry": { "$date": { "$numberLong": "1705021040431" } }, + "Node": "SolNode744", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT5", + "Hard": true }, { - "_id": { "$oid": "65996cd141e495c8170329f1" }, - "Region": 6, - "Seed": 83840, - "Activation": { "$date": { "$numberLong": "1704553681856" } }, - "Expiry": { "$date": { "$numberLong": "1704559075854" } }, - "Node": "SolNode67", + "_id": { "$oid": "65a073e1d9c07556623537f0" }, + "Region": 19, + "Seed": 78460, + "Activation": { "$date": { "$numberLong": "1705014241266" } }, + "Expiry": { "$date": { "$numberLong": "1705019928415" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "65a077dd6cad60ba004377cc" }, + "Region": 3, + "Seed": 64334, + "Activation": { "$date": { "$numberLong": "1705015261138" } }, + "Expiry": { "$date": { "$numberLong": "1705019468913" } }, + "Node": "SolNode75", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "65a077dd6cad60ba004377cd" }, + "Region": 4, + "Seed": 94454, + "Activation": { "$date": { "$numberLong": "1705015261138" } }, + "Expiry": { "$date": { "$numberLong": "1705020848756" } }, + "Node": "SolNode41", "MissionType": "MT_INTEL", - "Modifier": "VoidT2" + "Modifier": "VoidT1" }, { - "_id": { "$oid": "65996cd141e495c8170329f2" }, - "Region": 10, - "Seed": 94654, - "Activation": { "$date": { "$numberLong": "1704553681856" } }, - "Expiry": { "$date": { "$numberLong": "1704559395779" } }, - "Node": "SolNode141", + "_id": { "$oid": "65a0781921502a71702de848" }, + "Region": 12, + "Seed": 7407, + "Activation": { "$date": { "$numberLong": "1705015321320" } }, + "Expiry": { "$date": { "$numberLong": "1705019438510" } }, + "Node": "SolNode185", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65a0781921502a71702de849" }, + "Region": 9, + "Seed": 15341, + "Activation": { "$date": { "$numberLong": "1705015321320" } }, + "Expiry": { "$date": { "$numberLong": "1705020187407" } }, + "Node": "SolNode102", + "MissionType": "MT_INTEL", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65a0781921502a71702de84a" }, + "Region": 11, + "Seed": 83357, + "Activation": { "$date": { "$numberLong": "1705015321320" } }, + "Expiry": { "$date": { "$numberLong": "1705020716978" } }, + "Node": "SolNode153", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65a079bd6df460ead44edec4" }, + "Region": 6, + "Seed": 2140, + "Activation": { "$date": { "$numberLong": "1705015741404" } }, + "Expiry": { "$date": { "$numberLong": "1705020616786" } }, + "Node": "SolNode82", "MissionType": "MT_SABOTAGE", "Modifier": "VoidT2" }, { - "_id": { "$oid": "65996cd141e495c8170329f3" }, + "_id": { "$oid": "65a079bd6df460ead44edec5" }, "Region": 16, - "Seed": 59379, - "Activation": { "$date": { "$numberLong": "1704553681856" } }, - "Expiry": { "$date": { "$numberLong": "1704558778504" } }, - "Node": "SettlementNode14", - "MissionType": "MT_INTEL", + "Seed": 92789, + "Activation": { "$date": { "$numberLong": "1705015741404" } }, + "Expiry": { "$date": { "$numberLong": "1705021351863" } }, + "Node": "SettlementNode1", + "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT2" }, { - "_id": { "$oid": "65996d0e7e8c0b39805f9d2f" }, + "_id": { "$oid": "65a07a35778570f065d3af99" }, + "Region": 16, + "Seed": 48093, + "Activation": { "$date": { "$numberLong": "1705015861827" } }, + "Expiry": { "$date": { "$numberLong": "1705019577074" } }, + "Node": "SettlementNode15", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65a07a35778570f065d3af9a" }, + "Region": 5, + "Seed": 59319, + "Activation": { "$date": { "$numberLong": "1705015861827" } }, + "Expiry": { "$date": { "$numberLong": "1705020121287" } }, + "Node": "SolNode74", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65a07a35778570f065d3af9b" }, + "Region": 6, + "Seed": 66429, + "Activation": { "$date": { "$numberLong": "1705015861827" } }, + "Expiry": { "$date": { "$numberLong": "1705021256994" } }, + "Node": "SolNode42", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65a07cc9ef03e3080839e257" }, "Region": 15, - "Seed": 67983, - "Activation": { "$date": { "$numberLong": "1704553742063" } }, - "Expiry": { "$date": { "$numberLong": "1704558731665" } }, + "Seed": 82496, + "Activation": { "$date": { "$numberLong": "1705016521897" } }, + "Expiry": { "$date": { "$numberLong": "1705022742145" } }, "Node": "SolNode409", "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT4", - "Hard": true + "Modifier": "VoidT3" }, { - "_id": { "$oid": "65996d0e7e8c0b39805f9d30" }, - "Region": 11, - "Seed": 74682, - "Activation": { "$date": { "$numberLong": "1704553742063" } }, - "Expiry": { "$date": { "$numberLong": "1704557791586" } }, - "Node": "SolNode173", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "65996d0e7e8c0b39805f9d31" }, - "Region": 9, - "Seed": 15538, - "Activation": { "$date": { "$numberLong": "1704553742063" } }, - "Expiry": { "$date": { "$numberLong": "1704557868519" } }, - "Node": "SolNode72", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "659972aebdefee45d6c87d6b" }, - "Region": 19, - "Seed": 5511, - "Activation": { "$date": { "$numberLong": "1704555182038" } }, - "Expiry": { "$date": { "$numberLong": "1704561187882" } }, - "Node": "SolNode742", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT5" + "_id": { "$oid": "65a07cc9ef03e3080839e258" }, + "Region": 13, + "Seed": 62858, + "Activation": { "$date": { "$numberLong": "1705016521897" } }, + "Expiry": { "$date": { "$numberLong": "1705023590153" } }, + "Node": "SolNode216", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT3" } ], "GlobalUpgrades": [], @@ -1403,59 +1393,43 @@ }, "Invasions": [ { - "_id": { "$oid": "65979c0df1c7a9161bfd0867" }, + "_id": { "$oid": "659e39691c7e013e23a73040" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode196", - "Count": -6144, + "Node": "SolNode189", + "Count": 36066, "Goal": 36000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "659348a1828ed5fd1886eeb5" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 119225, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 130701, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1704869025650" } } + }, + { + "_id": { "$oid": "65a06f6d2ad7c660a79bd8fc" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode184", + "Count": 396, + "Goal": 33000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, "ChainID": { "$oid": "659348a1828ed5fd1886eeb5" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 404308, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 681215, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1704435349138" } } - }, - { - "_id": { "$oid": "659786f5a5663c49db7f7450" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode51", - "Count": -30011, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "65974c5d8c545041bbaad208" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 180036, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 734207, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1704429301149" } } - }, - { - "_id": { "$oid": "65977436f5ef62271799cd7d" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode62", - "Count": 13573, - "Goal": 45000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65977436f5ef62271799cd7d" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithBarrel", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 335652, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalStock", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 114617, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1704496199605" } } + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 632908, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 897470, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1705013931100" } } }, { "_id": { "$oid": "65979c0df1c7a9161bfd0868" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", "Node": "SolNode187", - "Count": -3142, + "Count": 30404, "Goal": 47000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, @@ -1467,68 +1441,116 @@ "Activation": { "$date": { "$numberLong": "1704509479191" } } }, { - "_id": { "$oid": "6597db56de4a78820af945e6" }, + "_id": { "$oid": "659e545e083da62ea00d3166" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode97", + "Count": -21391, + "Goal": 37000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "659e545e083da62ea00d3166" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 650150, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 256790, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1704924874857" } } + }, + { + "_id": { "$oid": "659f29a58d69717e879621ad" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", "Node": "SolNode99", - "Count": -30102, + "Count": -25525, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": false, + "ChainID": { "$oid": "659f01ce83dbcc7fed11455a" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 626946, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 437547, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1704929701945" } } + }, + { + "_id": { "$oid": "659f89bd578c5d60d376d09c" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode65", + "Count": -38541, + "Goal": 38000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "6597aff9e9c5ac11dfcdfe90" }, + "ChainID": { "$oid": "659f01ce83dbcc7fed11455a" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 803034, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 239664, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1704450902042" } } + "AttackerMissionInfo": { "seed": 717502, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 702743, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1704954301453" } } }, { - "_id": { "$oid": "65992cd5eeae97743aca67fd" }, + "_id": { "$oid": "659f8639bf11e67818631e24" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode42", - "Count": -21975, - "Goal": 34000, + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode81", + "Count": -40541, + "Goal": 40000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65992cd5eeae97743aca67fd" }, + "Completed": true, + "ChainID": { "$oid": "659f8639bf11e67818631e24" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 642142, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 778617, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1704542201390" } } + "AttackerMissionInfo": { "seed": 441177, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 607746, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1704958263294" } } }, { - "_id": { "$oid": "659955d90ec412d0f19f5173" }, + "_id": { "$oid": "659fbaf5a4105b8315e6d9a2" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode19", - "Count": -1145, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65992cd5eeae97743aca67fd" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 733256, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 226984, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1704547801551" } } - }, - { - "_id": { "$oid": "659955d90ec412d0f19f5174" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode32", - "Count": -5510, + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode51", + "Count": -11477, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "65992cd5eeae97743aca67fd" }, + "ChainID": { "$oid": "659f8639bf11e67818631e24" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 657818, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 585189, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1704547801551" } } + "AttackerMissionInfo": { "seed": 849909, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 224039, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1704966901888" } } + }, + { + "_id": { "$oid": "659fbaf5a4105b8315e6d9a3" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode43", + "Count": -46148, + "Goal": 46000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "659f8639bf11e67818631e24" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 584657, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 114651, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1704966901888" } } + }, + { + "_id": { "$oid": "659fe075276afd63081413b3" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode56", + "Count": -37399, + "Goal": 37000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "659f8639bf11e67818631e24" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 963884, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 302006, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1704976501936" } } } ], "HubEvents": [], @@ -1536,7 +1558,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9799953 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9809380 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1550,6 +1572,22 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } + }, + { + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1704906000000" } }, + "Expiry": { "$date": { "$numberLong": "1706115600000" } }, + "Node": "SolNode129", + "Faction": "FC_CORPUS", + "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] + }, + { + "_id": { "$oid": "65a06f6d2ad7c660a79bd8fb" }, + "Node": "SolNode189", + "Faction": "FC_CORPUS", + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadD", + "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/RescueCorrupted", + "Expiry": { "$date": { "$numberLong": "1705061533890" } } } ], "VoidTraders": [ @@ -1696,93 +1734,52 @@ }, { "Expiry": { "$date": { "$numberLong": "1705604400000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, { "Expiry": { "$date": { "$numberLong": "1706814000000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, - { "Expiry": { "$date": { "$numberLong": "1708023600000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" } + { "Expiry": { "$date": { "$numberLong": "1708023600000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, + { "Expiry": { "$date": { "$numberLong": "1710442800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1706814000000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "6599538219418ebd4f6e9b5f" }, + "_id": { "$oid": "65a06992eb3e823212dda837" }, "Node": "CrewBattleNode518", - "Activation": { "$date": { "$numberLong": "1704550801821" } }, - "Expiry": { "$date": { "$numberLong": "1704556201821" } }, + "Activation": { "$date": { "$numberLong": "1705015201821" } }, + "Expiry": { "$date": { "$numberLong": "1705020601821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "6599538219418ebd4f6e9b64" }, - "Node": "CrewBattleNode539", - "Activation": { "$date": { "$numberLong": "1704550801834" } }, - "Expiry": { "$date": { "$numberLong": "1704556201834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "6599538219418ebd4f6e9b62" }, - "Node": "CrewBattleNode521", - "Activation": { "$date": { "$numberLong": "1704550801829" } }, - "Expiry": { "$date": { "$numberLong": "1704556201829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "6599538219418ebd4f6e9b60" }, - "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1704550801825" } }, - "Expiry": { "$date": { "$numberLong": "1704556201825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "6599538219418ebd4f6e9b61" }, - "Node": "CrewBattleNode534", - "Activation": { "$date": { "$numberLong": "1704550801827" } }, - "Expiry": { "$date": { "$numberLong": "1704556201827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "6599538219418ebd4f6e9b63" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1704550801832" } }, - "Expiry": { "$date": { "$numberLong": "1704556201832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65996641accd4cc7867ee02d" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1704554401821" } }, - "Expiry": { "$date": { "$numberLong": "1704559801821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65996641accd4cc7867ee030" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1704554401829" } }, - "Expiry": { "$date": { "$numberLong": "1704559801829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "65996641accd4cc7867ee02f" }, - "Node": "CrewBattleNode533", - "Activation": { "$date": { "$numberLong": "1704554401827" } }, - "Expiry": { "$date": { "$numberLong": "1704559801827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "65996641accd4cc7867ee032" }, - "Node": "CrewBattleNode543", - "Activation": { "$date": { "$numberLong": "1704554401834" } }, - "Expiry": { "$date": { "$numberLong": "1704559801834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65996641accd4cc7867ee02e" }, + "_id": { "$oid": "65a06992eb3e823212dda838" }, "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1704554401825" } }, - "Expiry": { "$date": { "$numberLong": "1704559801825" } }, + "Activation": { "$date": { "$numberLong": "1705015201825" } }, + "Expiry": { "$date": { "$numberLong": "1705020601825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65996641accd4cc7867ee031" }, - "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1704554401832" } }, - "Expiry": { "$date": { "$numberLong": "1704559801832" } }, + "_id": { "$oid": "65a06992eb3e823212dda839" }, + "Node": "CrewBattleNode535", + "Activation": { "$date": { "$numberLong": "1705015201827" } }, + "Expiry": { "$date": { "$numberLong": "1705020601827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "65a06992eb3e823212dda83b" }, + "Node": "CrewBattleNode531", + "Activation": { "$date": { "$numberLong": "1705015201832" } }, + "Expiry": { "$date": { "$numberLong": "1705020601832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65a06992eb3e823212dda83a" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1705015201829" } }, + "Expiry": { "$date": { "$numberLong": "1705020601829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "65a06992eb3e823212dda83c" }, + "Node": "CrewBattleNode550", + "Activation": { "$date": { "$numberLong": "1705015201834" } }, + "Expiry": { "$date": { "$numberLong": "1705020601834" } }, "ActiveMissionTier": "VoidT4" } ], @@ -1791,14 +1788,14 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Pistol/CrossBow", - "Activation": { "$date": { "$numberLong": "1704481200000" } }, - "Expiry": { "$date": { "$numberLong": "1704574800000" } }, - "Discount": 50, - "OriginalPrice": 175, - "SalePrice": 87, - "AmountTotal": 200, - "AmountSold": 30 + "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Pistols/TnBardPistol/TnBardPistolGun", + "Activation": { "$date": { "$numberLong": "1704949200000" } }, + "Expiry": { "$date": { "$numberLong": "1705042800000" } }, + "Discount": 20, + "OriginalPrice": 190, + "SalePrice": 152, + "AmountTotal": 300, + "AmountSold": 18 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, @@ -1848,10 +1845,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6598af7191b9e0eea5d5e293" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "_id": { "$oid": "659f4a75024bb3482052a870" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -1859,10 +1856,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6598af7191b9e0eea5d5e292" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "_id": { "$oid": "659f4a75024bb3482052a871" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -1870,10 +1867,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6598af7191b9e0eea5d5e295" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "_id": { "$oid": "659f4a75024bb3482052a872" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeHARD", + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -1881,71 +1878,71 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6598af7191b9e0eea5d5e294" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPaybackEASY", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6598af7191b9e0eea5d5e296" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6598af7191b9e0eea5d5e299" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsEASY", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6598af7191b9e0eea5d5e298" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesHARD", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6598af7191b9e0eea5d5e297" }, + "_id": { "$oid": "659f4a75024bb3482052a873" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakStoppedEASY", - "startDate": { "$date": { "$numberLong": "1704505201665" } }, - "endDate": { "$date": { "$numberLong": "1704591601665" } }, + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "659f4a75024bb3482052a874" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM", + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "659f4a75024bb3482052a875" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "659f4a75024bb3482052a876" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY", + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "659f4a75024bb3482052a877" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM", + "startDate": { "$date": { "$numberLong": "1704938101479" } }, + "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [38.73147325043345, 25.356565957635535, 0], + "ProjectPct": [43.75829263950812, 32.356342260671504, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Ash", "Frost", "Nyx"] }, - { "Category": "EXC_HARD", "Choices": ["Bo", "Latron", "Furis", "Furax", "Strun"] } + { "Category": "EXC_NORMAL", "Choices": ["Saryn", "Vauban", "Nova"] }, + { "Category": "EXC_HARD", "Choices": ["Lex", "Magistar", "Boltor", "Bronco", "CeramicDagger"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ @@ -1965,69 +1962,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001200060000000000000084" }, + "_id": { "$oid": "001200070000000000000097" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1704326400000" } }, - "Expiry": { "$date": { "$numberLong": "1704585600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySuspendFiveEnemies" + "Activation": { "$date": { "$numberLong": "1704844800000" } }, + "Expiry": { "$date": { "$numberLong": "1705104000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyVisitFeaturedDojo" }, { - "_id": { "$oid": "001200060000000000000085" }, + "_id": { "$oid": "001200070000000000000098" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1704412800000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCodexScan" + "Activation": { "$date": { "$numberLong": "1704931200000" } }, + "Expiry": { "$date": { "$numberLong": "1705190400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyPickUpMods" }, { - "_id": { "$oid": "001200060000000000000086" }, + "_id": { "$oid": "001200070000000000000099" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1704499200000" } }, - "Expiry": { "$date": { "$numberLong": "1704758400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithAbilities" + "Activation": { "$date": { "$numberLong": "1705017600000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithMelee" }, { - "_id": { "$oid": "001200060000000000000074" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions6" + "_id": { "$oid": "001200070000000000000088" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions7" }, { - "_id": { "$oid": "001200060000000000000075" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus6" + "_id": { "$oid": "001200070000000000000089" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus7" }, { - "_id": { "$oid": "001200060000000000000076" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies6" + "_id": { "$oid": "001200070000000000000090" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies7" }, { - "_id": { "$oid": "001200060000000000000077" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyDestroyCrewshipArtillery" + "_id": { "$oid": "001200070000000000000091" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRailjackHijackDestroyThree" }, { - "_id": { "$oid": "001200060000000000000078" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyLoyalty" + "_id": { "$oid": "001200070000000000000092" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSpy" }, { - "_id": { "$oid": "001200060000000000000079" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteSteelPathMissions" + "_id": { "$oid": "001200070000000000000093" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsProfitTaker" }, { - "_id": { "$oid": "001200060000000000000080" }, - "Activation": { "$date": { "$numberLong": "1704067200000" } }, - "Expiry": { "$date": { "$numberLong": "1704672000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardAntiquarian" + "_id": { "$oid": "001200070000000000000094" }, + "Activation": { "$date": { "$numberLong": "1704672000000" } }, + "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardRailjackMissions" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":550}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":554}" } -- 2.47.2 From 8b50189fcff70c150da33c9e932c4dcda3289798 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 25 Jan 2024 14:49:45 +0100 Subject: [PATCH 058/522] Foundry 1 - Preliminary (#127) --- src/constants/timeConstants.ts | 2 + .../api/claimCompletedRecipeController.ts | 64 ++++++++++ src/controllers/api/inventoryController.ts | 1 + src/controllers/api/startRecipeController.ts | 21 ++++ src/controllers/custom/addItemController.ts | 2 +- src/helpers/customHelpers/addItemHelpers.ts | 14 +-- src/helpers/purchaseHelpers.ts | 19 +-- src/helpers/stringHelpers.ts | 10 +- src/models/inventoryModels/inventoryModel.ts | 71 ++++++----- src/routes/api.ts | 5 + src/services/inventoryService.ts | 3 +- src/services/itemDataService.ts | 117 ++++++++++++++++++ .../missionInventoryUpdateService .ts | 9 +- src/services/purchaseService.ts | 3 +- src/services/recipeService.ts | 74 +++++++++++ src/types/inventoryTypes/inventoryTypes.ts | 13 +- static/data/items.ts | 60 --------- 17 files changed, 363 insertions(+), 125 deletions(-) create mode 100644 src/controllers/api/claimCompletedRecipeController.ts create mode 100644 src/controllers/api/startRecipeController.ts create mode 100644 src/services/itemDataService.ts create mode 100644 src/services/recipeService.ts diff --git a/src/constants/timeConstants.ts b/src/constants/timeConstants.ts index 4a5a374f..32a03742 100644 --- a/src/constants/timeConstants.ts +++ b/src/constants/timeConstants.ts @@ -3,11 +3,13 @@ const secondsPerMinute = 60; const minutesPerHour = 60; const hoursPerDay = 24; +const unixSecond = millisecondsPerSecond; const unixMinute = secondsPerMinute * millisecondsPerSecond; const unixHour = unixMinute * minutesPerHour; const unixDay = hoursPerDay * unixHour; export const unixTimesInMs = { + second: unixSecond, minute: unixMinute, hour: unixHour, day: unixDay diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts new file mode 100644 index 00000000..02120194 --- /dev/null +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -0,0 +1,64 @@ +//this is a controller for the claimCompletedRecipe route +//it will claim a recipe for the user + +import { Request, RequestHandler, Response } from "express"; +import { logger } from "@/src/utils/logger"; +import { getItemByBlueprint, getItemCategoryByUniqueName } from "@/src/services/itemDataService"; +import { IOid } from "@/src/types/commonTypes"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getInventory } from "@/src/services/inventoryService"; +import { IInventoryDatabase } from "@/src/types/inventoryTypes/inventoryTypes"; + +export interface IClaimCompletedRecipeRequest { + RecipeIds: IOid[]; +} + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const claimCompletedRecipeController: RequestHandler = async (req, res) => { + const claimCompletedRecipeRequest = getJSONfromString(req.body.toString()) as IClaimCompletedRecipeRequest; + const accountId = req.query.accountId as string; + if (!accountId) throw new Error("no account id"); + + console.log(claimCompletedRecipeRequest); + const inventory = await getInventory(accountId); + const pendingRecipe = inventory.PendingRecipes.find( + recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$oid + ); + console.log(pendingRecipe); + if (!pendingRecipe) { + logger.error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`); + throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`); + } + + //check recipe is indeed ready to be completed + // if (pendingRecipe.CompletionDate > new Date()) { + // logger.error(`recipe ${pendingRecipe._id} is not ready to be completed`); + // throw new Error(`recipe ${pendingRecipe._id} is not ready to be completed`); + // } + + //get completed Items + const completedItemName = getItemByBlueprint(pendingRecipe.ItemType)?.uniqueName; + + if (!completedItemName) { + logger.error(`no completed item found for recipe ${pendingRecipe._id}`); + throw new Error(`no completed item found for recipe ${pendingRecipe._id}`); + } + const itemCategory = getItemCategoryByUniqueName(completedItemName) as keyof typeof inventory; + console.log(itemCategory); + //TODO: remove all Schema.Mixed for inventory[itemCategory] not to be any + //add item + //inventory[itemCategory]. + + //add additional item components like mods or weapons for a sentinel. + //const additionalItemComponents = itemComponents[uniqueName] + //add these items to inventory + //return changes as InventoryChanges + + //remove pending recipe + inventory.PendingRecipes.pull(pendingRecipe._id); + // await inventory.save(); + + logger.debug("Claiming Completed Recipe", { completedItemName }); + + res.json({ InventoryChanges: {} }); +}; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index c12387a9..bfdad354 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -24,6 +24,7 @@ const inventoryController: RequestHandler = async (request: Request, response: R return; } + //TODO: make a function that converts from database representation to client const inventoryJSON = inventory.toJSON(); const inventoryResponse = toInventoryResponse(inventoryJSON); diff --git a/src/controllers/api/startRecipeController.ts b/src/controllers/api/startRecipeController.ts new file mode 100644 index 00000000..1ce3da22 --- /dev/null +++ b/src/controllers/api/startRecipeController.ts @@ -0,0 +1,21 @@ +import { parseString } from "@/src/helpers/general"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { startRecipe } from "@/src/services/recipeService"; +import { logger } from "@/src/utils/logger"; +import { RequestHandler } from "express"; + +interface IStartRecipeRequest { + RecipeName: string; + Ids: string[]; +} + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const startRecipeController: RequestHandler = async (req, res) => { + const startRecipeRequest = getJSONfromString(req.body.toString()) as IStartRecipeRequest; + logger.debug("StartRecipe Request", { startRecipeRequest }); + + const accountId = parseString(req.query.accountId); + + const newRecipeId = await startRecipe(startRecipeRequest.RecipeName, accountId); + res.json(newRecipeId); +}; diff --git a/src/controllers/custom/addItemController.ts b/src/controllers/custom/addItemController.ts index 504d539e..c81a861e 100644 --- a/src/controllers/custom/addItemController.ts +++ b/src/controllers/custom/addItemController.ts @@ -1,5 +1,5 @@ import { ItemType, toAddItemRequest } from "@/src/helpers/customHelpers/addItemHelpers"; -import { getWeaponType } from "@/src/helpers/purchaseHelpers"; +import { getWeaponType } from "@/src/services/itemDataService"; import { addPowerSuit, addWeapon } from "@/src/services/inventoryService"; import { RequestHandler } from "express"; diff --git a/src/helpers/customHelpers/addItemHelpers.ts b/src/helpers/customHelpers/addItemHelpers.ts index efc517c3..d26d571f 100644 --- a/src/helpers/customHelpers/addItemHelpers.ts +++ b/src/helpers/customHelpers/addItemHelpers.ts @@ -1,5 +1,5 @@ import { isString, parseString } from "@/src/helpers/general"; -import { items } from "@/static/data/items"; +import { items } from "@/src/services/itemDataService"; export enum ItemType { Powersuit = "Powersuit", @@ -23,20 +23,20 @@ interface IAddItemRequest { InternalName: string; accountId: string; } -export const isInternalName = (internalName: string): boolean => { +export const isInternalItemName = (internalName: string): boolean => { const item = items.find(i => i.uniqueName === internalName); return Boolean(item); }; -const parseInternalName = (internalName: unknown): string => { - if (!isString(internalName) || !isInternalName(internalName)) { +const parseInternalItemName = (internalName: unknown): string => { + if (!isString(internalName) || !isInternalItemName(internalName)) { throw new Error("incorrect internal name"); } return internalName; }; -const toAddItemRequest = (body: unknown): IAddItemRequest => { +export const toAddItemRequest = (body: unknown): IAddItemRequest => { if (!body || typeof body !== "object") { throw new Error("incorrect or missing add item request data"); } @@ -44,12 +44,10 @@ const toAddItemRequest = (body: unknown): IAddItemRequest => { if ("type" in body && "internalName" in body && "accountId" in body) { return { type: parseItemType(body.type), - InternalName: parseInternalName(body.internalName), + InternalName: parseInternalItemName(body.internalName), accountId: parseString(body.accountId) }; } throw new Error("malformed add item request"); }; - -export { toAddItemRequest }; diff --git a/src/helpers/purchaseHelpers.ts b/src/helpers/purchaseHelpers.ts index 47016abe..8eb82c17 100644 --- a/src/helpers/purchaseHelpers.ts +++ b/src/helpers/purchaseHelpers.ts @@ -1,8 +1,7 @@ import { parseBoolean, parseNumber, parseString } from "@/src/helpers/general"; -import { WeaponTypeInternal } from "@/src/services/inventoryService"; +import { weapons } from "@/src/services/itemDataService"; import { slotPurchaseNameToSlotName } from "@/src/services/purchaseService"; import { IPurchaseRequest, SlotPurchaseName } from "@/src/types/purchaseTypes"; -import { weapons } from "@/static/data/items"; export const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => { if (!purchaseRequest || typeof purchaseRequest !== "object") { @@ -41,22 +40,6 @@ export const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => throw new Error("invalid purchaseRequest"); }; -export const getWeaponType = (weaponName: string) => { - const weaponInfo = weapons.find(i => i.uniqueName === weaponName); - - if (!weaponInfo) { - throw new Error(`unknown weapon ${weaponName}`); - } - - const weaponType = weaponInfo.productCategory as WeaponTypeInternal; - - if (!weaponType) { - throw new Error(`unknown weapon category for item ${weaponName}`); - } - - return weaponType; -}; - export const isSlotPurchaseName = (slotPurchaseName: string): slotPurchaseName is SlotPurchaseName => { return slotPurchaseName in slotPurchaseNameToSlotName; }; diff --git a/src/helpers/stringHelpers.ts b/src/helpers/stringHelpers.ts index 8cf21e80..75b42136 100644 --- a/src/helpers/stringHelpers.ts +++ b/src/helpers/stringHelpers.ts @@ -1,4 +1,4 @@ -export const getJSONfromString = (str: string): any => { +export const getJSONfromString = (str: string) => { const jsonSubstring = str.substring(0, str.lastIndexOf("}") + 1); return JSON.parse(jsonSubstring); }; @@ -16,3 +16,11 @@ export const getSubstringFromKeywordToKeyword = (str: string, keywordBegin: stri const endIndex = str.indexOf(keywordEnd); return str.substring(beginIndex, endIndex + 1); }; + +export const getIndexAfter = (str: string, searchWord: string) => { + const index = str.indexOf(searchWord); + if (index === -1) { + return -1; + } + return index + searchWord.length; +}; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 1e30e4fc..91386abe 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1,4 +1,4 @@ -import { Model, Schema, Types, model } from "mongoose"; +import { HydratedDocument, Model, Schema, Types, model } from "mongoose"; import { IFlavourItem, IRawUpgrade, @@ -10,7 +10,9 @@ import { ISlots, IGenericItem, IMailbox, - IDuviriInfo + IDuviriInfo, + IPendingRecipe as IPendingRecipeDatabase, + IPendingRecipeResponse } from "../../types/inventoryTypes/inventoryTypes"; import { IMongoDate, IOid } from "../../types/commonTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; @@ -25,6 +27,29 @@ import { } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { toOid } from "@/src/helpers/inventoryHelpers"; +const pendingRecipeSchema = new Schema( + { + ItemType: String, + CompletionDate: Date + }, + { id: false } +); + +pendingRecipeSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() }; +}); + +pendingRecipeSchema.set("toJSON", { + virtuals: true, + transform(_document, returnedObject) { + delete returnedObject._id; + delete returnedObject.__v; + (returnedObject as IPendingRecipeResponse).CompletionDate = { + $date: { $numberLong: (returnedObject as IPendingRecipeDatabase).CompletionDate.getTime().toString() } + }; + } +}); + const polaritySchema = new Schema({ Slot: Number, Value: String @@ -296,7 +321,6 @@ DuviriInfoSchema.set("toJSON", { }); const inventorySchema = new Schema({ - accountOwnerId: Schema.Types.ObjectId, SubscribedToEmails: Number, Created: Schema.Types.Mixed, @@ -325,7 +349,6 @@ const inventorySchema = new Schema({ MechBin: slotsBinSchema, CrewMemberBin: slotsBinSchema, - //How many trades do you have left TradesRemaining: Number, //How many Gift do you have left*(gift spends the trade) @@ -351,10 +374,9 @@ const inventorySchema = new Schema({ DailyAffiliationZariman: Number, DailyAffiliationKahl: Number, - //Daily Focus limit DailyFocus: Number, - //you not used Focus + //you not used Focus FocusXP: Schema.Types.Mixed, //Curent active like Active school focuses is = "Zenurik" FocusAbility: String, @@ -441,24 +463,21 @@ const inventorySchema = new Schema({ //Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components) CrewShipRawSalvage: [Schema.Types.Mixed], - //Default RailJack CrewShips: [Schema.Types.Mixed], CrewShipAmmo: [Schema.Types.Mixed], CrewShipWeapons: [Schema.Types.Mixed], CrewShipWeaponSkins: [Schema.Types.Mixed], - //NPC Crew and weapon CrewMembers: [Schema.Types.Mixed], CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed], CrewShipSalvagedWeapons: [Schema.Types.Mixed], - //Complete Mission\Quests Missions: [Schema.Types.Mixed], QuestKeys: [Schema.Types.Mixed], - //item like DojoKey or Boss missions key + //item like DojoKey or Boss missions key LevelKeys: [Schema.Types.Mixed], //Active quests Quests: [Schema.Types.Mixed], @@ -478,25 +497,22 @@ const inventorySchema = new Schema({ //Retries rank up(3 time) TrainingRetriesLeft: Number, - //you saw last played Region when you opened the star map LastRegionPlayed: String, //Blueprint Recipes: [Schema.Types.Mixed], //Crafting Blueprint(Item Name + CompletionDate) - PendingRecipes: [Schema.Types.Mixed], + PendingRecipes: [pendingRecipeSchema], //warframe\Weapon skins WeaponSkins: [Schema.Types.Mixed], - //Ayatan Item FusionTreasures: [Schema.Types.Mixed], //"node": "TreasureTutorial", "state": "TS_COMPLETED" TauntHistory: [Schema.Types.Mixed], - //noShow2FA,VisitPrimeVault etc WebFlags: Schema.Types.Mixed, //Id CompletedAlerts @@ -508,7 +524,6 @@ const inventorySchema = new Schema({ //Alert->Kuva Siphon PeriodicMissionCompletions: [Schema.Types.Mixed], - //Codex->LoreFragment LoreFragmentScans: [Schema.Types.Mixed], @@ -520,7 +535,7 @@ const inventorySchema = new Schema({ ActiveDojoColorResearch: String, SentientSpawnChanceBoosters: Schema.Types.Mixed, - + QualifyingInvasions: [Schema.Types.Mixed], FactionScores: [Number], @@ -530,11 +545,9 @@ const inventorySchema = new Schema({ //If you want change Spectre Gear id PendingSpectreLoadouts: [Schema.Types.Mixed], - //New quest Email spam //example:"ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestEmailItem", EmailItems: [Schema.Types.Mixed], - //Profile->Wishlist Wishlist: [String], @@ -561,7 +574,7 @@ const inventorySchema = new Schema({ //Game mission\ivent score example "Tag": "WaterFight", "Best": 170, "Count": 1258, PersonalGoalProgress: [Schema.Types.Mixed], - + //Setting interface Style ThemeStyle: String, ThemeBackground: String, @@ -579,7 +592,6 @@ const inventorySchema = new Schema({ //Night Wave Challenge SeasonChallengeHistory: [Schema.Types.Mixed], - //Cephalon Simaris Entries Example:"TargetType"+"Scans"(1-10)+"Completed": true|false LibraryPersonalProgress: [Schema.Types.Mixed], //Cephalon Simaris Daily Task @@ -587,23 +599,23 @@ const inventorySchema = new Schema({ //https://warframe.fandom.com/wiki/Invasion InvasionChainProgress: [Schema.Types.Mixed], - + //https://warframe.fandom.com/wiki/Parazon DataKnives: [GenericItemSchema], - + //CorpusLich or GrineerLich NemesisAbandonedRewards: [String], - //CorpusLich\KuvaLich + //CorpusLich\KuvaLich NemesisHistory: [Schema.Types.Mixed], LastNemesisAllySpawnTime: Schema.Types.Mixed, - + //TradingRulesConfirmed,ShowFriendInvNotifications(Option->Social) Settings: Schema.Types.Mixed, - //Railjack craft + //Railjack craft //https://warframe.fandom.com/wiki/Rising_Tide PersonalTechProjects: [Schema.Types.Mixed], - + //Modulars lvl and exp(Railjack|Duviri) //https://warframe.fandom.com/wiki/Intrinsics PlayerSkills: Schema.Types.Mixed, @@ -611,7 +623,6 @@ const inventorySchema = new Schema({ //TradeBannedUntil data TradeBannedUntil: Schema.Types.Mixed, - //https://warframe.fandom.com/wiki/Helminth InfestedFoundry: Schema.Types.Mixed, NextRefill: Schema.Types.Mixed, @@ -624,7 +635,6 @@ const inventorySchema = new Schema({ //https://warframe.fandom.com/wiki/Incarnon EvolutionProgress: [Schema.Types.Mixed], - //Unknown and system DuviriInfo: DuviriInfoSchema, Mailbox: MailboxSchema, @@ -650,7 +660,7 @@ const inventorySchema = new Schema({ CollectibleSeries: [Schema.Types.Mixed], HasResetAccount: Boolean, - //Discount Coupon + //Discount Coupon PendingCoupon: Schema.Types.Mixed, //Like BossAladV,BossCaptainVor come for you on missions % chance DeathMarks: [String], @@ -685,13 +695,14 @@ type InventoryDocumentProps = { MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; OperatorLoadOuts: Types.DocumentArray; - AdultOperatorLoadOuts: Types.DocumentArray; + AdultOperatorLoadOuts: Types.DocumentArray; //TODO: this should still contain _id MechSuits: Types.DocumentArray; Scoops: Types.DocumentArray; DataKnives: Types.DocumentArray; DrifterMelee: Types.DocumentArray; Sentinels: Types.DocumentArray; Horses: Types.DocumentArray; + PendingRecipes: Types.DocumentArray; }; type InventoryModelType = Model; diff --git a/src/routes/api.ts b/src/routes/api.ts index 7ffd3bc5..1c9270bd 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -35,6 +35,8 @@ import express from "express"; import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; import { focusController } from "@/src/controllers/api/focusController"; import { inventorySlotsController } from "@/src/controllers/api/inventorySlotsController"; +import { startRecipeController } from "@/src/controllers/api/startRecipeController"; +import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompletedRecipeController"; const apiRouter = express.Router(); @@ -62,6 +64,9 @@ apiRouter.get("/logout.php", logoutController); apiRouter.get("/setBootLocation.php", setBootLocationController); // post +// eslint-disable-next-line @typescript-eslint/no-misused-promises +apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController); +apiRouter.post("/startRecipe.php", startRecipeController); apiRouter.post("/inventorySlots.php", inventorySlotsController); apiRouter.post("/focus.php", focusController); apiRouter.post("/artifacts.php", artifactsController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index f51063a1..9b74dad6 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -17,6 +17,7 @@ import { import { IGenericUpdate } from "../types/genericUpdate"; import { IArtifactsRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; +import { WeaponTypeInternal } from "@/src/services/itemDataService"; export const createInventory = async (accountOwnerId: Types.ObjectId, loadOutPresetId: Types.ObjectId) => { try { @@ -145,8 +146,6 @@ export const updateGeneric = async (data: IGenericUpdate, accountId: string) => return data; }; -export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; - export const addWeapon = async ( weaponType: WeaponTypeInternal, weaponName: string, diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts new file mode 100644 index 00000000..a251b9ae --- /dev/null +++ b/src/services/itemDataService.ts @@ -0,0 +1,117 @@ +import { getIndexAfter } from "@/src/helpers/stringHelpers"; +import { logger } from "@/src/utils/logger"; +import Items, { Buildable, Category, Item, Warframe, Weapon } from "warframe-items"; + +type MinWeapon = Omit; +type MinItem = Omit; + +export const weapons: MinWeapon[] = (new Items({ category: ["Primary", "Secondary", "Melee"] }) as Weapon[]).map( + item => { + const next = { ...item }; + delete next.patchlogs; + return next; + } +); + +export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; + +export const items: MinItem[] = new Items({ category: ["All"] }).map(item => { + const next = { ...item }; + delete next.patchlogs; + return next; +}); + +export const getWeaponType = (weaponName: string) => { + const weaponInfo = weapons.find(i => i.uniqueName === weaponName); + + if (!weaponInfo) { + throw new Error(`unknown weapon ${weaponName}`); + } + + const weaponType = weaponInfo.productCategory as WeaponTypeInternal; + + if (!weaponType) { + logger.error(`unknown weapon category for item ${weaponName}`); + throw new Error(`unknown weapon category for item ${weaponName}`); + } + + return weaponType; +}; + +const getNamesObj = (category: Category) => + new Items({ category: [category] }).reduce<{ [index: string]: string }>((acc, item) => { + acc[item.name!.replace("'S", "'s")] = item.uniqueName!; + return acc; + }, {}); + +export const modNames = getNamesObj("Mods"); +export const resourceNames = getNamesObj("Resources"); +export const miscNames = getNamesObj("Misc"); +export const relicNames = getNamesObj("Relics"); +export const skinNames = getNamesObj("Skins"); +export const arcaneNames = getNamesObj("Arcanes"); +export const gearNames = getNamesObj("Gear"); +//logger.debug(`gear names`, { gearNames }); + +export const craftNames = Object.fromEntries( + ( + new Items({ + category: [ + "Warframes", + "Gear", + "Melee", + "Primary", + "Secondary", + "Sentinels", + "Misc", + "Arch-Gun", + "Arch-Melee" + ] + }) as Warframe[] + ) + .flatMap(item => item.components || []) + .filter(item => item.drops && item.drops[0]) + .map(item => [item.drops![0].type, item.uniqueName]) +); + +export const blueprintNames = Object.fromEntries( + Object.keys(craftNames) + .filter(name => name.includes("Blueprint")) + .map(name => [name, craftNames[name]]) +); + +const buildables = items.filter(item => !!(item as Buildable).components); + +export const getItemByBlueprint = (uniqueName: string): (MinItem & Buildable) | undefined => { + const item = buildables.find( + item => (item as Buildable).components?.find(component => component.uniqueName === uniqueName) + ); + return item; +}; + +export const getItemCategoryByUniqueName = (uniqueName: string) => { + //Lotus/Types/Items/MiscItems/PolymerBundle + + let splitWord = "Items/"; + if (!uniqueName.includes("/Items/")) { + splitWord = "/Types/"; + } + + const index = getIndexAfter(uniqueName, splitWord); + if (index === -1) { + logger.error(`error parsing item category ${uniqueName}`); + throw new Error(`error parsing item category ${uniqueName}`); + } + const category = uniqueName.substring(index).split("/")[0]; + return category; +}; + +export const getItemByUniqueName = (uniqueName: string) => { + const item = items.find(item => item.uniqueName === uniqueName); + return item; +}; + +export const getItemByName = (name: string) => { + const item = items.find(item => item.name === name); + return item; +}; diff --git a/src/services/missionInventoryUpdateService .ts b/src/services/missionInventoryUpdateService .ts index f815627c..5936adbe 100644 --- a/src/services/missionInventoryUpdateService .ts +++ b/src/services/missionInventoryUpdateService .ts @@ -1,7 +1,14 @@ import { IMissionRewardResponse, IReward, IInventoryFieldType, inventoryFields } from "@/src/types/missionTypes"; import missionsDropTable from "@/static/json/missions-drop-table.json"; -import { modNames, relicNames, miscNames, resourceNames, gearNames, blueprintNames } from "@/static/data/items"; +import { + modNames, + relicNames, + miscNames, + resourceNames, + gearNames, + blueprintNames +} from "@/src/services/itemDataService"; import { IMissionInventoryUpdateRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 567239a4..7865ee00 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,4 +1,5 @@ -import { getWeaponType, parseSlotPurchaseName } from "@/src/helpers/purchaseHelpers"; +import { parseSlotPurchaseName } from "@/src/helpers/purchaseHelpers"; +import { getWeaponType } from "@/src/services/itemDataService"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addBooster, diff --git a/src/services/recipeService.ts b/src/services/recipeService.ts new file mode 100644 index 00000000..8bfdcc93 --- /dev/null +++ b/src/services/recipeService.ts @@ -0,0 +1,74 @@ +import { unixTimesInMs } from "@/src/constants/timeConstants"; +import { getInventory } from "@/src/services/inventoryService"; +import { getItemByBlueprint, getItemCategoryByUniqueName } from "@/src/services/itemDataService"; +import { logger } from "@/src/utils/logger"; +import { Types } from "mongoose"; + +export interface IResource { + uniqueName: string; + count: number; +} + +// export const updateResources = async (accountId: string, components: IResource[]) => { +// const inventory = await getInventory(accountId); + +// for (const component of components) { +// const category = getItemCategoryByUniqueName(component.uniqueName) as keyof typeof inventory; +// //validate category + +// console.log(component.uniqueName); +// console.log("cate", category); + +// const invItem = inventory[category]; +// console.log("invItem", invItem); + +// inventory["MiscItems"]; +// } +// }; + +export const startRecipe = async (recipeName: string, accountId: string) => { + const recipe = getItemByBlueprint(recipeName); + + if (!recipe) { + logger.error(`unknown recipe ${recipeName}`); + throw new Error(`unknown recipe ${recipeName}`); + } + + const componentsNeeded = recipe.components?.map(component => ({ + uniqueName: component.uniqueName, + count: component.itemCount + })); + + if (!componentsNeeded) { + logger.error(`recipe ${recipeName} has no components`); + throw new Error(`recipe ${recipeName} has no components`); + } + + //TODO: consume components used + //await updateResources(accountId, componentsNeeded); + + //might be redundant + if (recipe.consumeOnBuild) { + //consume + } + + if (!recipe.buildTime) { + logger.error(`recipe ${recipeName} has no build time`); + throw new Error(`recipe ${recipeName} has no build time`); + } + //buildtime is in seconds + const completionDate = new Date(Date.now() + recipe.buildTime * unixTimesInMs.second); + + const inventory = await getInventory(accountId); + inventory.PendingRecipes.push({ + ItemType: recipeName, + CompletionDate: completionDate, + _id: new Types.ObjectId() + }); + + const newInventory = await inventory.save(); + + return { + RecipeId: { $oid: newInventory.PendingRecipes[newInventory.PendingRecipes.length - 1]._id?.toString() } + }; +}; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 114a4211..924c373c 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -14,11 +14,13 @@ import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTy //Document extends will be deleted soon. TODO: delete and migrate uses to ... export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} -export interface IInventoryDatabase extends Omit { +export interface IInventoryDatabase + extends Omit { accountOwnerId: Types.ObjectId; TrainingDate: Date; // TrainingDate changed from IMongoDate to Date LoadOutPresets: Types.ObjectId; // LoadOutPresets changed from ILoadOutPresets to Types.ObjectId for population Mailbox: Types.ObjectId; // Mailbox changed from IMailbox to Types.ObjectId + PendingRecipes: IPendingRecipe[]; } export interface IInventoryResponseDocument extends IInventoryResponse, Document {} @@ -41,6 +43,11 @@ export interface IMailbox { LastInboxId: IOid; } +//TODO: perhaps split response and database into their own files + +export interface IPendingRecipeResponse extends Omit { + CompletionDate: IMongoDate; +} export interface IInventoryResponse { Horses: IGenericItem[]; DrifterMelee: IGenericItem[]; @@ -96,7 +103,7 @@ export interface IInventoryResponse { XPInfo: IEmailItem[]; Recipes: IConsumable[]; WeaponSkins: IWeaponSkin[]; - PendingRecipes: IPendingRecipe[]; + PendingRecipes: IPendingRecipeResponse[]; TrainingDate: IMongoDate; PlayerLevel: number; Upgrades: ICrewShipSalvagedWeaponSkin[]; @@ -816,7 +823,7 @@ export interface IPendingCoupon { export interface IPendingRecipe { ItemType: string; - CompletionDate: IMongoDate; + CompletionDate: Date; ItemId: IOid; } diff --git a/static/data/items.ts b/static/data/items.ts index f2718a2f..e69de29b 100644 --- a/static/data/items.ts +++ b/static/data/items.ts @@ -1,60 +0,0 @@ -import Items, { Category, Item, Warframe, Weapon } from "warframe-items"; - -type MinWeapon = Omit; -type MinItem = Omit; - -export const weapons: MinWeapon[] = (new Items({ category: ["Primary", "Secondary", "Melee"] }) as Weapon[]).map( - item => { - const next = { ...item }; - delete next.patchlogs; - return next; - } -); - -export const items: MinItem[] = new Items({ category: ["All"] }).map(item => { - const next = { ...item }; - delete next.patchlogs; - return next; -}); - -const getNamesObj = (category: Category) => - new Items({ category: [category] }).reduce((acc, item) => { - acc[item.name!.replace("'S", "'s")] = item.uniqueName!; - return acc; - }, {} as ImportAssertions); - -export const modNames = getNamesObj("Mods"); -export const resourceNames = getNamesObj("Resources"); -export const miscNames = getNamesObj("Misc"); -export const relicNames = getNamesObj("Relics"); -export const skinNames = getNamesObj("Skins"); -export const arcaneNames = getNamesObj("Arcanes"); -export const gearNames = getNamesObj("Gear"); - -export const craftNames: ImportAssertions = Object.fromEntries( - ( - new Items({ - category: [ - "Warframes", - "Gear", - "Melee", - "Primary", - "Secondary", - "Sentinels", - "Misc", - "Arch-Gun", - "Arch-Melee" - ] - }) as Warframe[] - ) - .flatMap(item => item.components || []) - .filter(item => item.drops && item.drops[0]) - .map(item => [item.drops![0].type, item.uniqueName]) -); -craftNames["Forma Blueprint"] = "/Lotus/Types/Recipes/Components/FormaBlueprint"; - -export const blueprintNames: ImportAssertions = Object.fromEntries( - Object.keys(craftNames) - .filter(name => name.includes("Blueprint")) - .map(name => [name, craftNames[name]]) -); -- 2.47.2 From 8156036203d56d126c605d49ddb2eadb46dce429 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 25 Jan 2024 15:11:58 +0100 Subject: [PATCH 059/522] Version update 35.0.11 (#128) --- config.json | 6 +- static/fixed_responses/worldState.json | 2683 +++++++++++++++--------- 2 files changed, 1661 insertions(+), 1028 deletions(-) diff --git a/config.json b/config.json index 0639296b..fc70a292 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2024.01.10.17.09/nhtkV2+-Ko5jCzUxhAEUIw", + "buildLabel": "2024.01.15.16.13/7gQ5EjRCTNURYUBJ+AOETw", "matchmakingBuildId": "7083290396338825240", - "version": "35.0.8", - "worldSeed": "tulS3NEyXcLBvAM4JnJF7udXygp8YKQyAM1SANa0/DXLTvPmqvpeV/4J0cPs7AqlpvuLbuMwCfDloSENRNN7RO8eL9vqjya+k0fi6ACbKUdAV2L8Ugu6JXBTavHuLtxe2X+Z5uxariP3GbXoAArRia4Hi6eYnJP+sinlzK2vN4Z2fy32cGMJ6AMAbHDZeBSU/26onmyrs9T++PbRRYUgfgVdf5XVRfoWAiktTOipz3BDcdjImdFrlSWfHVdxYaDXgIArVObpRMWKPMeixgOaZ2zzcRWxIsaQ4z1j1fLjbz5kwh4jAJMh/12l/8djPM9mQhPIRwOp2HOSPNwjyLEsFA==", + "version": "35.0.11", + "worldSeed": "qihVmIIyYXz0E4+01UjY+ROEiAB7x3k40ZaCUtVLEF17u9TXVita+jHZRuMLB6OT8GOfX8C+kqkyrT26AJEHFV0IDUkoZ1bntDSBL6wN36tq+ttsN/8NIcy1eGIyLzHn1Cosbtp8ykPhIaFKWlWP6v0QUBObIT11xLXF8fd+7cAEUcPygnS6WK048KEjMldK5bXIkkg9NV7ZXWLhNfTVG0mN0VluNUKDlc/JCiYRkxvparpn7xKwFpxqZJIeYhOz/zaktlEcVFxxB6ewd/X+XNq7+SkPUw5btQKQeYax1AxBZHzCk0XF1ihRQKPdMeVzXIRq43Yf/8emu8siIC4dFA==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index dae872c8..1eee6e00 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "tulS3NEyXcLBvAM4JnJF7udXygp8YKQyAM1SANa0/DXLTvPmqvpeV/4J0cPs7AqlpvuLbuMwCfDloSENRNN7RO8eL9vqjya+k0fi6ACbKUdAV2L8Ugu6JXBTavHuLtxe2X+Z5uxariP3GbXoAArRia4Hi6eYnJP+sinlzK2vN4Z2fy32cGMJ6AMAbHDZeBSU/26onmyrs9T++PbRRYUgfgVdf5XVRfoWAiktTOipz3BDcdjImdFrlSWfHVdxYaDXgIArVObpRMWKPMeixgOaZ2zzcRWxIsaQ4z1j1fLjbz5kwh4jAJMh/12l/8djPM9mQhPIRwOp2HOSPNwjyLEsFA==", + "WorldSeed": "qihVmIIyYXz0E4+01UjY+ROEiAB7x3k40ZaCUtVLEF17u9TXVita+jHZRuMLB6OT8GOfX8C+kqkyrT26AJEHFV0IDUkoZ1bntDSBL6wN36tq+ttsN/8NIcy1eGIyLzHn1Cosbtp8ykPhIaFKWlWP6v0QUBObIT11xLXF8fd+7cAEUcPygnS6WK048KEjMldK5bXIkkg9NV7ZXWLhNfTVG0mN0VluNUKDlc/JCiYRkxvparpn7xKwFpxqZJIeYhOz/zaktlEcVFxxB6ewd/X+XNq7+SkPUw5btQKQeYax1AxBZHzCk0XF1ihRQKPdMeVzXIRq43Yf/8emu8siIC4dFA==", "Version": 10, "MobileVersion": "4.15.19.0", - "BuildLabel": "2024.01.10.17.09/nhtkV2+-Ko5jCzUxhAEUIw", - "Time": 1705017602, + "BuildLabel": "2024.01.15.16.13/7gQ5EjRCTNURYUBJ+AOETw", + "Time": 1706190821, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -152,30 +152,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6579f5121ac944e9910da155" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Whispers in the Walls Available Now" }, - { "LanguageCode": "fr", "Message": "Dispo : Murmures dans les Murs" }, - { "LanguageCode": "it", "Message": "Sussurri nelle Mura Disponibile Ora" }, - { "LanguageCode": "de", "Message": "'Flüstern in den Wänden' ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "«Susurros en las Paredes» ya está disponible" }, - { "LanguageCode": "pt", "Message": "Atualização \"Sussurros nas Paredes\" Já Disponível" }, - { "LanguageCode": "ru", "Message": "Обновление «Шёпот в стенах» уже доступно" }, - { "LanguageCode": "pl", "Message": "Szepty w Ścianach już dostępne" }, - { "LanguageCode": "uk", "Message": "Оновлення «Шепіт у стінах» уже доступно" }, - { "LanguageCode": "tr", "Message": "Whispers in the Walls Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "アップデート「壁の中の囁き」実装中" }, - { "LanguageCode": "zh", "Message": "《墙中低语》现已推出!" }, - { "LanguageCode": "ko", "Message": "벽 속의 속삭임을 지금 만나보세요" }, - { "LanguageCode": "tc", "Message": "《牆中低語》現已登場" } - ], - "Prop": "https://www.warframe.com/whispers-in-the-walls?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-WhispersintheWallsUpdateLaunch", - "Date": { "$date": { "$numberLong": "1702486800000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/08941b26231d2cf366bdfe97b2b46886_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "657a230aa75056b794032950" }, "Messages": [{ "LanguageCode": "es", "Message": "ACTUALIZACIÓN 35: SUSURROS EN LAS PAREDES" }], @@ -185,39 +161,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "6581bf424c4cd7a561075388" }, - "Messages": [{ "LanguageCode": "en", "Message": "PSA: Clan Rank Decrease Temporarily Disabled" }], - "Prop": "https://forums.warframe.com/topic/1376645-psa-clan-rank-locking-for-operation-gargolyes-cry/", - "Date": { "$date": { "$numberLong": "1703001840000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "658607bcce34ebee6b09b3a3" }, - "Messages": [{ "LanguageCode": "en", "Message": "Cross Platform Save: Mid-Release Review (re-opens in JANUARY)" }], - "Prop": "https://forums.warframe.com/topic/1377846-cross-platform-save-mid-release-review-re-opens-in-january/", - "Date": { "$date": { "$numberLong": "1703282520000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6586f67449d74955a40f7baf" }, - "Messages": [{ "LanguageCode": "fr", "Message": "[PSA] Sauv. Cross-Platform : retour en janvier" }], - "Prop": "https://forums.warframe.com/topic/1378022-psa-sauvegarde-cross-platform-reprendra-en-janvier/", - "Date": { "$date": { "$numberLong": "1703343660000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6586fb16a650b8ad1f0f4802" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Adieu 2023, on se revoit en 2024 !" }], - "Prop": "https://forums.warframe.com/topic/1378027-adieu-2023-on-se-revoit-en-2024/", - "Date": { "$date": { "$numberLong": "1703344860000" } }, - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65883db88cb3f2c420048454" }, "Messages": [{ "LanguageCode": "uk", "Message": "Міжплатформне збереження: відкривається знову в січні 2024" }], @@ -226,30 +169,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "6597048052f914e2df0b8d32" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Prime Resurgence Event: Rotation 2" }, - { "LanguageCode": "fr", "Message": "Événement Résurgence Prime : 2ème rotation" }, - { "LanguageCode": "it", "Message": "Evento Risorgenza Prime: Rotazione 2" }, - { "LanguageCode": "de", "Message": "Prime Rückkehr Event: Rotation 2" }, - { "LanguageCode": "es", "Message": "Evento de Resurgimiento Prime: Rotación 2" }, - { "LanguageCode": "pt", "Message": "Evento da Ressurgência Prime: 2ª Rotação" }, - { "LanguageCode": "ru", "Message": "Событие «Возрождение Прайм»: Ротация 2" }, - { "LanguageCode": "pl", "Message": "Odrodzenie Prime: Rotacja 2" }, - { "LanguageCode": "uk", "Message": "Подія прайм-відродження: друга ротація" }, - { "LanguageCode": "tr", "Message": "Prime Diriliş Etkinliği: Rotasyon 2" }, - { "LanguageCode": "ja", "Message": "Prime Resurgence 特別イベント:ローテーション2" }, - { "LanguageCode": "zh", "Message": "Prime 重生活动:轮换 2" }, - { "LanguageCode": "ko", "Message": "프라임 리서전스 이벤트: 로테이션 2" }, - { "LanguageCode": "tc", "Message": "Prime Resurgence 活動:輪替 2" } - ], - "Prop": "https://www.warframe.com/news/prime-resurgence-event-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-PrimeResurgenceR2Event2024", - "Date": { "$date": { "$numberLong": "1704394320000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/9bf82d4a590a069b219c01544464d166_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65983e32a798c19dd4082312" }, "Messages": [ @@ -276,49 +195,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "659c719746192c8d270447b6" }, - "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #375!" }], - "Prop": "https://www.twitch.tv/warframe", - "Date": { "$date": { "$numberLong": "1704751320000" } }, - "EventStartDate": { "$date": { "$numberLong": "1705014000000" } }, - "EventEndDate": { "$date": { "$numberLong": "1705021200000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframe", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "659d9b7a23990fa16b0fc1dd" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Operation: Gargoyle’s Cry Ends Soon" }, - { "LanguageCode": "fr", "Message": "Bientôt terminé : Cri de la Gargouille" }, - { "LanguageCode": "it", "Message": "L'Operazione: Gargoyle’s Cry Terminerà Presto" }, - { "LanguageCode": "de", "Message": "Operation: Schrei des Gargoyles endet bald" }, - { "LanguageCode": "es", "Message": "La Operación: Grito de Gárgola está por terminar" }, - { "LanguageCode": "pt", "Message": "A Operação Clamor da Gárgula terminará em breve" }, - { "LanguageCode": "ru", "Message": "«Операция: Плач Горгульи» скоро закончится" }, - { "LanguageCode": "pl", "Message": "Operacja: Krzyk Gargulca już się kończy" }, - { "LanguageCode": "uk", "Message": "Операція: «Плач ґарґуйля» незабаром завершиться" }, - { "LanguageCode": "tr", "Message": "Operasyon: Gargoyle'ın Feryadı Yakında Sona Eriyor" }, - { "LanguageCode": "ja", "Message": "「ガーゴイルの叫び」作戦が近日終了" }, - { "LanguageCode": "zh", "Message": "《嵌合長嘯》行動即將結束" }, - { "LanguageCode": "ko", "Message": "작전명: 가고일의 외침이 곧 종료됩니다" }, - { "LanguageCode": "tc", "Message": "《嵌合長嘯》行動即將結束" } - ], - "Prop": "https://forums.warframe.com/topic/1375452-operation-gargoyles-cry-live-on-all-platforms/", - "Date": { "$date": { "$numberLong": "1704827640000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "659ec513b761b7f0b3100a77" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj - 35.0.7" }], - "Prop": "https://forums.warframe.com/topic/1380237-murmures-dans-les-murs%C2%A0-correctif-3507/", - "Date": { "$date": { "$numberLong": "1704903900000" } }, - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "62dff6238607d6b5d80876f5" }, "Messages": [{ "LanguageCode": "fr", "Message": "Une ressource indispensable, le Wiki FR Warframe !" }], @@ -350,380 +226,536 @@ "Community": true }, { - "_id": { "$oid": "659ee5b8957e7618f306a56f" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Streams + Twitch Drops: Jan 11 - 12" }], - "Prop": "https://forums.warframe.com/topic/1380259-community-stream-schedule-december-jan-8-12-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CommunityStreams-08", - "Date": { "$date": { "$numberLong": "1704912180000" } }, + "_id": { "$oid": "65a581da629f82a5970bd59b" }, + "Messages": [{ "LanguageCode": "en", "Message": "Operation: Gargoyle's Cry Has Ended!" }], + "Prop": "https://forums.warframe.com/topic/1375452-operation-gargoyles-cry-has-concluded/", + "Date": { "$date": { "$numberLong": "1705345140000" } }, + "EventEndDate": { "$date": { "$numberLong": "1708023600000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "659eeadf95858ca756032dff" }, + "_id": { "$oid": "65a6b604d87aa13d3a0e0f6d" }, + "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Devstream 176!" }], + "Prop": "https://forums.warframe.com/topic/1380838-coming-soon-devstream-176/", + "Date": { "$date": { "$numberLong": "1705424280000" } }, + "EventStartDate": { "$date": { "$numberLong": "1706295600000" } }, + "EventEndDate": { "$date": { "$numberLong": "1706299200000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframe", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65a6bc66776c6919200a289d" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第176回のお知らせ" }], + "Prop": "https://bit.ly/3Sjseae", + "Date": { "$date": { "$numberLong": "1705425960000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/Devstream176_1920x1080_V1.png.46562ca10cef441008b5b3855cb70b51.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65a6d82bff8d2e3c2a07cb9a" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Prochainement : Devstream 176" }], + "Prop": "https://forums.warframe.com/topic/1380875-prochainement-devstream-176/", + "Date": { "$date": { "$numberLong": "1705433100000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.3c3949ef5323d0bd0f14cc45e28515e4.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65a81a1dd0387266d60d5dc1" }, "Messages": [ - { "LanguageCode": "en", "Message": "Gauss Prime Access Begins January 17" }, - { "LanguageCode": "fr", "Message": "Prime Access Gauss Prime : 17 janvier" }, - { "LanguageCode": "it", "Message": "L'Accesso Gauss Prime Inizia il 17 Gennaio" }, - { "LanguageCode": "de", "Message": "Gauss Prime Access beginnt am 17. Januar" }, - { "LanguageCode": "es", "Message": "Prime Access de Gauss comienza el 17 de enero" }, - { "LanguageCode": "pt", "Message": "O Prime Access do Gauss Prime estará disponível no dia 17 de janeiro" }, - { "LanguageCode": "ru", "Message": "Доступ Гаусса Прайм открывается 17 января" }, - { "LanguageCode": "pl", "Message": "Gauss Prime Access rozpoczyna się 17 stycznia" }, - { "LanguageCode": "uk", "Message": "Доступ до Ґаусса-прайм відкривається 17 січня" }, - { "LanguageCode": "tr", "Message": "Gauss Prime Access 17 Ocak'ta Başlıyor" }, - { "LanguageCode": "ja", "Message": "Gauss Prime Accessが1月18日に登場" }, - { "LanguageCode": "zh", "Message": "Gauss Prime Access 将于美东冬令时间 1 月 17 日登场" }, - { "LanguageCode": "ko", "Message": "가우스 프라임 액세스가 북미 시각 1월 17일 시작됩니다" }, - { "LanguageCode": "tc", "Message": "Gauss Prime Access 於美東冬令時間 1 月 17 日登場" } + { "LanguageCode": "en", "Message": "Gauss Prime Access is now available!" }, + { "LanguageCode": "fr", "Message": "Prime Access Gauss Prime : disponible !" }, + { "LanguageCode": "it", "Message": "L'Accesso Gauss Prime è ora disponibile!" }, + { "LanguageCode": "de", "Message": "Gauss Prime Access ist jetzt verfügbar!" }, + { "LanguageCode": "es", "Message": "¡Prime Access de Gauss ya está disponible!" }, + { "LanguageCode": "pt", "Message": "O Prime Access do Gauss Prime já está disponível!" }, + { "LanguageCode": "ru", "Message": "Доступ Гаусса Прайм уже открыт!" }, + { "LanguageCode": "pl", "Message": "Gauss Prime Access już dostępny!" }, + { "LanguageCode": "uk", "Message": "Ґаусс-прайм уже доступний!" }, + { "LanguageCode": "tr", "Message": "Gauss Prime Access şimdi sizlerle!" }, + { "LanguageCode": "ja", "Message": "Gauss Prime Accessが登場!" }, + { "LanguageCode": "zh", "Message": "Gauss Prime Access 现已登场!" }, + { "LanguageCode": "ko", "Message": "가우스 프라임 액세스를 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "Gauss Prime Access 現已登場!" } ], - "Prop": "https://www.warframe.com/news/gauss-prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-GaussPrimeAccessAnnounceIGN", - "Date": { "$date": { "$numberLong": "1704913380000" } }, - "EventEndDate": { "$date": { "$numberLong": "1705467600000" } }, + "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-GaussPrimeAccessLaunchIGN", + "Date": { "$date": { "$numberLong": "1705507260000" } }, "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/22f9399fc8ab62f336674db143f2de96_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "659eec73513fef0d62034aac" }, - "Messages": [{ "LanguageCode": "ja", "Message": "1月8日~1月12日の配信スケジュール" }], - "Prop": "https://bit.ly/3vBShk4", - "Date": { "$date": { "$numberLong": "1704913980000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.395673bf50e3d249d8a47403a1e9be45.png", + "_id": { "$oid": "65a82a92da2fe31a960bfe9e" }, + "Messages": [{ "LanguageCode": "en", "Message": "Cross Platform Save is Now Live!" }], + "Prop": "https://forums.warframe.com/topic/1380817-011624-cross-platform-save-stress-test-live-for-everyone/", + "Date": { "$date": { "$numberLong": "1705519620000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65a97a343172b2644a0051ec" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Prime Resurgence Event: Rotation 3" }, + { "LanguageCode": "fr", "Message": "Événement Résurgence Prime : 3ème rotation" }, + { "LanguageCode": "it", "Message": "Evento Risorgenza Prime: Rotazione 3" }, + { "LanguageCode": "de", "Message": "Prime Rückkehr Event: Rotation 3" }, + { "LanguageCode": "es", "Message": "Evento de Resurgimiento Prime: Rotación 3" }, + { "LanguageCode": "pt", "Message": "Evento da Ressurgência Prime: 3ª Rotação" }, + { "LanguageCode": "ru", "Message": "Событие «Возрождение Прайм»: Ротация 3" }, + { "LanguageCode": "pl", "Message": "Odrodzenie Prime: Rotacja 3" }, + { "LanguageCode": "uk", "Message": "Подія прайм-відродження: третя ротація" }, + { "LanguageCode": "tr", "Message": "Prime Diriliş Etkinliği: Rotasyon 3" }, + { "LanguageCode": "ja", "Message": "Prime Resurgence 特別イベント:ローテーション3" }, + { "LanguageCode": "zh", "Message": "Prime 重生活动:轮换 3" }, + { "LanguageCode": "ko", "Message": "프라임 리서전스 이벤트: 로테이션 3" }, + { "LanguageCode": "tc", "Message": "Prime Resurgence 活動:輪替 3" } + ], + "Prop": "https://www.warframe.com/news/prime-resurgence-event-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-PrimeResurgenceR3LaunchIGN", + "Date": { "$date": { "$numberLong": "1705605180000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fae597f527efe097e32e79fca4a0ef82_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65a982175bb7a42d0a0b575e" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj : 35.0.10" }], + "Prop": "https://forums.warframe.com/topic/1381261-murmures-dans-les-murs%C2%A0-gauss-prime-correctif-35010/", + "Date": { "$date": { "$numberLong": "1705607640000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65a99d90cebffc2c7102d6cc" }, + "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.0.10" }], + "Prop": "https://forums.warframe.com/topic/1381286-susurros-en-las-paredes-revisi%C3%B3n-35010/", + "Date": { "$date": { "$numberLong": "1705614660000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "659eeda5a62d3a40dd059ee9" }, - "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.0.7" }], - "Prop": "https://forums.warframe.com/topic/1380265-susurros-en-las-paredes-revisi%C3%B3n-3507/", - "Date": { "$date": { "$numberLong": "1704914280000" } }, + "_id": { "$oid": "65aee293c3a2f524020f60c1" }, + "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #377!" }], + "Prop": "https://forums.warframe.com/topic/1381856-community-stream-schedule-jan-22-28-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CommunityStreams-22", + "Date": { "$date": { "$numberLong": "1705960020000" } }, + "EventStartDate": { "$date": { "$numberLong": "1706223600000" } }, + "EventEndDate": { "$date": { "$numberLong": "1706230800000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframe/", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "659ef6fa1b371d4f7e0e78f6" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Drops Twitch : 8-12 janvier" }], - "Prop": "https://forums.warframe.com/topic/1380272-streams-communautaires-8-12-janvier/", - "Date": { "$date": { "$numberLong": "1704916680000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.d71181e729a8e0dd260b74aadc136e2c.png", + "_id": { "$oid": "65aee2bfda3fe794e60de1aa" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream & Twitch Drops: Jan 22 - 28" }], + "Prop": "https://forums.warframe.com/topic/1381856-community-stream-schedule-jan-22-28-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CommunityStreams-22", + "Date": { "$date": { "$numberLong": "1705960080000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65aefda7a257f498cf022f13" }, + "Messages": [{ "LanguageCode": "ja", "Message": "1月22日~1月28日の配信スケジュール" }], + "Prop": "https://bit.ly/3u2tKnV", + "Date": { "$date": { "$numberLong": "1705966920000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.a2106a7ef9255685cc8cdf9b08e82339.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65afd5325272c792660d6037" }, + "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: Programa de streams de la comunidad" }], + "Prop": "https://forums.warframe.com/topic/1381922-programa-de-streams-y-twitch-drops-22-28-de-enero/", + "Date": { "$date": { "$numberLong": "1706022120000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65afe4af37d109c18707fda2" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Streams Communautaires : 22 - 29 janv." }], + "Prop": "https://forums.warframe.com/topic/1381936-horaire-des-streams-communautaires-22-29-janvier/", + "Date": { "$date": { "$numberLong": "1706026080000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.d757c564a1cf92f3242bd43bd21c6cba.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65a01c9fb68add02bf0642e7" }, - "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.0.8" }], - "Prop": "https://www.warframe.com/updates/pc/35-0-8", - "Date": { "$date": { "$numberLong": "1704991860000" } }, + "_id": { "$oid": "65b12e76645ba809820b04f8" }, + "Messages": [{ "LanguageCode": "en", "Message": " Whispers in the Walls: Hotfix 35.0.11" }], + "Prop": "https://www.warframe.com/updates/pc/35-0-11", + "Date": { "$date": { "$numberLong": "1706110500000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "65b13d134d6668fdf30eecc0" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Lunar New Year 2024" }, + { "LanguageCode": "fr", "Message": "Nouvel An Lunaire 2024" }, + { "LanguageCode": "it", "Message": "Nuovo Anno Lunare 2024" }, + { "LanguageCode": "de", "Message": "Neues Mondjahr 2024" }, + { "LanguageCode": "es", "Message": "Año Nuevo Lunar 2024" }, + { "LanguageCode": "pt", "Message": "Ano Novo Lunar 2024" }, + { "LanguageCode": "ru", "Message": "Лунный Новый Год - 2024" }, + { "LanguageCode": "pl", "Message": "Księżycowy Nowy Rok 2024" }, + { "LanguageCode": "uk", "Message": "Місячний Новий рік 2024" }, + { "LanguageCode": "tr", "Message": "2024 Yeni Ay Yılı" }, + { "LanguageCode": "ja", "Message": "ルナーリニューアル2024" }, + { "LanguageCode": "zh", "Message": "农历新年 2024" }, + { "LanguageCode": "ko", "Message": "2024년 음력설" }, + { "LanguageCode": "tc", "Message": "農歷新年 2024" } + ], + "Prop": "https://www.warframe.com/news/lunar-new-year-2024?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-LunarNewYearLaunchIGN", + "Date": { "$date": { "$numberLong": "1706114100000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/1fdc03befd9fd26a6709646b696ce1e9_1600x900.png", "Priority": false, "MobileOnly": false + }, + { + "_id": { "$oid": "65b140bcb79a3d0c010f86e0" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes de mise à jour : 35.0.11" }], + "Prop": "https://forums.warframe.com/topic/1382071-murmures-dans-les-murs%C2%A0-correctif-35011/", + "Date": { "$date": { "$numberLong": "1706115180000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65b17f9bf9409f11d20b06c3" }, + "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.0.11" }], + "Prop": "https://forums.warframe.com/topic/1382111-susurros-en-las-paredes-revisi%C3%B3n-35011/", + "Date": { "$date": { "$numberLong": "1706131320000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true } ], "Goals": [ { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1704906000000" } }, - "Expiry": { "$date": { "$numberLong": "1706115600000" } }, - "Node": "SolNode129", - "ScoreVar": "FissuresClosed", - "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", - "Count": 5, - "HealthPct": 0.05, - "Regions": [1], - "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", - "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", - "OptionalInMission": true, - "Tag": "HeatFissure", - "UpgradeIds": [{ "$oid": "659da5c292ed3d8cfe475260" }, { "$oid": "659da5c292ed3d8cfe475261" }], - "Personal": true, - "Community": true, - "Goal": 100, - "Reward": { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], "countedItems": [] }, - "InterimGoals": [5, 25, 50, 75], - "InterimRewards": [ - { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], "countedItems": [] }, + "_id": { "$oid": "65ab6ac224bae9718b87d97c" }, + "Activation": { "$date": { "$numberLong": "1705946779012" } }, + "Expiry": { "$date": { "$numberLong": "1707761179012" } }, + "HealthPct": 0.2572128, + "VictimNode": "SolNode228", + "Regions": [2], + "Success": 0, + "Desc": "/Lotus/Language/GameModes/RecurringGhoulAlert", + "ToolTip": "/Lotus/Language/GameModes/RecurringGhoulAlertDesc", + "Icon": "/Lotus/Interface/Icons/Categories/IconGhouls256.png", + "Tag": "GhoulEmergence", + "JobAffiliationTag": "CetusSyndicate", + "JobCurrentVersion": { "$oid": "65b25e4b0000000000000008" }, + "Jobs": [ { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], - "countedItems": [] + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [280, 280, 280, 420] }, { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], - "countedItems": [] + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyHunt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [560, 560, 560, 820] + } + ], + "JobPreviousVersion": { "$oid": "65b23b240000000000000008" }, + "PreviousJobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [300, 300, 300, 440] }, - { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], "countedItems": [] } + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyHunt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [560, 560, 560, 820] + } ] - }, - { - "_id": { "$oid": "658094c3a929ee19cc7aa4ce" }, - "Activation": { "$date": { "$numberLong": "1702926000000" } }, - "Expiry": { "$date": { "$numberLong": "1705345200000" } }, - "Tag": "EntratiEvent", - "Faction": "FC_MITW", - "Desc": "/Lotus/Language/EntratiLab/EntratiGeneral/EntratiEventName", - "ToolTip": "/Lotus/Language/EntratiLab/EntratiGeneral/EntratiEventDesc", - "Icon": "/Lotus/Interface/Icons/WorldStatePanel/GargoylesCryEventBadge.png", - "InstructionalItem": "/Lotus/Types/StoreItems/Packages/GargoylesCryEventStoreItem", - "Community": true, - "Count": 0, - "Goal": 100, - "HealthPct": 1, - "ScoreLocTag": "/Lotus/Language/EntratiLab/EntratiGeneral/EntratiEventMurmurNodes" } ], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "65a01b0e91cf44fa728fa9ac" }, - "Activation": { "$date": { "$numberLong": "1704992400000" } }, - "Expiry": { "$date": { "$numberLong": "1705078800000" } }, + "_id": { "$oid": "65b13e8ebd022673185e07ca" }, + "Activation": { "$date": { "$numberLong": "1706115600000" } }, + "Expiry": { "$date": { "$numberLong": "1706202000000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 1696, - "Boss": "SORTIE_BOSS_AMBULAS", + "Seed": 76908, + "Boss": "SORTIE_BOSS_KRIL", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_SNIPER_ONLY", "node": "SolNode43", "tileset": "CorpusOutpostTileset" }, - { "missionType": "MT_TERRITORY", "modifierType": "SORTIE_MODIFIER_MELEE_ONLY", "node": "SolNode10", "tileset": "CorpusGasCityTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode215", "tileset": "CorpusShipTileset" } + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode11", "tileset": "GrineerSettlementTileset" }, + { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode31", "tileset": "GrineerGalleonTileset" }, + { "missionType": "MT_SURVIVAL", "modifierType": "SORTIE_MODIFIER_HAZARD_ICE", "node": "SolNode225", "tileset": "GrineerGalleonTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "659b377d0573b98446ffa294" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, + "_id": { "$oid": "65adac7e7b431e2243e17729" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 75293, - "Boss": "SORTIE_BOSS_BOREAL", + "Seed": 41119, + "Boss": "SORTIE_BOSS_NIRA", "Missions": [ - { "missionType": "MT_EXTERMINATION", "node": "SolNode79" }, - { "missionType": "MT_EXCAVATE", "node": "SolNode26" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode121" }, + { "missionType": "MT_DEFENSE", "node": "SolNode100" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "65a01e556c7ede78154b9f74" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba63" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "ArbitersSyndicate", - "Seed": 1696, - "Nodes": ["SolNode30", "SolNode61", "SolNode27", "SolNode70", "SolNode84", "SolNode412", "SolNode76"] + "Seed": 76908, + "Nodes": ["SolNode123", "SolNode36", "SolNode97", "SolNode214", "SolNode167", "SolNode63", "SolNode103"] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f77" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "EventSyndicate", - "Seed": 21478, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f75" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba64" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 20607, - "Nodes": ["SolNode36", "SolNode2", "SolNode709", "SolNode89", "SolNode166", "SolNode20", "SolNode4"] + "Seed": 8165, + "Nodes": ["SolNode75", "SolNode68", "SolNode226", "SolNode212", "SolNode138", "SolNode409", "SolNode125"] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f76" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 8731, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f78" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba67" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "KahlSyndicate", - "Seed": 84508, + "Seed": 49021, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f7a" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "QuillsSyndicate", - "Seed": 35173, + "_id": { "$oid": "65b141d68c8556d2b618ba65" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 64190, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f79" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba66" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "EventSyndicate", + "Seed": 50600, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba68" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "NewLokaSyndicate", - "Seed": 28994, - "Nodes": ["SolNode41", "SolNode79", "SolNode88", "SolNode707", "SolNode103", "SolNode172", "SolNode42"] + "Seed": 64700, + "Nodes": ["SolNode41", "SolNode130", "SolNode2", "SolNode100", "SolNode18", "SolNode402", "SolNode209"] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f7b" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba69" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "QuillsSyndicate", + "Seed": 5448, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba6a" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "PerrinSyndicate", - "Seed": 66902, - "Nodes": ["SolNode16", "SolNode26", "SolNode711", "SolNode82", "SolNode17", "SolNode125", "SettlementNode14"] + "Seed": 88616, + "Nodes": ["SolNode109", "SolNode12", "SolNode58", "SolNode710", "SolNode172", "SolNode189", "SolNode56"] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f7c" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 48390, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f7d" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba6c" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 95756, + "Seed": 28171, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f7e" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 53283, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f80" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 60542, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f82" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 89920, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f85" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 47838, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f83" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 69540, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f81" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 20769, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f84" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 13023, - "Nodes": [] - }, - { - "_id": { "$oid": "65a01e566c7ede78154b9f7f" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba6e" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 3994, + "Seed": 18301, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f86" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba6d" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 38372, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba6f" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 32462, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba6b" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 8377, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba71" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 47437, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba73" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 14162, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba75" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 64418, + "Seed": 82017, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f87" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba74" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 37454, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba76" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 71712, + "Seed": 64209, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f89" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 40485, + "_id": { "$oid": "65b141d68c8556d2b618ba70" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 52771, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f8a" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, - "Tag": "VoxSyndicate", - "Seed": 70490, + "_id": { "$oid": "65b141d68c8556d2b618ba72" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 36522, "Nodes": [] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f88" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba77" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "RedVeilSyndicate", - "Seed": 19414, - "Nodes": ["SolNode46", "SolNode109", "SolNode212", "SolNode137", "SolNode67", "SolNode223", "SolNode181"] + "Seed": 30017, + "Nodes": ["SolNode224", "SolNode46", "SolNode709", "SettlementNode14", "SolNode204", "SolNode187", "SolNode162"] }, { - "_id": { "$oid": "65a01e566c7ede78154b9f8b" }, - "Activation": { "$date": { "$numberLong": "1704992341970" } }, - "Expiry": { "$date": { "$numberLong": "1705078740000" } }, + "_id": { "$oid": "65b141d68c8556d2b618ba78" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 89360, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba79" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, + "Tag": "VoxSyndicate", + "Seed": 58460, + "Nodes": [] + }, + { + "_id": { "$oid": "65b141d68c8556d2b618ba7a" }, + "Activation": { "$date": { "$numberLong": "1706115542067" } }, + "Expiry": { "$date": { "$numberLong": "1706201940000" } }, "Tag": "SteelMeridianSyndicate", - "Seed": 52322, - "Nodes": ["SolNode39", "SolNode66", "SolNode58", "SolNode139", "SolNode102", "SolNode119", "SolNode64"] + "Seed": 59633, + "Nodes": ["SolNode89", "SolNode113", "SolNode70", "SettlementNode12", "SolNode166", "SolNode191", "SolNode50"] }, { - "_id": { "$oid": "65a061660000000000000002" }, - "Activation": { "$date": { "$numberLong": "1705009510873" } }, - "Expiry": { "$date": { "$numberLong": "1705018509747" } }, + "_id": { "$oid": "65b25e4b0000000000000028" }, + "Activation": { "$date": { "$numberLong": "1706188363473" } }, + "Expiry": { "$date": { "$numberLong": "1706197362346" } }, + "Tag": "ZarimanSyndicate", + "Seed": 43557, + "Nodes": [] + }, + { + "_id": { "$oid": "65b25e4b0000000000000004" }, + "Activation": { "$date": { "$numberLong": "1706188363473" } }, + "Expiry": { "$date": { "$numberLong": "1706197362346" } }, + "Tag": "EntratiLabSyndicate", + "Seed": 43557, + "Nodes": [] + }, + { + "_id": { "$oid": "65b25e4b0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1706188363473" } }, + "Expiry": { "$date": { "$numberLong": "1706197362346" } }, "Tag": "EntratiSyndicate", - "Seed": 2861, + "Seed": 43557, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [4, 4, 4] + "xpAmounts": [6, 6, 6] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [11, 11, 11] + "xpAmounts": [9, 9, 9] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", @@ -736,23 +768,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [18, 18, 18, 27] + "xpAmounts": [17, 17, 17, 26] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 41] + "xpAmounts": [22, 22, 22, 22, 43] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -760,7 +792,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -769,7 +801,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -778,7 +810,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -789,47 +821,39 @@ ] }, { - "_id": { "$oid": "65a061660000000000000004" }, - "Activation": { "$date": { "$numberLong": "1705009510873" } }, - "Expiry": { "$date": { "$numberLong": "1705018509747" } }, - "Tag": "EntratiLabSyndicate", - "Seed": 2862, - "Nodes": [] - }, - { - "_id": { "$oid": "65a061660000000000000008" }, - "Activation": { "$date": { "$numberLong": "1705009510873" } }, - "Expiry": { "$date": { "$numberLong": "1705018509747" } }, + "_id": { "$oid": "65b25e4b0000000000000008" }, + "Activation": { "$date": { "$numberLong": "1706188363473" } }, + "Expiry": { "$date": { "$numberLong": "1706197362346" } }, "Tag": "CetusSyndicate", - "Seed": 2861, + "Seed": 43557, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [430, 430, 430] + "xpAmounts": [370, 370, 370] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [620, 620, 620] + "xpAmounts": [730, 730, 730] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [600, 600, 600, 890] + "xpAmounts": [660, 660, 660, 970] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, @@ -837,15 +861,15 @@ "xpAmounts": [590, 590, 590, 590, 1160] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [750, 750, 750, 750, 1470] + "xpAmounts": [730, 730, 730, 730, 1440] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -858,41 +882,41 @@ "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [810, 810, 810, 810, 1580] + "xpAmounts": [790, 790, 790, 790, 1550] } ] }, { - "_id": { "$oid": "65a061660000000000000024" }, - "Activation": { "$date": { "$numberLong": "1705009510873" } }, - "Expiry": { "$date": { "$numberLong": "1705018509747" } }, + "_id": { "$oid": "65b25e4b0000000000000024" }, + "Activation": { "$date": { "$numberLong": "1706188363473" } }, + "Expiry": { "$date": { "$numberLong": "1706197362346" } }, "Tag": "SolarisSyndicate", - "Seed": 2861, + "Seed": 43557, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [400, 400, 400] + "xpAmounts": [470, 470, 470] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobAmbush", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [720, 720, 720] + "xpAmounts": [660, 660, 660] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [650, 650, 650, 960] + "xpAmounts": [610, 610, 610, 890] }, { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", @@ -900,18 +924,18 @@ "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [560, 560, 560, 560, 1100] + "xpAmounts": [630, 630, 630, 630, 1230] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [760, 760, 760, 760, 1480] + "xpAmounts": [720, 720, 720, 720, 1410] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -924,276 +948,229 @@ "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [790, 790, 790, 790, 1550] + "xpAmounts": [760, 760, 760, 760, 1490] } ] - }, - { - "_id": { "$oid": "65a061660000000000000028" }, - "Activation": { "$date": { "$numberLong": "1705009510873" } }, - "Expiry": { "$date": { "$numberLong": "1705018509747" } }, - "Tag": "ZarimanSyndicate", - "Seed": 2862, - "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "65a07023f58b4c9a94eb83c1" }, + "_id": { "$oid": "65b24fd5f4b71e28b251b3c9" }, + "Region": 16, + "Seed": 6118, + "Activation": { "$date": { "$numberLong": "1706184661538" } }, + "Expiry": { "$date": { "$numberLong": "1706191046761" } }, + "Node": "SettlementNode14", + "MissionType": "MT_INTEL", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65b24fd5f4b71e28b251b3ca" }, + "Region": 10, + "Seed": 35862, + "Activation": { "$date": { "$numberLong": "1706184661538" } }, + "Expiry": { "$date": { "$numberLong": "1706191223622" } }, + "Node": "SolNode147", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65b2513deec0e5515b872ff4" }, "Region": 13, - "Seed": 39232, - "Activation": { "$date": { "$numberLong": "1705013281535" } }, - "Expiry": { "$date": { "$numberLong": "1705018594074" } }, - "Node": "SolNode209", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT3", - "Hard": true + "Seed": 44943, + "Activation": { "$date": { "$numberLong": "1706185021956" } }, + "Expiry": { "$date": { "$numberLong": "1706191124596" } }, + "Node": "SolNode211", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT3" }, { - "_id": { "$oid": "65a07024f58b4c9a94eb83c2" }, - "Region": 7, - "Seed": 59922, - "Activation": { "$date": { "$numberLong": "1705013281535" } }, - "Expiry": { "$date": { "$numberLong": "1705018667988" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "65a0714d7cdf1943353a0592" }, - "Region": 12, - "Seed": 73278, - "Activation": { "$date": { "$numberLong": "1705013581791" } }, - "Expiry": { "$date": { "$numberLong": "1705020707853" } }, - "Node": "SolNode181", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "65a0727922c78e8f5fb60b47" }, - "Region": 19, - "Seed": 40682, - "Activation": { "$date": { "$numberLong": "1705013881965" } }, - "Expiry": { "$date": { "$numberLong": "1705020618878" } }, - "Node": "SolNode741", - "MissionType": "MT_ASSAULT", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65a0727922c78e8f5fb60b48" }, - "Region": 19, - "Seed": 83784, - "Activation": { "$date": { "$numberLong": "1705013881965" } }, - "Expiry": { "$date": { "$numberLong": "1705018576588" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65a0727a22c78e8f5fb60b49" }, - "Region": 19, - "Seed": 7212, - "Activation": { "$date": { "$numberLong": "1705013881965" } }, - "Expiry": { "$date": { "$numberLong": "1705018398825" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65a073a6483fc3545eb47738" }, - "Region": 4, - "Seed": 45953, - "Activation": { "$date": { "$numberLong": "1705014182081" } }, - "Expiry": { "$date": { "$numberLong": "1705019580012" } }, - "Node": "SolNode58", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "65a073a6483fc3545eb47739" }, + "_id": { "$oid": "65b251f1e8fdfd1d5af5eaa2" }, "Region": 2, - "Seed": 18908, - "Activation": { "$date": { "$numberLong": "1705014182081" } }, - "Expiry": { "$date": { "$numberLong": "1705020837721" } }, - "Node": "SolNode101", - "MissionType": "MT_EXCAVATE", + "Seed": 48148, + "Activation": { "$date": { "$numberLong": "1706185201485" } }, + "Expiry": { "$date": { "$numberLong": "1706191495444" } }, + "Node": "SolNode22", + "MissionType": "MT_DEFENSE", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "65a073e1d9c07556623537ee" }, - "Region": 19, - "Seed": 31683, - "Activation": { "$date": { "$numberLong": "1705014241266" } }, - "Expiry": { "$date": { "$numberLong": "1705020703541" } }, - "Node": "SolNode742", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT5", + "_id": { "$oid": "65b251f1e8fdfd1d5af5eaa3" }, + "Region": 3, + "Seed": 11637, + "Activation": { "$date": { "$numberLong": "1706185201485" } }, + "Expiry": { "$date": { "$numberLong": "1706191437768" } }, + "Node": "SolNode89", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "65a073e1d9c07556623537ef" }, + "_id": { "$oid": "65b25666660026964d77ff05" }, "Region": 19, - "Seed": 9354, - "Activation": { "$date": { "$numberLong": "1705014241266" } }, - "Expiry": { "$date": { "$numberLong": "1705021040431" } }, + "Seed": 14729, + "Activation": { "$date": { "$numberLong": "1706186342092" } }, + "Expiry": { "$date": { "$numberLong": "1706191493274" } }, "Node": "SolNode744", "MissionType": "MT_SURVIVAL", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "65a073e1d9c07556623537f0" }, - "Region": 19, - "Seed": 78460, - "Activation": { "$date": { "$numberLong": "1705014241266" } }, - "Expiry": { "$date": { "$numberLong": "1705019928415" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "65a077dd6cad60ba004377cc" }, - "Region": 3, - "Seed": 64334, - "Activation": { "$date": { "$numberLong": "1705015261138" } }, - "Expiry": { "$date": { "$numberLong": "1705019468913" } }, - "Node": "SolNode75", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "65a077dd6cad60ba004377cd" }, - "Region": 4, - "Seed": 94454, - "Activation": { "$date": { "$numberLong": "1705015261138" } }, - "Expiry": { "$date": { "$numberLong": "1705020848756" } }, - "Node": "SolNode41", - "MissionType": "MT_INTEL", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "65a0781921502a71702de848" }, + "_id": { "$oid": "65b2575505da9552426a0928" }, "Region": 12, - "Seed": 7407, - "Activation": { "$date": { "$numberLong": "1705015321320" } }, - "Expiry": { "$date": { "$numberLong": "1705019438510" } }, + "Seed": 80548, + "Activation": { "$date": { "$numberLong": "1706186581233" } }, + "Expiry": { "$date": { "$numberLong": "1706193364788" } }, "Node": "SolNode185", "MissionType": "MT_TERRITORY", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65a0781921502a71702de849" }, - "Region": 9, - "Seed": 15341, - "Activation": { "$date": { "$numberLong": "1705015321320" } }, - "Expiry": { "$date": { "$numberLong": "1705020187407" } }, - "Node": "SolNode102", - "MissionType": "MT_INTEL", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65a0781921502a71702de84a" }, - "Region": 11, - "Seed": 83357, - "Activation": { "$date": { "$numberLong": "1705015321320" } }, - "Expiry": { "$date": { "$numberLong": "1705020716978" } }, - "Node": "SolNode153", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65a079bd6df460ead44edec4" }, - "Region": 6, - "Seed": 2140, - "Activation": { "$date": { "$numberLong": "1705015741404" } }, - "Expiry": { "$date": { "$numberLong": "1705020616786" } }, - "Node": "SolNode82", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "65a079bd6df460ead44edec5" }, - "Region": 16, - "Seed": 92789, - "Activation": { "$date": { "$numberLong": "1705015741404" } }, - "Expiry": { "$date": { "$numberLong": "1705021351863" } }, - "Node": "SettlementNode1", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "65a07a35778570f065d3af99" }, - "Region": 16, - "Seed": 48093, - "Activation": { "$date": { "$numberLong": "1705015861827" } }, - "Expiry": { "$date": { "$numberLong": "1705019577074" } }, - "Node": "SettlementNode15", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT2", + "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "65a07a35778570f065d3af9a" }, + "_id": { "$oid": "65b2575505da9552426a0929" }, + "Region": 11, + "Seed": 55560, + "Activation": { "$date": { "$numberLong": "1706186581233" } }, + "Expiry": { "$date": { "$numberLong": "1706192648739" } }, + "Node": "SolNode175", + "MissionType": "MT_HIVE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "65b259adaecb54752afad9fc" }, + "Region": 15, + "Seed": 69163, + "Activation": { "$date": { "$numberLong": "1706187181408" } }, + "Expiry": { "$date": { "$numberLong": "1706194191477" } }, + "Node": "SolNode402", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "65b259adaecb54752afad9fd" }, + "Region": 8, + "Seed": 49525, + "Activation": { "$date": { "$numberLong": "1706187181408" } }, + "Expiry": { "$date": { "$numberLong": "1706192097281" } }, + "Node": "SolNode62", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "65b25bc958fb85f81847da3d" }, + "Region": 11, + "Seed": 85623, + "Activation": { "$date": { "$numberLong": "1706187721137" } }, + "Expiry": { "$date": { "$numberLong": "1706192724073" } }, + "Node": "SolNode164", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65b25bc958fb85f81847da3e" }, + "Region": 12, + "Seed": 44998, + "Activation": { "$date": { "$numberLong": "1706187721137" } }, + "Expiry": { "$date": { "$numberLong": "1706193977801" } }, + "Node": "SolNode195", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65b25bc958fb85f81847da3f" }, + "Region": 9, + "Seed": 11368, + "Activation": { "$date": { "$numberLong": "1706187721137" } }, + "Expiry": { "$date": { "$numberLong": "1706194804134" } }, + "Node": "SolNode21", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65b25c417b53dcc08f43dc42" }, + "Region": 19, + "Seed": 94892, + "Activation": { "$date": { "$numberLong": "1706187841508" } }, + "Expiry": { "$date": { "$numberLong": "1706193967350" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65b25c417b53dcc08f43dc43" }, + "Region": 19, + "Seed": 61453, + "Activation": { "$date": { "$numberLong": "1706187841508" } }, + "Expiry": { "$date": { "$numberLong": "1706194621088" } }, + "Node": "SolNode743", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65b25e5d01c4c6e94c0308fd" }, "Region": 5, - "Seed": 59319, - "Activation": { "$date": { "$numberLong": "1705015861827" } }, - "Expiry": { "$date": { "$numberLong": "1705020121287" } }, + "Seed": 21125, + "Activation": { "$date": { "$numberLong": "1706188381165" } }, + "Expiry": { "$date": { "$numberLong": "1706193632515" } }, "Node": "SolNode74", "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT2", - "Hard": true + "Modifier": "VoidT2" }, { - "_id": { "$oid": "65a07a35778570f065d3af9b" }, - "Region": 6, - "Seed": 66429, - "Activation": { "$date": { "$numberLong": "1705015861827" } }, - "Expiry": { "$date": { "$numberLong": "1705021256994" } }, - "Node": "SolNode42", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2", - "Hard": true + "_id": { "$oid": "65b263fde7e465acf52b363e" }, + "Region": 2, + "Seed": 86913, + "Activation": { "$date": { "$numberLong": "1706189821856" } }, + "Expiry": { "$date": { "$numberLong": "1706193902216" } }, + "Node": "SolNode107", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT1" }, { - "_id": { "$oid": "65a07cc9ef03e3080839e257" }, - "Region": 15, - "Seed": 82496, - "Activation": { "$date": { "$numberLong": "1705016521897" } }, - "Expiry": { "$date": { "$numberLong": "1705022742145" } }, - "Node": "SolNode409", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "65a07cc9ef03e3080839e258" }, - "Region": 13, - "Seed": 62858, - "Activation": { "$date": { "$numberLong": "1705016521897" } }, - "Expiry": { "$date": { "$numberLong": "1705023590153" } }, - "Node": "SolNode216", + "_id": { "$oid": "65b263fde7e465acf52b363f" }, + "Region": 3, + "Seed": 24477, + "Activation": { "$date": { "$numberLong": "1706189821856" } }, + "Expiry": { "$date": { "$numberLong": "1706196725917" } }, + "Node": "SolNode39", "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT3" + "Modifier": "VoidT1" } ], "GlobalUpgrades": [], "FlashSales": [ { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1735689600000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleC", "ShowInMarket": true, "HideFromMarket": false, - "SupporterPack": true, + "SupporterPack": false, "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, "BogoBuy": 0, - "BogoGet": 0 + "BogoGet": 0, + "PremiumOverride": 575, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 70, + "StartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EndDate": { "$date": { "$numberLong": "1719838800000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", @@ -1209,16 +1186,18 @@ "BogoGet": 0 }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", + "TypeName": "/Lotus/Upgrades/Skins/Effects/LNYDragonEphemera", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 70, - "StartDate": { "$date": { "$numberLong": "1688216400000" } }, - "EndDate": { "$date": { "$numberLong": "1719838800000" } } + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", @@ -1234,17 +1213,31 @@ "EndDate": { "$date": { "$numberLong": "1893516600000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1735689600000" } }, "ShowInMarket": true, - "HideFromMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleB", + "ShowInMarket": true, + "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 1, + "PremiumOverride": 295, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1701103860000" } }, - "EndDate": { "$date": { "$numberLong": "1893516660000" } } + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", @@ -1260,17 +1253,45 @@ "EndDate": { "$date": { "$numberLong": "1736767380000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704187920000" } }, + "EndDate": { "$date": { "$numberLong": "1735723920000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 65, + "PremiumOverride": 30, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1702381620000" } }, - "EndDate": { "$date": { "$numberLong": "1706788020000" } } + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackC", @@ -1285,19 +1306,6 @@ "StartDate": { "$date": { "$numberLong": "1704187800000" } }, "EndDate": { "$date": { "$numberLong": "1735723800000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704187920000" } }, - "EndDate": { "$date": { "$numberLong": "1735723920000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", "ShowInMarket": true, @@ -1310,11 +1318,609 @@ "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1704187860000" } }, "EndDate": { "$date": { "$numberLong": "1735723860000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Dragon/ChromaLNYSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 165, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1895482620000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 85, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1701103860000" } }, + "EndDate": { "$date": { "$numberLong": "1893516660000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 65, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1702381620000" } }, + "EndDate": { "$date": { "$numberLong": "1706788020000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Ogris", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 135, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/Emotes/LNY2024DragonEmote", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Tails/LNYDragonTail", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 15, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/LNYBirdSugatra", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 15, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNYHookSword", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 75, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 40, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Wings/LNYDragonWings", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 15, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Nukor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Interface/Graphics/CustomUI/LunarNewYearStyle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatWhite", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CernosSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/CNY2021Poster", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022IgnisSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 45, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 15, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavat", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTiger", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/PeachBlossomsEphemera", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 15, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatGold", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CedoSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Kubrows/Armor/Lunar2022KubrowArmor", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 90, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/LunarEphemera", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022Zarr", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024SentinelSkinBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 95, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } } ], "InGameMarket": { "LandingPage": { "Categories": [ + { + "CategoryName": "SEASONAL", + "Name": "/Lotus/Language/Store/SeasonalCategoryTitle", + "Icon": "seasonal", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/LNY2024BundleC", + "/Lotus/Types/StoreItems/Packages/LNY2024BundleB", + "/Lotus/Types/StoreItems/Packages/LNY2024BundleA", + "/Lotus/StoreItems/Upgrades/Skins/Dragon/ChromaLNYSkin", + "/Lotus/StoreItems/Upgrades/Skins/Effects/LNYDragonEphemera", + "/Lotus/StoreItems/Types/Items/Emotes/LNY2024DragonEmote", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNY2024Ogris", + "/Lotus/Types/StoreItems/Packages/LNY2024SentinelSkinBundle", + "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", + "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", + "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/LNYDragonWings", + "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/LNYDragonTail", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNYHookSword", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", + "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/LNYBirdSugatra", + "/Lotus/StoreItems/Interface/Graphics/CustomUI/LunarNewYearStyle", + "/Lotus/StoreItems/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNY2024Nukor", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph", + "/Lotus/StoreItems/Types/Items/ShipDecos/CNY2021Poster", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2023CedoSkin", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", + "/Lotus/StoreItems/Upgrades/Skins/Effects/LunarEphemera", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2023CernosSkin", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyTiger", + "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2022IgnisSkin", + "/Lotus/StoreItems/Upgrades/Skins/Effects/PeachBlossomsEphemera", + "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/Lunar2022KubrowArmor", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2022Zarr", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", + "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", + "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", + "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavatWhite", + "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavatGold", + "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavat", + "/Lotus/StoreItems/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin" + ] + }, + { + "CategoryName": "POPULAR", + "Name": "/Lotus/Language/Menu/StorePopular", + "Icon": "popular", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", + "/Lotus/Types/StoreItems/Packages/WarframeBundles/DagathItemsBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", + "/Lotus/StoreItems/Powersuits/Wraith/Wraith", + "/Lotus/StoreItems/Powersuits/EntratiMech/ThanoTech", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/Types/StoreItems/Packages/IncarnonPackages/BoarIncarnonBundle", + "/Lotus/Types/StoreItems/Packages/ColorPack", + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", + "/Lotus/Types/StoreItems/Packages/FormaPack" + ] + }, { "CategoryName": "WHISPERS", "Name": "/Lotus/Language/Store/WhispersInTheWallCategory", @@ -1349,29 +1955,6 @@ "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/DeerPlush" ] }, - { - "CategoryName": "POPULAR", - "Name": "/Lotus/Language/Menu/StorePopular", - "Icon": "popular", - "AddToMenu": true, - "Items": [ - "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/DagathItemsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/Halloween2023BatBundle", - "/Lotus/Types/StoreItems/Packages/Halloween2023CompleteBundle", - "/Lotus/StoreItems/Powersuits/Wraith/Wraith", - "/Lotus/StoreItems/Powersuits/EntratiMech/ThanoTech", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/StoreItems/Powersuits/Fairy/Fairy", - "/Lotus/Types/StoreItems/Packages/IncarnonPackages/BoarIncarnonBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", - "/Lotus/StoreItems/Powersuits/Runner/Runner", - "/Lotus/Types/StoreItems/Packages/ColorPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", - "/Lotus/Types/StoreItems/Packages/FormaPack" - ] - }, { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "Items": [] }, { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] }, { @@ -1379,13 +1962,13 @@ "Name": "/Lotus/Language/Store/Store_PremiumBundles", "Icon": "premiumbundles", "Items": [ + "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", "/Lotus/Types/StoreItems/Packages/SanctumPack", - "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "/Lotus/Types/StoreItems/Packages/PowerPack", - "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier2StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier1StoreItem" + "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier2StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier1StoreItem" ] } ] @@ -1393,164 +1976,180 @@ }, "Invasions": [ { - "_id": { "$oid": "659e39691c7e013e23a73040" }, + "_id": { "$oid": "65afaef2351fb9694241497c" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode189", - "Count": 36066, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "659348a1828ed5fd1886eeb5" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 119225, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 130701, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1704869025650" } } - }, - { - "_id": { "$oid": "65a06f6d2ad7c660a79bd8fc" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode184", - "Count": 396, - "Goal": 33000, + "Node": "SolNode140", + "Count": -38640, + "Goal": 39000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "659348a1828ed5fd1886eeb5" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 632908, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 897470, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1705013931100" } } - }, - { - "_id": { "$oid": "65979c0df1c7a9161bfd0868" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode187", - "Count": 30404, - "Goal": 47000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65979c0df1c7a9161bfd0868" }, + "ChainID": { "$oid": "65afaef2351fb9694241497c" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/DeraVandalBlueprint", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 348816, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/TwinVipersWraithReceiver", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 557051, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1704509479191" } } + "AttackerMissionInfo": { "seed": 140526, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithStock", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 247423, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1706079736855" } } }, { - "_id": { "$oid": "659e545e083da62ea00d3166" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode97", - "Count": -21391, - "Goal": 37000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "659e545e083da62ea00d3166" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 650150, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 256790, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1704924874857" } } - }, - { - "_id": { "$oid": "659f29a58d69717e879621ad" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode99", - "Count": -25525, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "659f01ce83dbcc7fed11455a" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 626946, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 437547, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1704929701945" } } - }, - { - "_id": { "$oid": "659f89bd578c5d60d376d09c" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode65", - "Count": -38541, - "Goal": 38000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "659f01ce83dbcc7fed11455a" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 717502, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 702743, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1704954301453" } } - }, - { - "_id": { "$oid": "659f8639bf11e67818631e24" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode81", - "Count": -40541, - "Goal": 40000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "659f8639bf11e67818631e24" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 441177, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 607746, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1704958263294" } } - }, - { - "_id": { "$oid": "659fbaf5a4105b8315e6d9a2" }, + "_id": { "$oid": "65b0dd496d385f3f83c6efea" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode51", - "Count": -11477, + "Count": -30041, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "659f8639bf11e67818631e24" }, + "Completed": true, + "ChainID": { "$oid": "65b0b44543e5f2aaa5dc4238" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 849909, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 600552, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 224039, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1704966901888" } } + "DefenderMissionInfo": { "seed": 954621, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1706089801698" } } }, { - "_id": { "$oid": "659fbaf5a4105b8315e6d9a3" }, + "_id": { "$oid": "65b17349abe69a3a398a8d4d" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode43", - "Count": -46148, - "Goal": 46000, + "Node": "SolNode66", + "Count": -45510, + "Goal": 45000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "659f8639bf11e67818631e24" }, + "ChainID": { "$oid": "65b1352d098c8f312414469f" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 584657, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 114651, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1704966901888" } } + "AttackerMissionInfo": { "seed": 23499, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 781631, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706128201446" } } }, { - "_id": { "$oid": "659fe075276afd63081413b3" }, + "_id": { "$oid": "65b1909697c9b75ced9f84ee" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode56", - "Count": -37399, + "Node": "SolNode128", + "Count": -37084, "Goal": 37000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "659f8639bf11e67818631e24" }, + "ChainID": { "$oid": "65b1352d098c8f312414469f" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 963884, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 302006, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1704976501936" } } + "AttackerMissionInfo": { "seed": 974901, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 769298, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706135702032" } } + }, + { + "_id": { "$oid": "65b1909697c9b75ced9f84ef" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode107", + "Count": -41089, + "Goal": 41000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "65b1352d098c8f312414469f" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 583106, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 681515, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706135702032" } } + }, + { + "_id": { "$oid": "65b1b999811d9b9c33e7ec57" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode22", + "Count": -41537, + "Goal": 41000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "65b1352d098c8f312414469f" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 693218, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 836123, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706146201951" } } + }, + { + "_id": { "$oid": "65b138b186388735d7c58d22" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode1", + "Count": 9211, + "Goal": 37000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65b138b186388735d7c58d22" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/StrunWraithBlueprint", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 981099, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 422102, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1706177182387" } } + }, + { + "_id": { "$oid": "65b205c55df39847640455d2" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode107", + "Count": -30576, + "Goal": 45000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65b205c55df39847640455d2" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 780491, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 560485, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706171815900" } } + }, + { + "_id": { "$oid": "65b24765b0239b3bf17f7658" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode22", + "Count": -2361, + "Goal": 32000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65b205c55df39847640455d2" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 498139, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 407506, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706182501259" } } + }, + { + "_id": { "$oid": "65b235d2d954aa89d952e263" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode216", + "Count": -5825, + "Goal": 36000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65b235d2d954aa89d952e263" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 303978, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 511183, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706181532444" } } + }, + { + "_id": { "$oid": "65b262592f5fa492b6d35be5" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode220", + "Count": -97, + "Goal": 32000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65b235d2d954aa89d952e263" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 445670, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 392073, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1706189401747" } } } ], "HubEvents": [], @@ -1558,7 +2157,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9809380 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9828234 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1572,79 +2171,71 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } - }, - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1704906000000" } }, - "Expiry": { "$date": { "$numberLong": "1706115600000" } }, - "Node": "SolNode129", - "Faction": "FC_CORPUS", - "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] - }, - { - "_id": { "$oid": "65a06f6d2ad7c660a79bd8fb" }, - "Node": "SolNode189", - "Faction": "FC_CORPUS", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadD", - "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/RescueCorrupted", - "Expiry": { "$date": { "$numberLong": "1705061533890" } } } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1705068000000" } }, - "Expiry": { "$date": { "$numberLong": "1705240800000" } }, + "Activation": { "$date": { "$numberLong": "1706277600000" } }, + "Expiry": { "$date": { "$numberLong": "1706450400000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "SaturnHUB" + "Node": "PlutoHUB" } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1704394800000" } }, + "Activation": { "$date": { "$numberLong": "1705604400000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoltLokiPrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaTrinityPrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoltPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVLokiPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTrinityPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Volt/VoltPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/KazeruPrimeMeleeDangle", "PrimePrice": 1 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEdoPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Archwing/PrimeJetPack/PrimeJetPack", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Loki/LokiPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/PrimeMeleeDangle", "PrimePrice": 1 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVSummusPrimeSentAccessories", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Staff/PrimeBo/PrimeBoWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeWyrmPowerSuit", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/AntiMatter/NovaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilFive", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeVasto/PrimeVastoPistol", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSoma/PrimeSomaRifle", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Trinity/TrinityPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVKavasaPrimeKubrowArmor", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeDualKamas/PrimeDualKamas", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NovaPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TrinityPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/VoltPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/LokiPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionLokiVoltVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNovaTrinityVaultABronze", "RegularPrice": 1 } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtlasVaubanPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVSarynPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtlasPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVaubanPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Berserker/ValkyrPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinPrime", "PrimePrice": 1 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVSaitaPrimeSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Bows/PrimeCernos/PrimeCernos", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeVenKa/PrimeVenkaClaws", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Saryn/SarynPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Characters/Tenno/Accessory/Scarves/PrimeScarfD/Cloth/PrimeScarfDItem", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilSaryn", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/ThrowingWeapons/PrimeLiDagger/PrimeLiDagger", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeKatana/PrimeNikana", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Brawler/AtlasPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfAtlas", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOrcusPrimeSentAccessories", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeTekko/PrimeTekko", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeDethCubePowerSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Trapper/TrapperPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfV", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/CatenoPrimeMeleeDangle", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeFragor/PrimeFragor", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeAkstiletto/PrimeAkstiletto", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/SarynPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ValkyrPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/AtlasPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/VaubanPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionAtlasVaubanVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionAtlasVaubanVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionAtlasVaubanVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionSarynValkyrVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionSarynValkyrVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1705604400000" } }, + "Expiry": { "$date": { "$numberLong": "1706814000000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -1741,70 +2332,112 @@ ], "VoidStorms": [ { - "_id": { "$oid": "65a06992eb3e823212dda837" }, - "Node": "CrewBattleNode518", - "Activation": { "$date": { "$numberLong": "1705015201821" } }, - "Expiry": { "$date": { "$numberLong": "1705020601821" } }, + "_id": { "$oid": "65b2489214b7fcf4f7674815" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1706185201821" } }, + "Expiry": { "$date": { "$numberLong": "1706190601821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65a06992eb3e823212dda838" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1705015201825" } }, - "Expiry": { "$date": { "$numberLong": "1705020601825" } }, - "ActiveMissionTier": "VoidT1" + "_id": { "$oid": "65b2489214b7fcf4f7674819" }, + "Node": "CrewBattleNode531", + "Activation": { "$date": { "$numberLong": "1706185201832" } }, + "Expiry": { "$date": { "$numberLong": "1706190601832" } }, + "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "65a06992eb3e823212dda839" }, - "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1705015201827" } }, - "Expiry": { "$date": { "$numberLong": "1705020601827" } }, + "_id": { "$oid": "65b2489214b7fcf4f7674817" }, + "Node": "CrewBattleNode533", + "Activation": { "$date": { "$numberLong": "1706185201827" } }, + "Expiry": { "$date": { "$numberLong": "1706190601827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "65a06992eb3e823212dda83b" }, - "Node": "CrewBattleNode531", - "Activation": { "$date": { "$numberLong": "1705015201832" } }, - "Expiry": { "$date": { "$numberLong": "1705020601832" } }, - "ActiveMissionTier": "VoidT4" + "_id": { "$oid": "65b2489214b7fcf4f7674816" }, + "Node": "CrewBattleNode511", + "Activation": { "$date": { "$numberLong": "1706185201825" } }, + "Expiry": { "$date": { "$numberLong": "1706190601825" } }, + "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65a06992eb3e823212dda83a" }, + "_id": { "$oid": "65b2489214b7fcf4f7674818" }, "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1705015201829" } }, - "Expiry": { "$date": { "$numberLong": "1705020601829" } }, + "Activation": { "$date": { "$numberLong": "1706185201829" } }, + "Expiry": { "$date": { "$numberLong": "1706190601829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "65a06992eb3e823212dda83c" }, + "_id": { "$oid": "65b2489214b7fcf4f767481a" }, "Node": "CrewBattleNode550", - "Activation": { "$date": { "$numberLong": "1705015201834" } }, - "Expiry": { "$date": { "$numberLong": "1705020601834" } }, + "Activation": { "$date": { "$numberLong": "1706185201834" } }, + "Expiry": { "$date": { "$numberLong": "1706190601834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65b256a1f85a0db091fe17eb" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1706188801825" } }, + "Expiry": { "$date": { "$numberLong": "1706194201825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65b256a1f85a0db091fe17ea" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1706188801821" } }, + "Expiry": { "$date": { "$numberLong": "1706194201821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65b256a1f85a0db091fe17ed" }, + "Node": "CrewBattleNode521", + "Activation": { "$date": { "$numberLong": "1706188801829" } }, + "Expiry": { "$date": { "$numberLong": "1706194201829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "65b256a1f85a0db091fe17ec" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1706188801827" } }, + "Expiry": { "$date": { "$numberLong": "1706194201827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "65b256a1f85a0db091fe17ee" }, + "Node": "CrewBattleNode529", + "Activation": { "$date": { "$numberLong": "1706188801832" } }, + "Expiry": { "$date": { "$numberLong": "1706194201832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65b256a1f85a0db091fe17ef" }, + "Node": "CrewBattleNode538", + "Activation": { "$date": { "$numberLong": "1706188801834" } }, + "Expiry": { "$date": { "$numberLong": "1706194201834" } }, "ActiveMissionTier": "VoidT4" } ], - "PrimeAccessAvailability": { "State": "PRIME1" }, + "PrimeAccessAvailability": { "State": "PRIME2" }, "PrimeVaultAvailabilities": [false, false, false, false, false], "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Pistols/TnBardPistol/TnBardPistolGun", - "Activation": { "$date": { "$numberLong": "1704949200000" } }, - "Expiry": { "$date": { "$numberLong": "1705042800000" } }, + "StoreItem": "/Lotus/StoreItems/Powersuits/Magician/Magician", + "Activation": { "$date": { "$numberLong": "1706166000000" } }, + "Expiry": { "$date": { "$numberLong": "1706259600000" } }, "Discount": 20, - "OriginalPrice": 190, - "SalePrice": 152, - "AmountTotal": 300, - "AmountSold": 18 + "OriginalPrice": 200, + "SalePrice": 160, + "AmountTotal": 200, + "AmountSold": 17 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "659873ad24ae204a62fa071b" }, + "_id": { "$oid": "65aaeb0592bde326c6403108" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1704489901970" } }, - "endDate": { "$date": { "$numberLong": "1705094701970" } }, + "startDate": { "$date": { "$numberLong": "1705700101189" } }, + "endDate": { "$date": { "$numberLong": "1706304901189" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -1812,32 +2445,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "659873ad24ae204a62fa071e" }, + "_id": { "$oid": "65aaeb0592bde326c640310b" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1704489901970" } }, - "endDate": { "$date": { "$numberLong": "1705094701970" } }, + "startDate": { "$date": { "$numberLong": "1705700101189" } }, + "endDate": { "$date": { "$numberLong": "1706304901189" } }, "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "659873ad24ae204a62fa071b" }, { "$oid": "659873ad24ae204a62fa071c" }, { "$oid": "659873ad24ae204a62fa071d" }], + "subChallenges": [{ "$oid": "65aaeb0592bde326c6403108" }, { "$oid": "65aaeb0592bde326c6403109" }, { "$oid": "65aaeb0592bde326c640310a" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "659873ad24ae204a62fa071d" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1704489901970" } }, - "endDate": { "$date": { "$numberLong": "1705094701970" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "659873ad24ae204a62fa071c" }, + "_id": { "$oid": "65aaeb0592bde326c6403109" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1704489901970" } }, - "endDate": { "$date": { "$numberLong": "1705094701970" } }, + "startDate": { "$date": { "$numberLong": "1705700101189" } }, + "endDate": { "$date": { "$numberLong": "1706304901189" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -1845,21 +2467,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "659f4a75024bb3482052a870" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], + "_id": { "$oid": "65aaeb0592bde326c640310a" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1705700101189" } }, + "endDate": { "$date": { "$numberLong": "1706304901189" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "PVPMode": "PVPMODE_ALL", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" + "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "659f4a75024bb3482052a871" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "_id": { "$oid": "65b1c7a9e34593557b403072" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -1867,10 +2489,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "659f4a75024bb3482052a872" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeHARD", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "_id": { "$oid": "65b1c7a9e34593557b403073" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -1878,10 +2500,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "659f4a75024bb3482052a873" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakStoppedEASY", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "_id": { "$oid": "65b1c7a9e34593557b403071" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "65b1c7a9e34593557b403074" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -1889,10 +2522,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "659f4a75024bb3482052a874" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, + "_id": { "$oid": "65b1c7a9e34593557b403076" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDomination_MEDIUM", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", @@ -1900,33 +2533,33 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "659f4a75024bb3482052a875" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], + "_id": { "$oid": "65b1c7a9e34593557b403075" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeEASY", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "659f4a75024bb3482052a876" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], + "_id": { "$oid": "65b1c7a9e34593557b403077" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesHARD", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "659f4a75024bb3482052a877" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM", - "startDate": { "$date": { "$numberLong": "1704938101479" } }, - "endDate": { "$date": { "$numberLong": "1705024501479" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], + "_id": { "$oid": "65b1c7a9e34593557b403078" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY", + "startDate": { "$date": { "$numberLong": "1706149801149" } }, + "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], @@ -1936,13 +2569,13 @@ "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [43.75829263950812, 32.356342260671504, 0], + "ProjectPct": [50.276225577750985, 57.94470168330164, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Saryn", "Vauban", "Nova"] }, - { "Category": "EXC_HARD", "Choices": ["Lex", "Magistar", "Boltor", "Bronco", "CeramicDagger"] } + { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, + { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ @@ -1962,69 +2595,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001200070000000000000097" }, + "_id": { "$oid": "001200090000000000000124" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1704844800000" } }, - "Expiry": { "$date": { "$numberLong": "1705104000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyVisitFeaturedDojo" + "Activation": { "$date": { "$numberLong": "1705968000000" } }, + "Expiry": { "$date": { "$numberLong": "1706227200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore" }, { - "_id": { "$oid": "001200070000000000000098" }, + "_id": { "$oid": "001200090000000000000125" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1704931200000" } }, - "Expiry": { "$date": { "$numberLong": "1705190400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyPickUpMods" + "Activation": { "$date": { "$numberLong": "1706054400000" } }, + "Expiry": { "$date": { "$numberLong": "1706313600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCompleteMissionPrimary" }, { - "_id": { "$oid": "001200070000000000000099" }, + "_id": { "$oid": "001200090000000000000126" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1705017600000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithMelee" + "Activation": { "$date": { "$numberLong": "1706140800000" } }, + "Expiry": { "$date": { "$numberLong": "1706400000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyBuildersTouch" }, { - "_id": { "$oid": "001200070000000000000088" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions7" + "_id": { "$oid": "001200090000000000000116" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions9" }, { - "_id": { "$oid": "001200070000000000000089" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus7" + "_id": { "$oid": "001200090000000000000117" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus9" }, { - "_id": { "$oid": "001200070000000000000090" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies7" + "_id": { "$oid": "001200090000000000000118" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies9" }, { - "_id": { "$oid": "001200070000000000000091" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRailjackHijackDestroyThree" + "_id": { "$oid": "001200090000000000000119" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteExterminate" }, { - "_id": { "$oid": "001200070000000000000092" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSpy" + "_id": { "$oid": "001200090000000000000120" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCatchRareVenusFish" }, { - "_id": { "$oid": "001200070000000000000093" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsProfitTaker" + "_id": { "$oid": "001200090000000000000121" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCollectUniqueResources" }, { - "_id": { "$oid": "001200070000000000000094" }, - "Activation": { "$date": { "$numberLong": "1704672000000" } }, - "Expiry": { "$date": { "$numberLong": "1705276800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardRailjackMissions" + "_id": { "$oid": "001200090000000000000122" }, + "Activation": { "$date": { "$numberLong": "1705881600000" } }, + "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillRopalolyst" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":554}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"eeg\":true,\"sfn\":554}" } -- 2.47.2 From 91ced2c75bf109c1b8c3a9064ff35a233d341446 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:31:28 +0100 Subject: [PATCH 060/522] feat: more inventory schemas (#131) --- .gitignore | 5 +- config.json | 4 +- package-lock.json | 68 +- src/controllers/api/inventoryController.ts | 8 +- src/helpers/inventoryHelpers.ts | 4 + src/models/inventoryModels/inventoryModel.ts | 1065 +++++++++++------ src/types/inventoryTypes/inventoryTypes.ts | 132 +- .../{testMissions.json => allMissions.json} | 0 .../{testQuestKeys.json => allQuestKeys.json} | 0 .../postTutorialInventory.json | 1 - 10 files changed, 823 insertions(+), 464 deletions(-) rename static/fixed_responses/{testMissions.json => allMissions.json} (100%) rename static/fixed_responses/{testQuestKeys.json => allQuestKeys.json} (100%) diff --git a/.gitignore b/.gitignore index 7e1fa4a4..316e4fed 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,7 @@ yarn.lock .idea/ # logs -/logs \ No newline at end of file +/logs + +# MongoDB VSCode extension playground scripts +/database_scripts \ No newline at end of file diff --git a/config.json b/config.json index fc70a292..9dd254d5 100644 --- a/config.json +++ b/config.json @@ -6,7 +6,7 @@ "worldSeed": "qihVmIIyYXz0E4+01UjY+ROEiAB7x3k40ZaCUtVLEF17u9TXVita+jHZRuMLB6OT8GOfX8C+kqkyrT26AJEHFV0IDUkoZ1bntDSBL6wN36tq+ttsN/8NIcy1eGIyLzHn1Cosbtp8ykPhIaFKWlWP6v0QUBObIT11xLXF8fd+7cAEUcPygnS6WK048KEjMldK5bXIkkg9NV7ZXWLhNfTVG0mN0VluNUKDlc/JCiYRkxvparpn7xKwFpxqZJIeYhOz/zaktlEcVFxxB6ewd/X+XNq7+SkPUw5btQKQeYax1AxBZHzCk0XF1ihRQKPdMeVzXIRq43Yf/8emu8siIC4dFA==", "skipStoryModeChoice": true, "skipTutorial": true, - "testMission": true, - "testQuestKey": true, + "unlockAllMissions": true, + "unlockAllQuests": false, "infiniteResources": true } diff --git a/package-lock.json b/package-lock.json index 873314d5..52e6e3b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -235,9 +235,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", - "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", + "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", "dependencies": { "sparse-bitfield": "^3.0.3" } @@ -394,7 +394,8 @@ "node_modules/@types/node": { "version": "18.16.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==", + "dev": true }, "node_modules/@types/qs": { "version": "6.9.7", @@ -457,11 +458,10 @@ "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", "dependencies": { - "@types/node": "*", "@types/webidl-conversions": "*" } }, @@ -1178,9 +1178,9 @@ } }, "node_modules/bson": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz", - "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz", + "integrity": "sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==", "engines": { "node": ">=16.20.1" } @@ -2639,13 +2639,13 @@ } }, "node_modules/mongodb": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz", - "integrity": "sha512-d7OSuGjGWDZ5usZPqfvb36laQ9CPhnWkAGHT61x5P95p/8nMVeH8asloMwW6GcYFeB0Vj4CB/1wOTDG2RA9BFA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.3.0.tgz", + "integrity": "sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==", "dependencies": { "@mongodb-js/saslprep": "^1.1.0", "bson": "^6.2.0", - "mongodb-connection-string-url": "^2.6.0" + "mongodb-connection-string-url": "^3.0.0" }, "engines": { "node": ">=16.20.1" @@ -2684,22 +2684,22 @@ } }, "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", + "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" } }, "node_modules/mongoose": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.2.tgz", - "integrity": "sha512-Vsi9GzTXjdBVzheT1HZOZ2jHNzzR9Xwb5OyLz/FvDEAhlwrRnXnuqJf0QHINUOQSm7aoyvnPks0q85HJkd6yDw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.1.1.tgz", + "integrity": "sha512-DbLb0NsiEXmaqLOpEz+AtAsgwhRw6f25gwa1dF5R7jj6lS1D8X6uTdhBSC8GDVtOwe5Tfw2EL7nTn6hiJT3Bgg==", "dependencies": { "bson": "^6.2.0", "kareem": "2.5.1", - "mongodb": "6.2.0", + "mongodb": "6.3.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -3701,14 +3701,14 @@ } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/tree-kill": { @@ -3986,15 +3986,15 @@ } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=16" } }, "node_modules/which": { diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index bfdad354..8f217071 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -3,8 +3,8 @@ import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Request, RequestHandler, Response } from "express"; import config from "@/config.json"; -import testMissions from "@/static/fixed_responses/testMissions.json"; -import testQuestKeys from "@/static/fixed_responses/testQuestKeys.json"; +import allMissions from "@/static/fixed_responses/allMissions.json"; +import allQuestKeys from "@/static/fixed_responses/allQuestKeys.json"; import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { @@ -29,8 +29,8 @@ const inventoryController: RequestHandler = async (request: Request, response: R const inventoryResponse = toInventoryResponse(inventoryJSON); - if (config.testMission) inventoryResponse.Missions = testMissions; - if (config.testQuestKey) inventoryResponse.QuestKeys = testQuestKeys; + if (config.unlockAllMissions) inventoryResponse.Missions = allMissions; + if (config.unlockAllQuests) inventoryResponse.QuestKeys = allQuestKeys; response.json(inventoryResponse); }; diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts index 92c1726f..0955ed39 100644 --- a/src/helpers/inventoryHelpers.ts +++ b/src/helpers/inventoryHelpers.ts @@ -12,3 +12,7 @@ export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInv export const toOid = (objectId: Types.ObjectId) => { return { $oid: objectId.toString() } satisfies IOid; }; + +export const toMongoDate = (date: Date) => { + return { $date: { $numberLong: date.getTime().toString() } }; +}; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 91386abe..52283fd7 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1,4 +1,4 @@ -import { HydratedDocument, Model, Schema, Types, model } from "mongoose"; +import { Model, Schema, Types, model } from "mongoose"; import { IFlavourItem, IRawUpgrade, @@ -12,7 +12,34 @@ import { IMailbox, IDuviriInfo, IPendingRecipe as IPendingRecipeDatabase, - IPendingRecipeResponse + IPendingRecipeResponse, + ITypeCount, + IFocusXP, + IFocusUpgrades, + IGenericItem2, + ITypeXPItem, + IChallengeProgress, + IStepSequencer, + IAffiliation, + IShip, + INotePacks, + IShipExterior, + ICompletedJobChain, + ISeasonChallengeHistory, + IPlayerSkills, + ISettings, + IInfestedFoundry, + IConsumedSuit, + IQuestProgress, + IQuestKeyDatabase, + IQuestKeyResponse, + IFusionTreasure, + ISpectreLoadout, + IWeaponSkin, + ITauntHistory, + IPeriodicMissionCompletionDatabase, + IPeriodicMissionCompletionResponse, + ILoreFragmentScan } from "../../types/inventoryTypes/inventoryTypes"; import { IMongoDate, IOid } from "../../types/commonTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; @@ -25,7 +52,29 @@ import { IOperatorConfigDatabase, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { toOid } from "@/src/helpers/inventoryHelpers"; +import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; + +const typeCountSchema = new Schema({ ItemType: String, ItemCount: Number }, { _id: false }); + +const focusXPSchema = new Schema( + { + AP_POWER: Number, + AP_TACTIC: Number, + AP_DEFENSE: Number, + AP_ATTACK: Number, + AP_WARD: Number + }, + { _id: false } +); + +const focusUpgradesSchema = new Schema( + { + ItemType: String, + Level: Number, + IsUniversal: Boolean + }, + { _id: false } +); const pendingRecipeSchema = new Schema( { @@ -168,10 +217,13 @@ WeaponSchema.set("toJSON", { } }); -const BoosterSchema = new Schema({ - ExpiryDate: Number, - ItemType: String -}); +const boosterSchema = new Schema( + { + ExpiryDate: Number, + ItemType: String + }, + { _id: false } +); const RawUpgrades = new Schema( { @@ -194,16 +246,19 @@ RawUpgrades.set("toJSON", { }); //TODO: find out what this is -const Upgrade = new Schema({ - UpgradeFingerprint: String, - ItemType: String +const upgrqadesSchema = new Schema( + { + UpgradeFingerprint: String, + ItemType: String + }, + { id: false } +); + +upgrqadesSchema.virtual("ItemId").get(function () { + return toOid(this._id); }); -Upgrade.virtual("ItemId").get(function () { - return { $oid: this._id.toString() } satisfies IOid; -}); - -Upgrade.set("toJSON", { +upgrqadesSchema.set("toJSON", { virtuals: true, transform(_document, returnedObject) { delete returnedObject._id; @@ -320,371 +375,639 @@ DuviriInfoSchema.set("toJSON", { } }); -const inventorySchema = new Schema({ - accountOwnerId: Schema.Types.ObjectId, - SubscribedToEmails: Number, - Created: Schema.Types.Mixed, - RewardSeed: Number, - - //Credit - RegularCredits: Number, - //Platinum - PremiumCredits: Number, - //Gift Platinum(Non trade) - PremiumCreditsFree: Number, - //Endo - FusionPoints: Number, - - //SlotAny - SuitBin: slotsBinSchema, - WeaponBin: slotsBinSchema, - SentinelBin: slotsBinSchema, - SpaceSuitBin: slotsBinSchema, - SpaceWeaponBin: slotsBinSchema, - PvpBonusLoadoutBin: slotsBinSchema, - PveBonusLoadoutBin: slotsBinSchema, - RandomModBin: slotsBinSchema, - OperatorAmpBin: slotsBinSchema, - CrewShipSalvageBin: slotsBinSchema, - MechBin: slotsBinSchema, - CrewMemberBin: slotsBinSchema, - - //How many trades do you have left - TradesRemaining: Number, - //How many Gift do you have left*(gift spends the trade) - GiftsRemaining: Number, - //Curent trade info Giving or Getting items - PendingTrades: [Schema.Types.Mixed], - - //Curent Syndicates rank\exp - Affiliations: [Schema.Types.Mixed], - //Syndicates Missions complate(Navigation->Syndicate) - CompletedSyndicates: [String], - //Daily Syndicates Exp - DailyAffiliation: Number, - DailyAffiliationPvp: Number, - DailyAffiliationLibrary: Number, - DailyAffiliationCetus: Number, - DailyAffiliationQuills: Number, - DailyAffiliationSolaris: Number, - DailyAffiliationVentkids: Number, - DailyAffiliationVox: Number, - DailyAffiliationEntrati: Number, - DailyAffiliationNecraloid: Number, - DailyAffiliationZariman: Number, - DailyAffiliationKahl: Number, - - //Daily Focus limit - DailyFocus: Number, - //you not used Focus - FocusXP: Schema.Types.Mixed, - //Curent active like Active school focuses is = "Zenurik" - FocusAbility: String, - //The treeways of the Focus school.(Active and passive Ability) - FocusUpgrades: [Schema.Types.Mixed], - - //Achievement - ChallengeProgress: [Schema.Types.Mixed], - - //Account Item like Ferrite,Form,Kuva etc - MiscItems: [Schema.Types.Mixed], - - //Non Upgrade Mods Example:I have 999 item WeaponElectricityDamageMod (only "ItemCount"+"ItemType") - RawUpgrades: [RawUpgrades], - //Upgrade Mods\Riven\Arcane Example:"UpgradeFingerprint"+"ItemType"+"" - Upgrades: [Upgrade], - - //Warframe - Suits: [suitSchema], - //Primary Weapon - LongGuns: [WeaponSchema], - //Secondary Weapon - Pistols: [WeaponSchema], - //Melee Weapon - Melee: [WeaponSchema], - //Ability Weapon like Ultimate Mech\Excalibur\Ivara etc - SpecialItems: [Schema.Types.Mixed], - //The Mandachord(Octavia) is a step sequencer - StepSequencers: [Schema.Types.Mixed], - - //Sentinel(like Helios or modular) - Sentinels: [Schema.Types.Mixed], - //Any /Sentinels/SentinelWeapons/ (like warframe weapon) - SentinelWeapons: [Schema.Types.Mixed], - //Modular Pets - MoaPets: [Schema.Types.Mixed], - - KubrowPetEggs: [Schema.Types.Mixed], - //Like PowerSuit Cat\Kubrow or etc Pets - KubrowPets: [Schema.Types.Mixed], - //Prints Cat(3 Prints)\Kubrow(2 Prints) Pets - KubrowPetPrints: [Schema.Types.Mixed], - - //Item for EquippedGear example:Scaner,LoadoutTechSummon etc - Consumables: [Schema.Types.Mixed], - //Weel Emotes+Gear - EquippedEmotes: [String], - EquippedGear: [String], - //Equipped Shawzin - EquippedInstrument: String, - ReceivedStartingGear: Boolean, - - //to use add SummonItem to Consumables+EquippedGear - //Archwing need Suits+Melee+Guns - SpaceSuits: [GenericItemSchema], - SpaceMelee: [GenericItemSchema], - SpaceGuns: [Schema.Types.Mixed], - ArchwingEnabled: Boolean, - //Mech need Suits+SpaceGuns+SpecialItem - MechSuits: [suitSchema], - ///Restoratives/HoverboardSummon (like Suit) - Hoverboards: [Schema.Types.Mixed], - - //Use Operator\Drifter - UseAdultOperatorLoadout: Boolean, - //Operator\Drifter Weapon - OperatorAmps: [Schema.Types.Mixed], - //Operator - OperatorLoadOuts: [operatorConfigSchema], - //Drifter - AdultOperatorLoadOuts: [operatorConfigSchema], - DrifterMelee: [GenericItemSchema], - DrifterGuns: [GenericItemSchema], - //ErsatzHorsePowerSuit - Horses: [GenericItemSchema], - - //Liset colors skin etc - Ships: [Schema.Types.Mixed], - // /Lotus/Types/Items/ShipDecos/ - ShipDecorations: [Schema.Types.Mixed], - - //RailJack Setting(Mods,Skin,Weapon,etc) - CrewShipHarnesses: [Schema.Types.Mixed], - //Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components) - CrewShipRawSalvage: [Schema.Types.Mixed], - - //Default RailJack - CrewShips: [Schema.Types.Mixed], - CrewShipAmmo: [Schema.Types.Mixed], - CrewShipWeapons: [Schema.Types.Mixed], - CrewShipWeaponSkins: [Schema.Types.Mixed], - - //NPC Crew and weapon - CrewMembers: [Schema.Types.Mixed], - CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed], - CrewShipSalvagedWeapons: [Schema.Types.Mixed], - - //Complete Mission\Quests - Missions: [Schema.Types.Mixed], - QuestKeys: [Schema.Types.Mixed], - //item like DojoKey or Boss missions key - LevelKeys: [Schema.Types.Mixed], - //Active quests - Quests: [Schema.Types.Mixed], - - //Cosmetics like profile glyphs\Kavasa Prime Kubrow Collar\Game Theme etc - FlavourItems: [FlavourItemSchema], - - //Lunaro Weapon - Scoops: [GenericItemSchema], - - //Mastery Rank*(Need item XPInfo to rank up) - PlayerLevel: Number, - //Item Mastery Rank exp - XPInfo: [Schema.Types.Mixed], - //24h timer rank up - TrainingDate: Date, - //Retries rank up(3 time) - TrainingRetriesLeft: Number, - - //you saw last played Region when you opened the star map - LastRegionPlayed: String, - - //Blueprint - Recipes: [Schema.Types.Mixed], - //Crafting Blueprint(Item Name + CompletionDate) - PendingRecipes: [pendingRecipeSchema], - - //warframe\Weapon skins - WeaponSkins: [Schema.Types.Mixed], - - //Ayatan Item - FusionTreasures: [Schema.Types.Mixed], - //"node": "TreasureTutorial", "state": "TS_COMPLETED" - TauntHistory: [Schema.Types.Mixed], - - //noShow2FA,VisitPrimeVault etc - WebFlags: Schema.Types.Mixed, - //Id CompletedAlerts - CompletedAlerts: [String], - - //Warframe\Duviri - StoryModeChoice: String, - - //Alert->Kuva Siphon - PeriodicMissionCompletions: [Schema.Types.Mixed], - - //Codex->LoreFragment - LoreFragmentScans: [Schema.Types.Mixed], - - //Resource,Credit,Affinity etc or Bless any boosters - Boosters: [BoosterSchema], - BlessingCooldown: Schema.Types.Mixed, - - //the color your clan requests like Items/Research/DojoColors/DojoColorPlainsB - ActiveDojoColorResearch: String, - - SentientSpawnChanceBoosters: Schema.Types.Mixed, - - QualifyingInvasions: [Schema.Types.Mixed], - FactionScores: [Number], - - //Have only Suit+Pistols+LongGuns+Melee+ItemType(BronzeSpectre,GoldSpectre,PlatinumSpectreArmy,SilverSpectreArmy) - //"/Lotus/Types/Game/SpectreArmies/BronzeSpectreArmy": "Vapor Specter Regiment", - SpectreLoadouts: [Schema.Types.Mixed], - //If you want change Spectre Gear id - PendingSpectreLoadouts: [Schema.Types.Mixed], - - //New quest Email spam - //example:"ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestEmailItem", - EmailItems: [Schema.Types.Mixed], - - //Profile->Wishlist - Wishlist: [String], - - //https://warframe.fandom.com/wiki/Alignment - //like "Alignment": { "Wisdom": 9, "Alignment": 1 }, - Alignment: Schema.Types.Mixed, - AlignmentReplay: Schema.Types.Mixed, - - //https://warframe.fandom.com/wiki/Sortie - CompletedSorties: [String], - LastSortieReward: [Schema.Types.Mixed], - - //Resource_Drone[Uselees stuff] - Drones: [Schema.Types.Mixed], - - //Active profile ico - ActiveAvatarImageType: String, - - // open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable - DiscoveredMarkers: [Schema.Types.Mixed], - //Open location mission like "JobId" + "StageCompletions" - CompletedJobs: [Schema.Types.Mixed], - - //Game mission\ivent score example "Tag": "WaterFight", "Best": 170, "Count": 1258, - PersonalGoalProgress: [Schema.Types.Mixed], - - //Setting interface Style - ThemeStyle: String, - ThemeBackground: String, - ThemeSounds: String, - - //Daily LoginRewards - LoginMilestoneRewards: [String], - - //You first Dialog with NPC or use new Item - NodeIntrosCompleted: [String], - - //https://warframe.fandom.com/wiki/Heist - //ProfitTaker(1-4) Example:"LocationTag": "EudicoHeists", "Jobs":Mission name - CompletedJobChains: [Schema.Types.Mixed], - //Night Wave Challenge - SeasonChallengeHistory: [Schema.Types.Mixed], - - //Cephalon Simaris Entries Example:"TargetType"+"Scans"(1-10)+"Completed": true|false - LibraryPersonalProgress: [Schema.Types.Mixed], - //Cephalon Simaris Daily Task - LibraryAvailableDailyTaskInfo: Schema.Types.Mixed, - - //https://warframe.fandom.com/wiki/Invasion - InvasionChainProgress: [Schema.Types.Mixed], - - //https://warframe.fandom.com/wiki/Parazon - DataKnives: [GenericItemSchema], - - //CorpusLich or GrineerLich - NemesisAbandonedRewards: [String], - //CorpusLich\KuvaLich - NemesisHistory: [Schema.Types.Mixed], - LastNemesisAllySpawnTime: Schema.Types.Mixed, - - //TradingRulesConfirmed,ShowFriendInvNotifications(Option->Social) - Settings: Schema.Types.Mixed, - - //Railjack craft - //https://warframe.fandom.com/wiki/Rising_Tide - PersonalTechProjects: [Schema.Types.Mixed], - - //Modulars lvl and exp(Railjack|Duviri) - //https://warframe.fandom.com/wiki/Intrinsics - PlayerSkills: Schema.Types.Mixed, - - //TradeBannedUntil data - TradeBannedUntil: Schema.Types.Mixed, - - //https://warframe.fandom.com/wiki/Helminth - InfestedFoundry: Schema.Types.Mixed, - NextRefill: Schema.Types.Mixed, - - //Purchase this new permanent skin from the Lotus customization options in Personal Quarters located in your Orbiter. - //https://warframe.fandom.com/wiki/Lotus#The_New_War - LotusCustomization: Schema.Types.Mixed, - - //Progress+Rank+ItemType(ZarimanPumpShotgun) - //https://warframe.fandom.com/wiki/Incarnon - EvolutionProgress: [Schema.Types.Mixed], - - //Unknown and system - DuviriInfo: DuviriInfoSchema, - Mailbox: MailboxSchema, - KahlLoadOuts: [Schema.Types.Mixed], - HandlerPoints: Number, - ChallengesFixVersion: Number, - PlayedParkourTutorial: Boolean, - SubscribedToEmailsPersonalized: Number, - LastInventorySync: Schema.Types.Mixed, - ActiveLandscapeTraps: [Schema.Types.Mixed], - RepVotes: [Schema.Types.Mixed], - LeagueTickets: [Schema.Types.Mixed], - HasContributedToDojo: Boolean, - HWIDProtectEnabled: Boolean, - LoadOutPresets: { type: Schema.Types.ObjectId, ref: "Loadout" }, - CurrentLoadOutIds: [Schema.Types.Mixed], - RandomUpgradesIdentified: Number, - BountyScore: Number, - ChallengeInstanceStates: [Schema.Types.Mixed], - RecentVendorPurchases: [Schema.Types.Mixed], - Robotics: [Schema.Types.Mixed], - UsedDailyDeals: [Schema.Types.Mixed], - CollectibleSeries: [Schema.Types.Mixed], - HasResetAccount: Boolean, - - //Discount Coupon - PendingCoupon: Schema.Types.Mixed, - //Like BossAladV,BossCaptainVor come for you on missions % chance - DeathMarks: [String], - //Zanuka - Harvestable: Boolean, - //Grustag three - DeathSquadable: Boolean +const GenericItemSchema2 = new Schema({ + ItemType: String, + ItemName: String, + XP: Number, + UpgradeVer: Number, //this is probably __v + Features: Number, + Polarized: Number, + CustomizationSlotPurchases: Number, + ModSlotPurchases: Number, + FocusLens: String, + Expiry: Date, //TODO: needs conversion + Polarity: [polaritySchema], + Configs: [ItemConfigSchema], + ModularParts: [String], + SkillTree: String, + UpgradeType: String, + UpgradeFingerprint: String, + OffensiveUpgrade: String, + DefensiveUpgrade: String, + UpgradesExpiry: Date, //TODO: needs conversion + ArchonCrystalUpgrades: [] }); +const TypeXPItemSchema = new Schema( + { + ItemType: String, + XP: Number + }, + { _id: false } +); + +const challengeProgressSchema = new Schema( + { + Progress: Number, + Name: String, + Completed: [String] + }, + { _id: false } +); + +const notePacksSchema = new Schema( + { + MELODY: String, + BASS: String, + PERCUSSION: String + }, + { _id: false } +); + +const StepSequencersSchema = new Schema( + { + NotePacks: notePacksSchema, + FingerPrint: String, + Name: String + }, + { id: false } +); + +StepSequencersSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() } satisfies IOid; +}); + +StepSequencersSchema.set("toJSON", { + virtuals: true, + transform(_document, returnedObject) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const affiliationsSchema = new Schema( + { + Initiated: Boolean, + Standing: Number, + Title: String, + FreeFavorsEarned: [Number], + FreeFavorsUsed: [Number], + Tag: String + }, + { _id: false } +); + +const shipExteriorSchema = new Schema( + { + SkinFlavourItem: String, + Colors: colorSchema, //TODO: perhaps too many colors here + ShipAttachments: { HOOD_ORNAMENT: String } + }, + { _id: false } +); + +const shipSchema = new Schema({ + ItemType: String, + ShipExterior: shipExteriorSchema, + AirSupportPower: String +}); + +shipSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() }; +}); + +shipSchema.set("toJSON", { + virtuals: true, + transform(_document, returnedObject) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const completedJobChainsSchema = new Schema( + { + LocationTag: String, + Jobs: [String] + }, + { _id: false } +); + +const seasonChallengeHistorySchema = new Schema( + { + challenge: String, + id: String + }, + { _id: false } +); + +//TODO: check whether this is complete +const playerSkillsSchema = new Schema( + { + LPP_SPACE: Number, + LPP_DRIFTER: Number, + LPS_NONE: Number, + LPS_PILOTING: Number, + LPS_GUNNERY: Number, + LPS_TACTICAL: Number, + LPS_ENGINEERING: Number, + LPS_COMMAND: Number, + LPS_DRIFT_COMBAT: Number, + LPS_DRIFT_RIDING: Number, + LPS_DRIFT_OPPORTUNITY: Number, + LPS_DRIFT_ENDURANCE: Number + }, + { _id: false } +); + +const settingsSchema = new Schema({ + FriendInvRestriction: String, + GiftMode: String, + GuildInvRestriction: String, + ShowFriendInvNotifications: Boolean, + TradingRulesConfirmed: Boolean +}); + +const consumedSchuitsSchema = new Schema({ + s: String, + c: colorSchema +}); + +const infestedFoundrySchema = new Schema({ + Name: String, + Resources: [typeCountSchema], + Slots: Number, + XP: Number, + ConsumedSuits: [consumedSchuitsSchema], + InvigorationIndex: Number, + InvigorationSuitOfferings: [String], + InvigorationsApplied: Number +}); + +const questProgressSchema = new Schema({ + c: Number, + i: Boolean, + m: Boolean, + b: [] +}); + +const questKeysSchema = new Schema( + { + Progress: [questProgressSchema], + unlock: Boolean, + Completed: Boolean, + //CustomData: Schema.Types.Mixed, + CompletionDate: Date, + ItemType: String + }, + { + _id: false + } +); + +questKeysSchema.set("toJSON", { + transform(_doc, ret, _options) { + const questKeysDatabase = ret as IQuestKeyDatabase; + + if (questKeysDatabase.CompletionDate) { + (questKeysDatabase as IQuestKeyResponse).CompletionDate = toMongoDate(questKeysDatabase.CompletionDate); + } + } +}); + +const fusionTreasuresSchema = new Schema().add(typeCountSchema).add({ Sockets: Number }); + +const spectreLoadoutsSchema = new Schema( + { + LongGuns: String, + Melee: String, + Pistols: String, + PistolsFeatures: Number, + PistolsModularParts: [String], + Suits: String, + ItemType: String + }, + { _id: false } +); + +const weaponSkinsSchema = new Schema( + { + ItemType: String + }, + { id: false } +); + +weaponSkinsSchema.virtual("ItemId").get(function () { + return { $oid: this._id.toString() }; +}); + +weaponSkinsSchema.set("toJSON", { virtuals: true }); + +const tauntHistorySchema = new Schema( + { + node: String, + state: String + }, + { _id: false } +); + +const periodicMissionCompletionsSchema = new Schema( + { + date: Date, + tag: String, + count: Number + }, + { _id: false } +); + +periodicMissionCompletionsSchema.set("toJSON", { + transform(_doc, ret, _options) { + const periodicMissionCompletionDatabase = ret as IPeriodicMissionCompletionDatabase; + + (periodicMissionCompletionDatabase as unknown as IPeriodicMissionCompletionResponse).date = toMongoDate( + periodicMissionCompletionDatabase.date + ); + } +}); + +const loreFragmentScansSchema = new Schema( + { + Progress: Number, + Region: String, + ItemType: String + }, + { _id: false } +); + +const inventorySchema = new Schema( + { + accountOwnerId: Schema.Types.ObjectId, + SubscribedToEmails: Number, + Created: Date, + RewardSeed: Number, + + //Credit + RegularCredits: Number, + //Platinum + PremiumCredits: Number, + //Gift Platinum(Non trade) + PremiumCreditsFree: Number, + //Endo + FusionPoints: Number, + + //Slots + SuitBin: slotsBinSchema, + WeaponBin: slotsBinSchema, + SentinelBin: slotsBinSchema, + SpaceSuitBin: slotsBinSchema, + SpaceWeaponBin: slotsBinSchema, + PvpBonusLoadoutBin: slotsBinSchema, + PveBonusLoadoutBin: slotsBinSchema, + RandomModBin: slotsBinSchema, + OperatorAmpBin: slotsBinSchema, + CrewShipSalvageBin: slotsBinSchema, + MechBin: slotsBinSchema, + CrewMemberBin: slotsBinSchema, + + //How many trades do you have left + TradesRemaining: Number, + //How many Gift do you have left*(gift spends the trade) + GiftsRemaining: Number, + //Curent trade info Giving or Getting items + PendingTrades: [Schema.Types.Mixed], + + //Curent Syndicates rank\exp + Affiliations: [affiliationsSchema], + //Syndicates Missions complate(Navigation->Syndicate) + CompletedSyndicates: [String], + //Daily Syndicates Exp + DailyAffiliation: Number, + DailyAffiliationPvp: Number, + DailyAffiliationLibrary: Number, + DailyAffiliationCetus: Number, + DailyAffiliationQuills: Number, + DailyAffiliationSolaris: Number, + DailyAffiliationVentkids: Number, + DailyAffiliationVox: Number, + DailyAffiliationEntrati: Number, + DailyAffiliationNecraloid: Number, + DailyAffiliationZariman: Number, + DailyAffiliationKahl: Number, + + //Daily Focus limit + DailyFocus: Number, + //Focus XP per School + FocusXP: focusXPSchema, + //Curent active like Active school focuses is = "Zenurik" + FocusAbility: String, + //The treeways of the Focus school.(Active and passive Ability) + FocusUpgrades: [focusUpgradesSchema], + + //Achievement + ChallengeProgress: [challengeProgressSchema], + + //Account Item like Ferrite,Form,Kuva etc + MiscItems: [typeCountSchema], + + //Non Upgrade Mods Example:I have 999 item WeaponElectricityDamageMod (only "ItemCount"+"ItemType") + RawUpgrades: [RawUpgrades], + //Upgrade Mods\Riven\Arcane Example:"UpgradeFingerprint"+"ItemType"+"" + Upgrades: [upgrqadesSchema], + + //Warframe + Suits: [suitSchema], + //Primary Weapon + LongGuns: [WeaponSchema], + //Secondary Weapon + Pistols: [WeaponSchema], + //Melee Weapon + Melee: [WeaponSchema], + //Ability Weapon like Ultimate Mech\Excalibur\Ivara etc + SpecialItems: [GenericItemSchema2], + //The Mandachord(Octavia) is a step sequencer + StepSequencers: [StepSequencersSchema], + + //Sentinel(like Helios or modular) + Sentinels: [Schema.Types.Mixed], + //Any /Sentinels/SentinelWeapons/ (like warframe weapon) + SentinelWeapons: [Schema.Types.Mixed], + //Modular Pets + MoaPets: [Schema.Types.Mixed], + + KubrowPetEggs: [Schema.Types.Mixed], + //Like PowerSuit Cat\Kubrow or etc Pets + KubrowPets: [Schema.Types.Mixed], + //Prints Cat(3 Prints)\Kubrow(2 Prints) Pets + KubrowPetPrints: [Schema.Types.Mixed], + + //Item for EquippedGear example:Scaner,LoadoutTechSummon etc + Consumables: [typeCountSchema], + //Weel Emotes+Gear + EquippedEmotes: [String], + EquippedGear: [String], + //Equipped Shawzin + EquippedInstrument: String, + ReceivedStartingGear: Boolean, + + //to use add SummonItem to Consumables+EquippedGear + //Archwing need Suits+Melee+Guns + SpaceSuits: [GenericItemSchema], + SpaceMelee: [GenericItemSchema], + SpaceGuns: [Schema.Types.Mixed], + ArchwingEnabled: Boolean, + //Mech need Suits+SpaceGuns+SpecialItem + MechSuits: [suitSchema], + ///Restoratives/HoverboardSummon (like Suit) + Hoverboards: [Schema.Types.Mixed], + + //Use Operator\Drifter + UseAdultOperatorLoadout: Boolean, + //Operator\Drifter Weapon + OperatorAmps: [Schema.Types.Mixed], + //Operator + OperatorLoadOuts: [operatorConfigSchema], + //Drifter + AdultOperatorLoadOuts: [operatorConfigSchema], + DrifterMelee: [GenericItemSchema], + DrifterGuns: [GenericItemSchema], + //ErsatzHorsePowerSuit + Horses: [GenericItemSchema], + + //LandingCraft like Liset + Ships: [shipSchema], + // /Lotus/Types/Items/ShipDecos/ + ShipDecorations: [typeCountSchema], + + //RailJack Setting(Mods,Skin,Weapon,etc) + CrewShipHarnesses: [Schema.Types.Mixed], + //Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components) + CrewShipRawSalvage: [Schema.Types.Mixed], + + //Default RailJack + CrewShips: [Schema.Types.Mixed], + CrewShipAmmo: [typeCountSchema], + CrewShipWeapons: [Schema.Types.Mixed], + CrewShipWeaponSkins: [Schema.Types.Mixed], + + //NPC Crew and weapon + CrewMembers: [Schema.Types.Mixed], + CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed], + CrewShipSalvagedWeapons: [Schema.Types.Mixed], + + //Complete Mission\Quests + Missions: [Schema.Types.Mixed], + QuestKeys: [questKeysSchema], + //item like DojoKey or Boss missions key + LevelKeys: [Schema.Types.Mixed], + //Active quests + Quests: [Schema.Types.Mixed], + + //Cosmetics like profile glyphs\Kavasa Prime Kubrow Collar\Game Theme etc + FlavourItems: [FlavourItemSchema], + + //Lunaro Weapon + Scoops: [GenericItemSchema], + + //Mastery Rank*(Need item XPInfo to rank up) + PlayerLevel: Number, + //Item Mastery Rank exp + XPInfo: [TypeXPItemSchema], + //Mastery Rank next availability + TrainingDate: Date, + //Retries rank up(3 time) + TrainingRetriesLeft: Number, + + //you saw last played Region when you opened the star map + LastRegionPlayed: String, + + //Blueprints for Foundry + Recipes: [typeCountSchema], + //Crafting Blueprint(Item Name + CompletionDate) + PendingRecipes: [pendingRecipeSchema], + + //Skins for Suits, Weapons etc. + WeaponSkins: [weaponSkinsSchema], + + //Ayatan Item + FusionTreasures: [fusionTreasuresSchema], + //"node": "TreasureTutorial", "state": "TS_COMPLETED" + TauntHistory: [tauntHistorySchema], + + //noShow2FA,VisitPrimeVault etc + WebFlags: Schema.Types.Mixed, + //Id CompletedAlerts + CompletedAlerts: [String], + + //Warframe\Duviri + StoryModeChoice: String, + + //Alert->Kuva Siphon + PeriodicMissionCompletions: [periodicMissionCompletionsSchema], + + //Codex->LoreFragment + LoreFragmentScans: [loreFragmentScansSchema], + + //Resource,Credit,Affinity etc or Bless any boosters + Boosters: [boosterSchema], + BlessingCooldown: Date, // Date convert to IMongoDate + + //the color your clan requests like Items/Research/DojoColors/DojoColorPlainsB + ActiveDojoColorResearch: String, + + SentientSpawnChanceBoosters: Schema.Types.Mixed, + + QualifyingInvasions: [Schema.Types.Mixed], + FactionScores: [Number], + + //Have only Suit+Pistols+LongGuns+Melee+ItemType(BronzeSpectre,GoldSpectre,PlatinumSpectreArmy,SilverSpectreArmy) + //"/Lotus/Types/Game/SpectreArmies/BronzeSpectreArmy": "Vapor Specter Regiment", + SpectreLoadouts: [spectreLoadoutsSchema], + //If you want change Spectre Gear id + PendingSpectreLoadouts: [Schema.Types.Mixed], + + //New Quest Email + EmailItems: [TypeXPItemSchema], + + //Profile->Wishlist + Wishlist: [String], + + //https://warframe.fandom.com/wiki/Alignment + //like "Alignment": { "Wisdom": 9, "Alignment": 1 }, + Alignment: Schema.Types.Mixed, + AlignmentReplay: Schema.Types.Mixed, + + //https://warframe.fandom.com/wiki/Sortie + CompletedSorties: [String], + LastSortieReward: [Schema.Types.Mixed], + + //Resource_Drone[Uselees stuff] + Drones: [Schema.Types.Mixed], + + //Active profile ico + ActiveAvatarImageType: String, + + // open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable + DiscoveredMarkers: [Schema.Types.Mixed], + //Open location mission like "JobId" + "StageCompletions" + CompletedJobs: [Schema.Types.Mixed], + + //Game mission\ivent score example "Tag": "WaterFight", "Best": 170, "Count": 1258, + PersonalGoalProgress: [Schema.Types.Mixed], + + //Setting interface Style + ThemeStyle: String, + ThemeBackground: String, + ThemeSounds: String, + + //Daily LoginRewards + LoginMilestoneRewards: [String], + + //You first Dialog with NPC or use new Item + NodeIntrosCompleted: [String], + + //https://warframe.fandom.com/wiki/Heist + //ProfitTaker(1-4) Example:"LocationTag": "EudicoHeists", "Jobs":Mission name + CompletedJobChains: [completedJobChainsSchema], + //Night Wave Challenge + SeasonChallengeHistory: [seasonChallengeHistorySchema], + + //Cephalon Simaris Entries Example:"TargetType"+"Scans"(1-10)+"Completed": true|false + LibraryPersonalProgress: [Schema.Types.Mixed], + //Cephalon Simaris Daily Task + LibraryAvailableDailyTaskInfo: Schema.Types.Mixed, + + //https://warframe.fandom.com/wiki/Invasion + InvasionChainProgress: [Schema.Types.Mixed], + + //https://warframe.fandom.com/wiki/Parazon + DataKnives: [GenericItemSchema], + + //CorpusLich or GrineerLich + NemesisAbandonedRewards: [String], + //CorpusLich\KuvaLich + NemesisHistory: [Schema.Types.Mixed], + LastNemesisAllySpawnTime: Schema.Types.Mixed, + + //TradingRulesConfirmed,ShowFriendInvNotifications(Option->Social) + Settings: settingsSchema, + + //Railjack craft + //https://warframe.fandom.com/wiki/Rising_Tide + PersonalTechProjects: [Schema.Types.Mixed], + + //Modulars lvl and exp(Railjack|Duviri) + //https://warframe.fandom.com/wiki/Intrinsics + PlayerSkills: playerSkillsSchema, + + //TradeBannedUntil data + TradeBannedUntil: Schema.Types.Mixed, + + //https://warframe.fandom.com/wiki/Helminth + InfestedFoundry: infestedFoundrySchema, + + NextRefill: Schema.Types.Mixed, // Date, convert to IMongoDate + + //Purchase this new permanent skin from the Lotus customization options in Personal Quarters located in your Orbiter. + //https://warframe.fandom.com/wiki/Lotus#The_New_War + LotusCustomization: Schema.Types.Mixed, + + //Progress+Rank+ItemType(ZarimanPumpShotgun) + //https://warframe.fandom.com/wiki/Incarnon + EvolutionProgress: [Schema.Types.Mixed], + + //Unknown and system + DuviriInfo: DuviriInfoSchema, + Mailbox: MailboxSchema, + KahlLoadOuts: [Schema.Types.Mixed], + HandlerPoints: Number, + ChallengesFixVersion: Number, + PlayedParkourTutorial: Boolean, + SubscribedToEmailsPersonalized: Number, + LastInventorySync: Schema.Types.Mixed, + ActiveLandscapeTraps: [Schema.Types.Mixed], + RepVotes: [Schema.Types.Mixed], + LeagueTickets: [Schema.Types.Mixed], + HasContributedToDojo: Boolean, + HWIDProtectEnabled: Boolean, + LoadOutPresets: { type: Schema.Types.ObjectId, ref: "Loadout" }, + CurrentLoadOutIds: [Schema.Types.Mixed], + RandomUpgradesIdentified: Number, + BountyScore: Number, + ChallengeInstanceStates: [Schema.Types.Mixed], + RecentVendorPurchases: [Schema.Types.Mixed], + Robotics: [Schema.Types.Mixed], + UsedDailyDeals: [Schema.Types.Mixed], + CollectibleSeries: [Schema.Types.Mixed], + HasResetAccount: Boolean, + + //Discount Coupon + PendingCoupon: Schema.Types.Mixed, + //Like BossAladV,BossCaptainVor come for you on missions % chance + DeathMarks: [String], + //Zanuka + Harvestable: Boolean, + //Grustag three + DeathSquadable: Boolean + }, + { timestamps: { createdAt: "Created", updatedAt: "LastInventorySync" } } +); + inventorySchema.set("toJSON", { transform(_document, returnedObject) { delete returnedObject._id; delete returnedObject.__v; - const trainingDate = (returnedObject as IInventoryDatabaseDocument).TrainingDate; + const inventoryDatabase = returnedObject as IInventoryDatabase; + const inventoryResponse = returnedObject as IInventoryResponse; - (returnedObject as IInventoryResponse).TrainingDate = { - $date: { - $numberLong: trainingDate.getTime().toString() - } - } satisfies IMongoDate; + inventoryResponse.TrainingDate = toMongoDate(inventoryDatabase.TrainingDate); + inventoryResponse.Created = toMongoDate(inventoryDatabase.Created); + if (inventoryResponse.BlessingCooldown) { + inventoryResponse.BlessingCooldown = toMongoDate(inventoryDatabase.BlessingCooldown); + } } }); +// type overwrites for subdocuments/subdocument arrays type InventoryDocumentProps = { Suits: Types.DocumentArray; LongGuns: Types.DocumentArray; @@ -707,6 +1030,4 @@ type InventoryDocumentProps = { type InventoryModelType = Model; -const Inventory = model("Inventory", inventorySchema); - -export { Inventory }; +export const Inventory = model("Inventory", inventorySchema); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 924c373c..b7b5f1fa 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -15,16 +15,66 @@ import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTy //Document extends will be deleted soon. TODO: delete and migrate uses to ... export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} export interface IInventoryDatabase - extends Omit { + extends Omit< + IInventoryResponse, + "TrainingDate" | "LoadOutPresets" | "Mailbox" | "PendingRecipes" | "Created" | "QuestKeys" | "BlessingCooldown" + > { accountOwnerId: Types.ObjectId; + Created: Date; TrainingDate: Date; // TrainingDate changed from IMongoDate to Date LoadOutPresets: Types.ObjectId; // LoadOutPresets changed from ILoadOutPresets to Types.ObjectId for population Mailbox: Types.ObjectId; // Mailbox changed from IMailbox to Types.ObjectId PendingRecipes: IPendingRecipe[]; + QuestKeys: IQuestKeyDatabase[]; + BlessingCooldown: Date; } export interface IInventoryResponseDocument extends IInventoryResponse, Document {} +export interface IQuestKeyDatabase { + Progress?: IQuestProgress[]; + unlock?: boolean; + Completed?: boolean; + CustomData?: string; //TODO: check whether this actually exists + ItemType: string; + CompletionDate?: Date; +} + +export interface IFocusUpgrades { + ItemType: string; + Level: number; + IsUniversal: boolean; +} + +export interface ITypeCount { + ItemType: string; + ItemCount: number; +} + +export interface IGenericItem2 { + ItemType: string; + ItemName: string; + ItemId: IOid; + XP: number; + UpgradeVer: number; + Features: number; + Polarized: number; + CustomizationSlotPurchases: number; + ModSlotPurchases: number; + FocusLens: string; + Expiry: IMongoDate; + Polarity: IPolarity[]; + Configs: IItemConfig[]; + ModularParts: string[]; + SkillTree: string; + UpgradeType: string; + UpgradeFingerprint: string; + OffensiveUpgrade: string; + DefensiveUpgrade: string; + UpgradesExpiry: IMongoDate; + ArchonCrystalUpgrades: []; +} + export interface IGenericItem { ItemType: string; XP?: number; @@ -91,7 +141,7 @@ export interface IInventoryResponse { Pistols: IWeaponDatabase[]; Melee: IWeaponDatabase[]; Ships: IShip[]; - QuestKeys: IQuestKey[]; + QuestKeys: IQuestKeyResponse[]; FlavourItems: IFlavourItem[]; Scoops: IGenericItem[]; TrainingRetriesLeft: number; @@ -100,8 +150,8 @@ export interface IInventoryResponse { Missions: IMission[]; RandomUpgradesIdentified: number; LastRegionPlayed: string; - XPInfo: IEmailItem[]; - Recipes: IConsumable[]; + XPInfo: ITypeXPItem[]; + Recipes: ITypeCount[]; WeaponSkins: IWeaponSkin[]; PendingRecipes: IPendingRecipeResponse[]; TrainingDate: IMongoDate; @@ -116,7 +166,7 @@ export interface IInventoryResponse { LevelKeys: IConsumable[]; TauntHistory: ITauntHistory[]; StoryModeChoice: string; - PeriodicMissionCompletions: IPeriodicMissionCompletion[]; + PeriodicMissionCompletions: IPeriodicMissionCompletionDatabase[]; KubrowPetEggs: IKubrowPetEgg[]; LoreFragmentScans: ILoreFragmentScan[]; EquippedEmotes: string[]; @@ -135,7 +185,7 @@ export interface IInventoryResponse { SpectreLoadouts: ISpectreLoadout[]; SentinelWeapons: IWeaponDatabase[]; Sentinels: IWeaponDatabase[]; - EmailItems: IEmailItem[]; + EmailItems: ITypeXPItem[]; CompletedSyndicates: string[]; FocusXP: IFocusXP; Wishlist: string[]; @@ -160,7 +210,7 @@ export interface IInventoryResponse { AlignmentReplay: IAlignment; PersonalGoalProgress: IPersonalGoalProgress[]; DailyAffiliationSolaris: number; - SpecialItems: ISpecialItem[]; + SpecialItems: IGenericItem2[]; ThemeStyle: string; ThemeBackground: string; ThemeSounds: string; @@ -395,17 +445,27 @@ export interface ISlot { } export interface ICustomization { - CrewshipInterior: ITerior; + CrewshipInterior: IShipExterior; } -export interface ITerior { +export interface IShipExterior { SkinFlavourItem: string; - Colors: IColor; + Colors: IShipExteriorColors; ShipAttachments?: IShipAttachments; } +//TODO: check whether it makes sense to use this specifity of color. +export interface IShipExteriorColors { + t0: number; + t1: number; + t2: number; + t3: number; + m0: number; + en: number; +} + export interface IShipAttachments { - HOOD_ORNAMENT: string; + HOOD_ORNAMENT: string; //TODO: Others are probably possible } export interface IFlavourItem { @@ -452,7 +512,7 @@ export interface IDrone { RepairStart?: IMongoDate; } -export interface IEmailItem { +export interface ITypeXPItem { ItemType: string; XP: number; } @@ -511,7 +571,7 @@ export interface ISigcol { export interface IInfestedFoundry { Name: string; - Resources: IResource[]; + Resources: ITypeCount[]; Slots: number; XP: number; ConsumedSuits: IConsumedSuit[]; @@ -525,11 +585,6 @@ export interface IConsumedSuit { c?: IColor; } -export interface IResource { - ItemType: string; - Count: number; -} - export interface IInvasionChainProgress { id: IOid; count: number; @@ -881,12 +936,16 @@ export enum GivingSlotOrderInfo { LotusUpgradesModsPistolDualStatElectEventPistolMod = "/Lotus/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod" } -export interface IPeriodicMissionCompletion { - date: IMongoDate; +export interface IPeriodicMissionCompletionDatabase { + date: Date; tag: string; count?: number; } +export interface IPeriodicMissionCompletionResponse extends Omit { + date: IMongoDate; +} + export interface IPersonalGoalProgress { Count: number; Tag: string; @@ -923,16 +982,11 @@ export interface IPlayerSkills { LPS_DRIFT_ENDURANCE: number; } -export interface IQuestKey { - Progress?: IProgress[]; - unlock?: boolean; - Completed?: boolean; - CustomData?: string; - ItemType: string; +export interface IQuestKeyResponse extends Omit { CompletionDate?: IMongoDate; } -export interface IProgress { +export interface IQuestProgress { c: number; i: boolean; m: boolean; @@ -964,7 +1018,7 @@ export interface ISettings { export interface IShip { ItemType: string; - ShipExterior: ITerior; + ShipExterior: IShipExterior; AirSupportPower: string; ItemId: IOid; } @@ -989,28 +1043,6 @@ export interface ISpaceGunConfig { Upgrades?: string[]; } -export interface ISpecialItem { - ItemType: string; - Configs: ISpecialItemConfig[]; - XP?: number; - UpgradeVer?: number; - Features: number; - ItemId: IOid; - Polarized?: number; - Polarity?: IPolarity[]; - ModSlotPurchases?: number; -} - -export interface ISpecialItemConfig { - Upgrades?: string[]; - pricol?: IColor; - Skins?: string[]; - attcol?: IColor; - eyecol?: IPurpleCol; - sigcol?: IPurpleCol; - Name?: string; -} - export interface IPurpleCol { en: number; } diff --git a/static/fixed_responses/testMissions.json b/static/fixed_responses/allMissions.json similarity index 100% rename from static/fixed_responses/testMissions.json rename to static/fixed_responses/allMissions.json diff --git a/static/fixed_responses/testQuestKeys.json b/static/fixed_responses/allQuestKeys.json similarity index 100% rename from static/fixed_responses/testQuestKeys.json rename to static/fixed_responses/allQuestKeys.json diff --git a/static/fixed_responses/postTutorialInventory.json b/static/fixed_responses/postTutorialInventory.json index 9bcab784..53af6393 100644 --- a/static/fixed_responses/postTutorialInventory.json +++ b/static/fixed_responses/postTutorialInventory.json @@ -1,6 +1,5 @@ { "SubscribedToEmails": 0, - "Created": { "$date": { "$numberLong": "1685829131" } }, "SubscribedToEmailsPersonalized": 0, "RewardSeed": -5604904486637265640, "CrewMemberBin": { "Slots": 3 }, -- 2.47.2 From a96eea0e634ed29d83fef701b794a0518e7d088b Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 18 Feb 2024 13:58:43 +0100 Subject: [PATCH 061/522] feat: Ship Customizations, Personal Rooms (Orbiter, Apartment) (#132) This breaks existing accounts --- config.json | 6 +- src/controllers/api/getShipController.ts | 134 +++++++----------- src/controllers/api/inventoryController.ts | 15 +- src/controllers/api/loginController.ts | 2 +- .../api/setActiveShipController.ts | 15 ++ .../api/setShipCustomizationsController.ts | 19 +++ .../api/shipDecorationsController.ts | 21 +++ src/models/inventoryModels/inventoryModel.ts | 34 +---- src/models/inventoryModels/loadoutModel.ts | 2 +- src/models/loginModel.ts | 12 +- src/models/personalRoomsModel.ts | 60 ++++++++ src/models/shipModel.ts | 78 ++++------ src/routes/api.ts | 6 + src/services/inventoryService.ts | 8 +- src/services/loadoutService.ts | 13 ++ src/services/loginService.ts | 20 ++- src/services/personalRoomsService.ts | 12 ++ src/services/saveLoadoutService.ts | 4 +- src/services/shipCustomizationsService.ts | 68 +++++++++ src/services/shipService.ts | 37 ++++- src/types/inventoryTypes/inventoryTypes.ts | 19 ++- src/types/personalRoomsTypes.ts | 28 ++++ src/types/shipTypes.ts | 96 +++++++++++-- static/fixed_responses/allShipFeatures.json | 69 +++++++++ .../{ship.json => personalRooms.json} | 4 +- static/fixed_responses/shipDecorations.json | 18 +++ 26 files changed, 590 insertions(+), 210 deletions(-) create mode 100644 src/controllers/api/setActiveShipController.ts create mode 100644 src/controllers/api/setShipCustomizationsController.ts create mode 100644 src/controllers/api/shipDecorationsController.ts create mode 100644 src/models/personalRoomsModel.ts create mode 100644 src/services/loadoutService.ts create mode 100644 src/services/personalRoomsService.ts create mode 100644 src/services/shipCustomizationsService.ts create mode 100644 src/types/personalRoomsTypes.ts create mode 100644 static/fixed_responses/allShipFeatures.json rename static/fixed_responses/{ship.json => personalRooms.json} (94%) create mode 100644 static/fixed_responses/shipDecorations.json diff --git a/config.json b/config.json index 9dd254d5..24059a07 100644 --- a/config.json +++ b/config.json @@ -7,6 +7,8 @@ "skipStoryModeChoice": true, "skipTutorial": true, "unlockAllMissions": true, - "unlockAllQuests": false, - "infiniteResources": true + "unlockAllQuests": true, + "infiniteResources": true, + "unlockallShipFeatures": true, + "unlockAllShipDecorations": true } diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index b0501365..56485606 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -1,90 +1,60 @@ -import { Ship } from "@/src/models/shipModel"; -import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; import { RequestHandler } from "express"; +import config from "@/config.json"; +import allShipFeatures from "@/static/fixed_responses/allShipFeatures.json"; +import { parseString } from "@/src/helpers/general"; +import { getShip } from "@/src/services/shipService"; +import { PersonalRooms } from "@/src/models/personalRoomsModel"; +import { Loadout } from "@/src/models/inventoryModels/loadoutModel"; +import { logger } from "@/src/utils/logger"; +import { toOid } from "@/src/helpers/inventoryHelpers"; +import { IGetShipResponse } from "@/src/types/shipTypes"; // eslint-disable-next-line @typescript-eslint/no-misused-promises -const getShipController: RequestHandler = async (req, res) => { - const accountId = req.query.accountId; - const ship = await Ship.findOne({ ShipOwnerId: accountId }).populate<{ - LoadOutInventory: { LoadOutPresets: ILoadoutDatabase }; - }>("LoadOutInventory.LoadOutPresets"); +export const getShipController: RequestHandler = async (req, res) => { + const accountId = parseString(req.query.accountId); + const personalRooms = await getPersonalRooms(accountId); + const loadout = await getLoadout(accountId); + const ship = await getShip(personalRooms.activeShipId, "ShipInteriorColors ShipAttachments SkinFlavourItem"); - if (!ship) { - res.status(500).json({ error: "error finding a corresponding ship" }); - return; + const getShipResponse: IGetShipResponse = { + ShipOwnerId: accountId, + LoadOutInventory: { LoadOutPresets: loadout.toJSON() }, + Ship: { + ...personalRooms.toJSON().Ship, + ShipId: toOid(personalRooms.activeShipId), + ShipInterior: { + Colors: ship.ShipInteriorColors, + ShipAttachments: ship.ShipAttachments, + SkinFlavourItem: ship.SkinFlavourItem + } + }, + Apartment: personalRooms.Apartment + }; + + if (config.unlockallShipFeatures) { + getShipResponse.Ship.Features = allShipFeatures; } - ship.Ship.Features = [ - "/Lotus/Types/Items/ShipFeatureItems/AdvancedOrdisFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/AlchemyRoomFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/AlertsFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/CeresNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ClanFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ErisNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/EuropaNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/FoundryConcurrentBuildFormaFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryItem", - "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/JupiterNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/MarketTierOneFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/MarketTierTwoFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/MarsNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ModsFusionFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ModsTransmuteFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/NeptuneNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/PhobosNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/PlutoNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodBraceFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHullFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleLeftFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleRightFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackTailFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItemBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItemBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItemBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItemBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItemBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItemBlueprint", - "/Lotus/Types/Items/ShipFeatureItems/RailjackCephalonShipFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/RailjackKeyShipFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/SaturnNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/SednaNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ShipFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/SolarChartFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/UranusNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/VenusNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/VoidProjectionFeatureItem" - ]; - - res.json(ship); + res.json(getShipResponse); }; -export { getShipController }; +export const getLoadout = async (accountId: string) => { + const loadout = await Loadout.findOne({ loadoutOwnerId: accountId }); + + if (!loadout) { + logger.error(`loadout not found for account ${accountId}`); + throw new Error("loadout not found"); + } + + return loadout; +}; + +export const getPersonalRooms = async (accountId: string) => { + const personalRooms = await PersonalRooms.findOne({ personalRoomsOwnerId: accountId }); + + if (!personalRooms) { + logger.error(`personal rooms not found for account ${accountId}`); + throw new Error("personal rooms not found"); + } + return personalRooms; +}; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 8f217071..bb0f1473 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -5,7 +5,9 @@ import { Request, RequestHandler, Response } from "express"; import config from "@/config.json"; import allMissions from "@/static/fixed_responses/allMissions.json"; import allQuestKeys from "@/static/fixed_responses/allQuestKeys.json"; +import allShipDecorations from "@/static/fixed_responses/shipDecorations.json"; import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; +import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { const accountId = request.query.accountId; @@ -15,9 +17,11 @@ const inventoryController: RequestHandler = async (request: Request, response: R return; } - const inventory = await Inventory.findOne({ accountOwnerId: accountId }).populate<{ - LoadOutPresets: ILoadoutDatabase; - }>("LoadOutPresets"); + const inventory = await Inventory.findOne({ accountOwnerId: accountId }) + .populate<{ + LoadOutPresets: ILoadoutDatabase; + }>("LoadOutPresets") + .populate<{ Ships: IShipInventory }>("Ships", "-ShipInteriorColors"); if (!inventory) { response.status(400).json({ error: "inventory was undefined" }); @@ -26,12 +30,17 @@ const inventoryController: RequestHandler = async (request: Request, response: R //TODO: make a function that converts from database representation to client const inventoryJSON = inventory.toJSON(); + console.log(inventoryJSON.Ships); const inventoryResponse = toInventoryResponse(inventoryJSON); if (config.unlockAllMissions) inventoryResponse.Missions = allMissions; if (config.unlockAllQuests) inventoryResponse.QuestKeys = allQuestKeys; + if (config.unlockAllShipDecorations) { + inventoryResponse.ShipDecorations = allShipDecorations; + } + response.json(inventoryResponse); }; diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 3f25182b..7dbef077 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -51,7 +51,7 @@ const loginController: RequestHandler = async (request, response) => { return; } catch (error: unknown) { if (error instanceof Error) { - throw new Error("error creating account", error); + throw new Error(`error creating account ${error.message}`); } } } diff --git a/src/controllers/api/setActiveShipController.ts b/src/controllers/api/setActiveShipController.ts new file mode 100644 index 00000000..ed896b4e --- /dev/null +++ b/src/controllers/api/setActiveShipController.ts @@ -0,0 +1,15 @@ +import { getPersonalRooms } from "@/src/controllers/api/getShipController"; +import { parseString } from "@/src/helpers/general"; +import { RequestHandler } from "express"; +import { Types } from "mongoose"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const setActiveShipController: RequestHandler = async (req, res) => { + const accountId = parseString(req.query.accountId); + const shipId = parseString(req.query.shipId); + + const personalRooms = await getPersonalRooms(accountId); + personalRooms.activeShipId = new Types.ObjectId(shipId); + await personalRooms.save(); + res.status(200).end(); +}; diff --git a/src/controllers/api/setShipCustomizationsController.ts b/src/controllers/api/setShipCustomizationsController.ts new file mode 100644 index 00000000..8e78b1c3 --- /dev/null +++ b/src/controllers/api/setShipCustomizationsController.ts @@ -0,0 +1,19 @@ +import { setShipCustomizations } from "@/src/services/shipCustomizationsService"; +import { ISetShipCustomizationsRequest } from "@/src/types/shipTypes"; +import { logger } from "@/src/utils/logger"; +import { RequestHandler } from "express"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const setShipCustomizationsController: RequestHandler = async (req, res) => { + try { + const setShipCustomizationsRequest = JSON.parse(req.body as string) as ISetShipCustomizationsRequest; + + const setShipCustomizationsResponse = await setShipCustomizations(setShipCustomizationsRequest); + res.json(setShipCustomizationsResponse); + } catch (error: unknown) { + if (error instanceof Error) { + logger.error(`error in setShipCustomizationsController: ${error.message}`); + res.status(400).json({ error: error.message }); + } + } +}; diff --git a/src/controllers/api/shipDecorationsController.ts b/src/controllers/api/shipDecorationsController.ts new file mode 100644 index 00000000..97230d5e --- /dev/null +++ b/src/controllers/api/shipDecorationsController.ts @@ -0,0 +1,21 @@ +import { parseString } from "@/src/helpers/general"; +import { IShipDecorationsRequest } from "@/src/types/shipTypes"; +import { logger } from "@/src/utils/logger"; +import { RequestHandler } from "express"; +import { handleSetShipDecorations } from "@/src/services/shipCustomizationsService"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const shipDecorationsController: RequestHandler = async (req, res) => { + const accountId = parseString(req.query.accountId); + const shipDecorationsRequest = JSON.parse(req.body as string) as IShipDecorationsRequest; + + try { + const placedDecoration = await handleSetShipDecorations(accountId, shipDecorationsRequest); + res.send(placedDecoration); + } catch (error: unknown) { + if (error instanceof Error) { + logger.error(`error in saveLoadoutController: ${error.message}`); + res.status(400).json({ error: error.message }); + } + } +}; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 52283fd7..d7f3ae81 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -6,7 +6,6 @@ import { IInventoryDatabase, IBooster, IInventoryResponse, - IInventoryDatabaseDocument, ISlots, IGenericItem, IMailbox, @@ -21,9 +20,7 @@ import { IChallengeProgress, IStepSequencer, IAffiliation, - IShip, INotePacks, - IShipExterior, ICompletedJobChain, ISeasonChallengeHistory, IPlayerSkills, @@ -108,7 +105,7 @@ const abilityOverrideSchema = new Schema({ Ability: String, Index: Number }); -const colorSchema = new Schema( +export const colorSchema = new Schema( { t0: Number, t1: Number, @@ -457,33 +454,6 @@ const affiliationsSchema = new Schema( { _id: false } ); -const shipExteriorSchema = new Schema( - { - SkinFlavourItem: String, - Colors: colorSchema, //TODO: perhaps too many colors here - ShipAttachments: { HOOD_ORNAMENT: String } - }, - { _id: false } -); - -const shipSchema = new Schema({ - ItemType: String, - ShipExterior: shipExteriorSchema, - AirSupportPower: String -}); - -shipSchema.virtual("ItemId").get(function () { - return { $oid: this._id.toString() }; -}); - -shipSchema.set("toJSON", { - virtuals: true, - transform(_document, returnedObject) { - delete returnedObject._id; - delete returnedObject.__v; - } -}); - const completedJobChainsSchema = new Schema( { LocationTag: String, @@ -773,7 +743,7 @@ const inventorySchema = new Schema( Horses: [GenericItemSchema], //LandingCraft like Liset - Ships: [shipSchema], + Ships: { type: [Schema.Types.ObjectId], ref: "Ships" }, // /Lotus/Types/Items/ShipDecos/ ShipDecorations: [typeCountSchema], diff --git a/src/models/inventoryModels/loadoutModel.ts b/src/models/inventoryModels/loadoutModel.ts index 37a8d104..87871138 100644 --- a/src/models/inventoryModels/loadoutModel.ts +++ b/src/models/inventoryModels/loadoutModel.ts @@ -93,4 +93,4 @@ type loadoutDocumentProps = { type loadoutModelType = Model; -export const LoadoutModel = model("Loadout", loadoutSchema); +export const Loadout = model("Loadout", loadoutSchema); diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index f1846784..b21c5906 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -46,14 +46,4 @@ databaseAccountSchema.set("toJSON", { virtuals: true }); -//databaseAccountSchema.set(""); - -// Create a virtual property `domain` that's computed from `email`. -// databaseAccountSchema.virtual("id").get(function () { -// //console.log(this); -// return this._id; -// }); - -const Account = model("Account", databaseAccountSchema); - -export { Account }; +export const Account = model("Account", databaseAccountSchema); diff --git a/src/models/personalRoomsModel.ts b/src/models/personalRoomsModel.ts new file mode 100644 index 00000000..6829932e --- /dev/null +++ b/src/models/personalRoomsModel.ts @@ -0,0 +1,60 @@ +import { toOid } from "@/src/helpers/inventoryHelpers"; +import { IOrbiter, IPersonalRooms, PersonalRoomsModelType } from "@/src/types/personalRoomsTypes"; +import { IApartment, IGardening, IPlacedDecosDatabase } from "@/src/types/shipTypes"; +import { Schema, model } from "mongoose"; + +const placedDecosSchema = new Schema( + { + Type: String, + Pos: [Number], + Rot: [Number] + }, + { id: false } +); + +placedDecosSchema.virtual("id").get(function (this: IPlacedDecosDatabase) { + return toOid(this._id); +}); + +placedDecosSchema.set("toJSON", { + virtuals: true, + transform(_document, returnedObject) { + delete returnedObject._id; + } +}); + +const roomSchema = new Schema( + { + Name: String, + MaxCapacity: Number, + PlacedDecos: [placedDecosSchema] + }, + { _id: false } +); + +const gardeningSchema = new Schema({ + Planters: [Schema.Types.Mixed] //TODO: add when implementing gardening +}); + +const apartmentSchema = new Schema( + { + Rooms: [roomSchema], + FavouriteLoadouts: [Schema.Types.Mixed], + Gardening: gardeningSchema + }, + { _id: false } +); + +const orbiterSchema = new Schema( + { Features: [String], Rooms: [roomSchema], ContentUrlSignature: String }, + { _id: false } +); + +export const personalRoomsSchema = new Schema({ + personalRoomsOwnerId: Schema.Types.ObjectId, + activeShipId: Schema.Types.ObjectId, + Ship: orbiterSchema, + Apartment: apartmentSchema +}); + +export const PersonalRooms = model("PersonalRooms", personalRoomsSchema); diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index 4b16ebd2..cf2486a4 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,66 +1,50 @@ -import { Schema, model } from "mongoose"; -import { IShip } from "../types/shipTypes"; -import { IOid } from "../types/commonTypes"; -import { loadoutSchema } from "@/src/models/inventoryModels/loadoutModel"; +import { Model, Schema, StringSchemaDefinition, Types, model } from "mongoose"; +import { IApartment, IPlacedDecosDatabase, IRooms, IShipDatabase } from "../types/shipTypes"; +import { toOid } from "@/src/helpers/inventoryHelpers"; +import { colorSchema } from "@/src/models/inventoryModels/inventoryModel"; +import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes"; -const roomSchema = new Schema( +const shipSchema = new Schema( { - Name: String, - MaxCapacity: Number - }, - { _id: false } -); - -const shipSchema = new Schema( - { - Rooms: [roomSchema], - Features: [String], - ContentUrlSignature: String + ItemType: String, + ShipOwnerId: Schema.Types.ObjectId, + ShipInteriorColors: colorSchema, + ShipExteriorColors: colorSchema, + AirSupportPower: String, + ShipAttachments: { HOOD_ORNAMENT: String }, + SkinFlavourItem: String }, { id: false } ); -shipSchema.virtual("ShipId").get(function () { - return { $oid: this._id.toString() } satisfies IOid; +shipSchema.virtual("ItemId").get(function () { + return toOid(this._id); }); shipSchema.set("toJSON", { virtuals: true, transform(_document, returnedObject) { + const shipResponse = returnedObject as IShipInventory; + const shipDatabase = returnedObject as IShipDatabase; delete returnedObject._id; - } -}); + delete returnedObject.__v; + delete returnedObject.ShipOwnerId; + if (shipDatabase.ShipExteriorColors) { + shipResponse.ShipExterior = { + Colors: shipDatabase.ShipExteriorColors, + ShipAttachments: shipDatabase.ShipAttachments, + SkinFlavourItem: shipDatabase.SkinFlavourItem + }; -const apartmentSchema = new Schema({ - Rooms: [roomSchema], - FavouriteLoadouts: [Schema.Types.Mixed] -}); - -apartmentSchema.set("toJSON", { - transform(_document, returnedObject) { - delete returnedObject._id; - } -}); - -const shipDatabaseSchema = new Schema({ - ShipOwnerId: Schema.Types.ObjectId, - Ship: shipSchema, - Apartment: apartmentSchema, - LoadOutInventory: { - LoadOutPresets: { - type: Schema.Types.ObjectId, - ref: "Loadout" + delete shipDatabase.ShipExteriorColors; + delete shipDatabase.ShipAttachments; + delete shipDatabase.SkinFlavourItem; } } }); -shipDatabaseSchema.set("toJSON", { - transform(_document, returnedObject) { - delete returnedObject._id; - delete returnedObject.__v; - } +shipSchema.set("toObject", { + virtuals: true }); -const Ship = model("Ship", shipDatabaseSchema); - -export { Ship }; +export const Ship = model("Ships", shipSchema); diff --git a/src/routes/api.ts b/src/routes/api.ts index 1c9270bd..71648809 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -37,6 +37,9 @@ import { focusController } from "@/src/controllers/api/focusController"; import { inventorySlotsController } from "@/src/controllers/api/inventorySlotsController"; import { startRecipeController } from "@/src/controllers/api/startRecipeController"; import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompletedRecipeController"; +import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController"; +import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; +import { setActiveShipController } from "@/src/controllers/api/setActiveShipController"; const apiRouter = express.Router(); @@ -62,9 +65,12 @@ apiRouter.get("/modularWeaponSale.php", modularWeaponSaleController); apiRouter.get("/deleteSession.php", deleteSessionController); apiRouter.get("/logout.php", logoutController); apiRouter.get("/setBootLocation.php", setBootLocationController); +apiRouter.get("/setActiveShip.php", setActiveShipController); // post // eslint-disable-next-line @typescript-eslint/no-misused-promises +apiRouter.post("/shipDecorations.php", shipDecorationsController); +apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController); apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController); apiRouter.post("/startRecipe.php", startRecipeController); apiRouter.post("/inventorySlots.php", inventorySlotsController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 9b74dad6..cc7fd350 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -19,12 +19,16 @@ import { IArtifactsRequest, IMissionInventoryUpdateRequest } from "../types/requ import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal } from "@/src/services/itemDataService"; -export const createInventory = async (accountOwnerId: Types.ObjectId, loadOutPresetId: Types.ObjectId) => { +export const createInventory = async ( + accountOwnerId: Types.ObjectId, + defaultItemReferences: { loadOutPresetId: Types.ObjectId; ship: Types.ObjectId } +) => { try { const inventory = new Inventory({ ...new_inventory, accountOwnerId: accountOwnerId, - LoadOutPresets: loadOutPresetId + LoadOutPresets: defaultItemReferences.loadOutPresetId, + Ships: [defaultItemReferences.ship] }); if (config.skipStoryModeChoice) { inventory.StoryModeChoice = "WARFRAME"; diff --git a/src/services/loadoutService.ts b/src/services/loadoutService.ts new file mode 100644 index 00000000..37f91612 --- /dev/null +++ b/src/services/loadoutService.ts @@ -0,0 +1,13 @@ +import { Loadout } from "@/src/models/inventoryModels/loadoutModel"; +import { logger } from "@/src/utils/logger"; + +export const getLoadout = async (accountId: string) => { + const loadout = await Loadout.findOne({ loadoutOwnerId: accountId }); + + if (!loadout) { + logger.error(`loadout not found for account ${accountId}`); + throw new Error("loadout not found"); + } + + return loadout; +}; diff --git a/src/services/loginService.ts b/src/services/loginService.ts index 1753c85b..aa74732c 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -3,7 +3,9 @@ import { createInventory } from "@/src/services/inventoryService"; import { IDatabaseAccount } from "@/src/types/loginTypes"; import { createShip } from "./shipService"; import { Types } from "mongoose"; -import { LoadoutModel } from "@/src/models/inventoryModels/loadoutModel"; +import { Loadout } from "@/src/models/inventoryModels/loadoutModel"; +import { PersonalRooms } from "@/src/models/personalRoomsModel"; +import new_personal_rooms from "@/static/fixed_responses/personalRooms.json"; const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => { return requestPassword === databasePassword; @@ -14,8 +16,9 @@ const createAccount = async (accountData: IDatabaseAccount) => { try { await account.save(); const loadoutId = await createLoadout(account._id); - await createInventory(account._id, loadoutId); - await createShip(account._id, loadoutId); + const shipId = await createShip(account._id); + await createInventory(account._id, { loadOutPresetId: loadoutId, ship: shipId }); + await createPersonalRooms(account._id, shipId); return account.toJSON(); } catch (error) { if (error instanceof Error) { @@ -28,7 +31,16 @@ const createAccount = async (accountData: IDatabaseAccount) => { export { isCorrectPassword, createAccount }; export const createLoadout = async (accountId: Types.ObjectId) => { - const loadout = new LoadoutModel({ loadoutOwnerId: accountId }); + const loadout = new Loadout({ loadoutOwnerId: accountId }); const savedLoadout = await loadout.save(); return savedLoadout._id; }; + +export const createPersonalRooms = async (accountId: Types.ObjectId, shipId: Types.ObjectId) => { + const personalRooms = new PersonalRooms({ + ...new_personal_rooms, + personalRoomsOwnerId: accountId, + activeShipId: shipId + }); + await personalRooms.save(); +}; diff --git a/src/services/personalRoomsService.ts b/src/services/personalRoomsService.ts new file mode 100644 index 00000000..c2d0b629 --- /dev/null +++ b/src/services/personalRoomsService.ts @@ -0,0 +1,12 @@ +import { PersonalRooms } from "@/src/models/personalRoomsModel"; +import { logger } from "@/src/utils/logger"; + +export const getPersonalRooms = async (accountId: string) => { + const personalRooms = await PersonalRooms.findOne({ personalRoomsOwnerId: accountId }); + + if (!personalRooms) { + logger.error(`personal rooms not found for account ${accountId}`); + throw new Error("personal rooms not found"); + } + return personalRooms; +}; diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index e8f7bc5d..0b71f22f 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -5,7 +5,7 @@ import { IOperatorConfigEntry, ISaveLoadoutRequestNoUpgradeVer } from "@/src/types/saveLoadoutTypes"; -import { LoadoutModel } from "@/src/models/inventoryModels/loadoutModel"; +import { Loadout } from "@/src/models/inventoryModels/loadoutModel"; import { getInventory } from "@/src/services/inventoryService"; import { IOid } from "@/src/types/commonTypes"; import { Types } from "mongoose"; @@ -60,7 +60,7 @@ export const handleInventoryItemConfigChange = async ( } case "LoadOuts": { logger.debug("loadout received"); - const loadout = await LoadoutModel.findOne({ loadoutOwnerId: accountId }); + const loadout = await Loadout.findOne({ loadoutOwnerId: accountId }); if (!loadout) { throw new Error("loadout not found"); } diff --git a/src/services/shipCustomizationsService.ts b/src/services/shipCustomizationsService.ts new file mode 100644 index 00000000..98125e50 --- /dev/null +++ b/src/services/shipCustomizationsService.ts @@ -0,0 +1,68 @@ +import { getPersonalRooms } from "@/src/services/personalRoomsService"; +import { getShip } from "@/src/services/shipService"; +import { + ISetShipCustomizationsRequest, + IShipDatabase, + IShipDecorationsRequest, + IShipDecorationsResponse +} from "@/src/types/shipTypes"; +import { Types } from "mongoose"; + +export const setShipCustomizations = async (shipCustomization: ISetShipCustomizationsRequest) => { + const ship = await getShip(new Types.ObjectId(shipCustomization.ShipId)); + + let shipChanges: Partial; + if (shipCustomization.IsExterior) { + shipChanges = { + ShipExteriorColors: shipCustomization.Customization.Colors, + SkinFlavourItem: shipCustomization.Customization.SkinFlavourItem, + ShipAttachments: shipCustomization.Customization.ShipAttachments, + AirSupportPower: shipCustomization.AirSupportPower! + }; + } else { + shipChanges = { + ShipInteriorColors: shipCustomization.Customization.Colors + }; + } + ship.set(shipChanges); + + await ship.save(); +}; + +export const handleSetShipDecorations = async ( + accountId: string, + placedDecoration: IShipDecorationsRequest +): Promise => { + const personalRooms = await getPersonalRooms(accountId); + + const rooms = placedDecoration.IsApartment ? personalRooms.Apartment.Rooms : personalRooms.Ship.Rooms; + + const room = rooms.find(room => room.Name === placedDecoration.Room); + + //TODO: check whether to remove from shipitems + + if (placedDecoration.RemoveId) { + room?.PlacedDecos?.pull({ _id: placedDecoration.RemoveId }); + await personalRooms.save(); + return { + DecoId: placedDecoration.RemoveId, + Room: placedDecoration.Room, + IsApartment: placedDecoration.IsApartment, + MaxCapacityIncrease: 0 + }; + } + + // TODO: handle capacity + + const decoId = new Types.ObjectId(); + room?.PlacedDecos?.push({ + Type: placedDecoration.Type, + Pos: placedDecoration.Pos, + Rot: placedDecoration.Rot, + _id: decoId + }); + + await personalRooms.save(); + + return { DecoId: decoId.toString(), Room: placedDecoration.Room, IsApartment: placedDecoration.IsApartment }; +}; diff --git a/src/services/shipService.ts b/src/services/shipService.ts index 5b35cce3..ae11c9d2 100644 --- a/src/services/shipService.ts +++ b/src/services/shipService.ts @@ -1,15 +1,16 @@ import { Ship } from "@/src/models/shipModel"; -import new_ship from "@/static/fixed_responses/ship.json"; +import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; +import { logger } from "@/src/utils/logger"; import { Types } from "mongoose"; -const createShip = async (accountOwnerId: Types.ObjectId, loadoutId: Types.ObjectId) => { +export const createShip = async (accountOwnerId: Types.ObjectId) => { try { const ship = new Ship({ - ...new_ship, - ShipOwnerId: accountOwnerId, - LoadOutInventory: { LoadOutPresets: loadoutId } + ItemType: "/Lotus/Types/Items/Ships/DefaultShip", + ShipOwnerId: accountOwnerId }); - await ship.save(); + const newShip = await ship.save(); + return newShip._id; } catch (error) { if (error instanceof Error) { throw new Error(`error creating ship" ${error.message}`); @@ -18,4 +19,26 @@ const createShip = async (accountOwnerId: Types.ObjectId, loadoutId: Types.Objec } }; -export { createShip }; +export const getShip = async (shipId: Types.ObjectId, fieldSelection: string = "") => { + const ship = await Ship.findOne({ _id: shipId }, fieldSelection); + + if (!ship) { + logger.error(`error finding a ship for account ${shipId}`); + throw new Error(`error finding a ship for account ${shipId}`); + } + + return ship; +}; + +export const getShipLean = async (shipOwnerId: string) => { + const ship = await Ship.findOne({ ShipOwnerId: shipOwnerId }).lean().populate<{ + LoadOutInventory: { LoadOutPresets: ILoadoutDatabase }; + }>("LoadOutInventory.LoadOutPresets"); + + if (!ship) { + logger.error(`error finding a ship for account ${shipOwnerId}`); + throw new Error(`error finding a ship for account ${shipOwnerId}`); + } + + return ship; +}; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index b7b5f1fa..71f5ebac 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -11,13 +11,21 @@ import { } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; +import { Colour } from "warframe-items"; //Document extends will be deleted soon. TODO: delete and migrate uses to ... export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} export interface IInventoryDatabase extends Omit< IInventoryResponse, - "TrainingDate" | "LoadOutPresets" | "Mailbox" | "PendingRecipes" | "Created" | "QuestKeys" | "BlessingCooldown" + | "TrainingDate" + | "LoadOutPresets" + | "Mailbox" + | "PendingRecipes" + | "Created" + | "QuestKeys" + | "BlessingCooldown" + | "Ships" > { accountOwnerId: Types.ObjectId; Created: Date; @@ -27,6 +35,7 @@ export interface IInventoryDatabase PendingRecipes: IPendingRecipe[]; QuestKeys: IQuestKeyDatabase[]; BlessingCooldown: Date; + Ships: Types.ObjectId[]; } export interface IInventoryResponseDocument extends IInventoryResponse, Document {} @@ -140,7 +149,7 @@ export interface IInventoryResponse { LongGuns: IWeaponDatabase[]; Pistols: IWeaponDatabase[]; Melee: IWeaponDatabase[]; - Ships: IShip[]; + Ships: IShipInventory[]; QuestKeys: IQuestKeyResponse[]; FlavourItems: IFlavourItem[]; Scoops: IGenericItem[]; @@ -449,8 +458,8 @@ export interface ICustomization { } export interface IShipExterior { - SkinFlavourItem: string; - Colors: IShipExteriorColors; + SkinFlavourItem?: string; + Colors: IColor; ShipAttachments?: IShipAttachments; } @@ -1016,7 +1025,7 @@ export interface ISettings { TradingRulesConfirmed: boolean; } -export interface IShip { +export interface IShipInventory { ItemType: string; ShipExterior: IShipExterior; AirSupportPower: string; diff --git a/src/types/personalRoomsTypes.ts b/src/types/personalRoomsTypes.ts new file mode 100644 index 00000000..7c9b91f0 --- /dev/null +++ b/src/types/personalRoomsTypes.ts @@ -0,0 +1,28 @@ +import { IApartment, IRooms } from "@/src/types/shipTypes"; +import { Model, Types } from "mongoose"; + +export interface IOrbiter { + Features: string[]; + Rooms: IRooms[]; + ContentUrlSignature: string; +} + +export interface IPersonalRooms { + personalRoomsOwnerId: Types.ObjectId; + activeShipId: Types.ObjectId; + Ship: IOrbiter; + Apartment: IApartment; +} + +export type RoomsType = { Name: string; MaxCapacity: number; PlacedDecos: Types.DocumentArray }; + +export type PersonalRoomsDocumentProps = { + Ship: Omit & { + Rooms: RoomsType[]; + }; + Apartment: Omit & { + Rooms: RoomsType[]; + }; +}; + +export type PersonalRoomsModelType = Model; diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index 522837e5..05ac65da 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -1,30 +1,108 @@ -import { Types } from "mongoose"; +import { Schema, Types } from "mongoose"; import { IOid } from "@/src/types/commonTypes"; +import { IColor } from "@/src/types/inventoryTypes/commonInventoryTypes"; -export interface IShip { - ShipOwnerId: Types.ObjectId; - Ship: IShipResponse; +export interface IGetShipResponse { + ShipOwnerId: string; + Ship: IShip; Apartment: IApartment; LoadOutInventory: { LoadOutPresets: Types.ObjectId }; } -export interface IShipResponse extends IShipDatabase { - ShipId: IOid; +export interface IShipAttachments { + HOOD_ORNAMENT: string; } -export interface IShipDatabase { - Rooms: IRooms[]; +export interface IShipInterior { + Colors?: IColor; + ShipAttachments?: IShipAttachments; + SkinFlavourItem?: string; +} + +export interface IShip { Features: string[]; + ShipId: IOid; + ShipInterior: IShipInterior; + Rooms: IRooms[]; ContentUrlSignature: string; } -// TODO: add Apartment.Gardening +export interface IShipDatabase { + ItemType: string; + ShipOwnerId: Schema.Types.ObjectId; + ShipInteriorColors?: IColor; + ShipExteriorColors?: IColor; + AirSupportPower: string; + ShipAttachments?: IShipAttachments; + SkinFlavourItem?: string; +} + export interface IRooms { Name: string; MaxCapacity: number; + PlacedDecos?: IPlacedDecosDatabase[]; } +export interface IPlants { + PlantType: string; + EndTime: IOid; + PlotIndex: number; +} +export interface IPlanters { + Name: string; + Plants: IPlants[]; +} + +export interface IGardening { + Planters: IPlanters[]; +} export interface IApartment { + Gardening: IGardening; Rooms: IRooms[]; FavouriteLoadouts: string[]; } + +export interface IPlacedDecosDatabase { + Type: string; + Pos: [number, number, number]; + Rot: [number, number, number]; + _id: Types.ObjectId; +} + +export interface IPlacedDecosClient extends Omit { + id: IOid; +} + +export interface ISetShipCustomizationsRequest { + ShipId: string; + Customization: Customization; + IsExterior: boolean; + AirSupportPower?: string; +} + +export interface Customization { + SkinFlavourItem: string; + Colors: IColor; + ShipAttachments: ShipAttachments; +} + +//TODO: check for more attachments +export interface ShipAttachments { + HOOD_ORNAMENT: string; +} + +export interface IShipDecorationsRequest { + Type: string; + Pos: [number, number, number]; + Rot: [number, number, number]; + Room: string; + IsApartment: boolean; + RemoveId: string; +} + +export interface IShipDecorationsResponse { + DecoId: string; + Room: string; + IsApartment: boolean; + MaxCapacityIncrease?: number; +} diff --git a/static/fixed_responses/allShipFeatures.json b/static/fixed_responses/allShipFeatures.json new file mode 100644 index 00000000..fdbff99f --- /dev/null +++ b/static/fixed_responses/allShipFeatures.json @@ -0,0 +1,69 @@ +[ + "/Lotus/Types/Items/ShipFeatureItems/AdvancedOrdisFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/AlchemyRoomFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/AlertsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/CeresNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ClanFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ErisNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/EuropaNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryConcurrentBuildFormaFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryItem", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/JupiterNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MarketTierOneFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MarketTierTwoFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MarsNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFusionFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsTransmuteFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/NeptuneNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/PhobosNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/PlutoNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodBraceFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHullFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleLeftFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleRightFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackTailFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItemBlueprint", + "/Lotus/Types/Items/ShipFeatureItems/RailjackCephalonShipFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/RailjackKeyShipFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SaturnNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SednaNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ShipFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SolarChartFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/UranusNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/VenusNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/VoidProjectionFeatureItem" +] diff --git a/static/fixed_responses/ship.json b/static/fixed_responses/personalRooms.json similarity index 94% rename from static/fixed_responses/ship.json rename to static/fixed_responses/personalRooms.json index 8ed911c1..8142eb97 100644 --- a/static/fixed_responses/ship.json +++ b/static/fixed_responses/personalRooms.json @@ -8,7 +8,6 @@ "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem" ], - "ShipId": { "$oid": "removed" }, "Rooms": [ { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, { "Name": "BridgeRoom", "MaxCapacity": 1600 }, @@ -27,6 +26,7 @@ { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, { "Name": "DuviriHallway", "MaxCapacity": 1600 } ], - "FavouriteLoadouts": [] + "FavouriteLoadouts": [], + "Gardening": [] } } diff --git a/static/fixed_responses/shipDecorations.json b/static/fixed_responses/shipDecorations.json new file mode 100644 index 00000000..82baf31b --- /dev/null +++ b/static/fixed_responses/shipDecorations.json @@ -0,0 +1,18 @@ +[ + { + "ItemCount": 1, + "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Warframes/WarframeAFItem" + }, + { + "ItemCount": 1, + "ItemType": "/Lotus/Types/Items/ShipDecos/KavatBust" + }, + { + "ItemCount": 1, + "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTiger" + }, + { + "ItemCount": 1, + "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/PrideCommunityDisplay" + } +] -- 2.47.2 From bb3fb94680486161d459b779403899f2bf513e86 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 18 Feb 2024 14:59:43 +0100 Subject: [PATCH 062/522] fix: broken account creation (#133) --- static/fixed_responses/personalRooms.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/fixed_responses/personalRooms.json b/static/fixed_responses/personalRooms.json index 8142eb97..b42bc27e 100644 --- a/static/fixed_responses/personalRooms.json +++ b/static/fixed_responses/personalRooms.json @@ -27,6 +27,6 @@ { "Name": "DuviriHallway", "MaxCapacity": 1600 } ], "FavouriteLoadouts": [], - "Gardening": [] + "Gardening": {} } } -- 2.47.2 From 6b4f9e80d6eb7eead1f76a69376c6bfa4159b2cc Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 24 Feb 2024 18:08:32 +0100 Subject: [PATCH 063/522] version update 35.1.1 (#134) --- config.json | 8 +- static/fixed_responses/worldState.json | 3347 +++++++++++++----------- 2 files changed, 1814 insertions(+), 1541 deletions(-) diff --git a/config.json b/config.json index 24059a07..419447e2 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2024.01.15.16.13/7gQ5EjRCTNURYUBJ+AOETw", - "matchmakingBuildId": "7083290396338825240", - "version": "35.0.11", - "worldSeed": "qihVmIIyYXz0E4+01UjY+ROEiAB7x3k40ZaCUtVLEF17u9TXVita+jHZRuMLB6OT8GOfX8C+kqkyrT26AJEHFV0IDUkoZ1bntDSBL6wN36tq+ttsN/8NIcy1eGIyLzHn1Cosbtp8ykPhIaFKWlWP6v0QUBObIT11xLXF8fd+7cAEUcPygnS6WK048KEjMldK5bXIkkg9NV7ZXWLhNfTVG0mN0VluNUKDlc/JCiYRkxvparpn7xKwFpxqZJIeYhOz/zaktlEcVFxxB6ewd/X+XNq7+SkPUw5btQKQeYax1AxBZHzCk0XF1ihRQKPdMeVzXIRq43Yf/8emu8siIC4dFA==", + "buildLabel": "2024.02.21.13.41/P4LYNzQKdd5ok43ZcUHBww", + "matchmakingBuildId": "9161871719973399660", + "version": "35.1.1", + "worldSeed": "bqIqh7f8RNMC0WkdePJkatBTRnU1WZwx1FgunR04BNLDWP9wNyc/LHhW8eiDrc5ZygtU8PlJ8UNo/CgdhmHu59CEh5uvPAmbOIH5/Iq5XjA6pBiKvATME/OCC9dKkAUqzpOqTyJYxl0aTKjdVRCETjw2+aU5ucFTp1GP4xV8lfs0+2aZ928qYD9QHBS12V2k2wM2uJl+E1d9sb9/PcuZKRSqC3qG1BoXmaySHaR9f/dN0rxy1zpx0+LD7fEjl0LNXkoO8oLZsHdjINTLGqT6yA42UXXb/Dd9KVbg605K3G+1iq0UIradETblXoV/iTDpgJXXlqHTrLxMOoC8iFNoGQ==", "skipStoryModeChoice": true, "skipTutorial": true, "unlockAllMissions": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 1eee6e00..5fa85ac2 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "qihVmIIyYXz0E4+01UjY+ROEiAB7x3k40ZaCUtVLEF17u9TXVita+jHZRuMLB6OT8GOfX8C+kqkyrT26AJEHFV0IDUkoZ1bntDSBL6wN36tq+ttsN/8NIcy1eGIyLzHn1Cosbtp8ykPhIaFKWlWP6v0QUBObIT11xLXF8fd+7cAEUcPygnS6WK048KEjMldK5bXIkkg9NV7ZXWLhNfTVG0mN0VluNUKDlc/JCiYRkxvparpn7xKwFpxqZJIeYhOz/zaktlEcVFxxB6ewd/X+XNq7+SkPUw5btQKQeYax1AxBZHzCk0XF1ihRQKPdMeVzXIRq43Yf/8emu8siIC4dFA==", + "WorldSeed": "bqIqh7f8RNMC0WkdePJkatBTRnU1WZwx1FgunR04BNLDWP9wNyc/LHhW8eiDrc5ZygtU8PlJ8UNo/CgdhmHu59CEh5uvPAmbOIH5/Iq5XjA6pBiKvATME/OCC9dKkAUqzpOqTyJYxl0aTKjdVRCETjw2+aU5ucFTp1GP4xV8lfs0+2aZ928qYD9QHBS12V2k2wM2uJl+E1d9sb9/PcuZKRSqC3qG1BoXmaySHaR9f/dN0rxy1zpx0+LD7fEjl0LNXkoO8oLZsHdjINTLGqT6yA42UXXb/Dd9KVbg605K3G+1iq0UIradETblXoV/iTDpgJXXlqHTrLxMOoC8iFNoGQ==", "Version": 10, - "MobileVersion": "4.15.19.0", - "BuildLabel": "2024.01.15.16.13/7gQ5EjRCTNURYUBJ+AOETw", - "Time": 1706190821, + "MobileVersion": "4.15.20.0", + "BuildLabel": "2024.02.21.13.41/P4LYNzQKdd5ok43ZcUHBww", + "Time": 1708794279, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -86,53 +86,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "65611ad1713ea52411002f8e" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Android Pre-registration is Open!" }, - { "LanguageCode": "fr", "Message": "La pré-inscription Android est ouverte !" }, - { "LanguageCode": "it", "Message": "La preregistrazione Android è aperta!" }, - { "LanguageCode": "de", "Message": "Die Android-Vorregistrierung ist geöffnet!" }, - { "LanguageCode": "es", "Message": "¡El prerregistro de Android está abierto!" }, - { "LanguageCode": "pt", "Message": "O pré-registro do Warframe para Android está aberto!" }, - { "LanguageCode": "ru", "Message": "Предварительная регистрация для игры в Warframe на Android открыта!" }, - { "LanguageCode": "pl", "Message": "Rejestracja wstępna na Androidzie jest otwarta!" }, - { "LanguageCode": "uk", "Message": "Попередня реєстрація на Android відкрита!" }, - { "LanguageCode": "tr", "Message": "Android için ön kayıt açıldı!" }, - { "LanguageCode": "ja", "Message": "Android版の事前登録が開始!" }, - { "LanguageCode": "zh", "Message": "安卓版预注册现已开发!" }, - { "LanguageCode": "ko", "Message": "안드로이드 기기 사전등록이 시작되었습니다!" }, - { "LanguageCode": "tc", "Message": "Android 版本的 Warframe 已開放預先註冊!" } - ], - "Prop": "https://www.warframe.com/android?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-11-AndroidBetaSignUpLaunchIGN", - "Date": { "$date": { "$numberLong": "1700861400000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/9efb4cd34cc8698927ac5d5e40ff5634.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65708eb08538b4a03707c29d" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Save the date(s) for TennoCon 2024!" }, - { "LanguageCode": "fr", "Message": "Réservez la date de la TennoCon 2024 !" }, - { "LanguageCode": "it", "Message": "Segna la data per il TennoCon 2024!" }, - { "LanguageCode": "de", "Message": "Merkt euch die Termine für die TennoCon 2024 vor!" }, - { "LanguageCode": "es", "Message": "¡Guarda las fechas para la TennoCon 2024!" }, - { "LanguageCode": "pt", "Message": "Reserve as datas para a TennoCon 2024!" }, - { "LanguageCode": "ru", "Message": "Зарезервируйте эти даты для TennoCon 2024!" }, - { "LanguageCode": "pl", "Message": "Zarezerwujcie czas na TennoCon 2024!" }, - { "LanguageCode": "uk", "Message": "Позначте в календарі дату Теннокону 2024!" }, - { "LanguageCode": "tr", "Message": "TennoCon 2024 için tarih(ler)i kaydet!" }, - { "LanguageCode": "ja", "Message": "TennoCon 2024開催日決定!" }, - { "LanguageCode": "ko", "Message": "텐노콘 2024을 위해 이 날(들) 의 일정을 비워두세요!" } - ], - "Prop": "https://www.warframe.com/news/tennocon-2024-en?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-12-TennoConSaveTheDate", - "Date": { "$date": { "$numberLong": "1701872280000" } }, - "EventStartDate": { "$date": { "$numberLong": "1701874800000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/efdbbeef36dd56d3ebdf852de51647b2_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "6579d98f401337afef087f3f" }, "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 35: 벽 속의 속삭임" }], @@ -161,40 +114,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "65883db88cb3f2c420048454" }, - "Messages": [{ "LanguageCode": "uk", "Message": "Міжплатформне збереження: відкривається знову в січні 2024" }], - "Prop": "https://forums.warframe.com/topic/1378222-%D0%BC%D1%96%D0%B6%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%BD%D0%B5-%D0%B7%D0%B1%D0%B5%D1%80%D0%B5%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F-%D0%B2%D1%96%D0%B4%D0%BA%D1%80%D0%B8%D0%B2%D0%B0%D1%94%D1%82%D1%8C%D1%81%D1%8F-%D0%B7%D0%BD%D0%BE%D0%B2%D1%83-%D0%B2-%D1%81%D1%96%D1%87%D0%BD%D1%96-2024/", - "Date": { "$date": { "$numberLong": "1703427480000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65983e32a798c19dd4082312" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Full Schedule: Void Corruption Weekend Alerts" }, - { "LanguageCode": "fr", "Message": "Programme : Alertes Corruption du Néant (WE)" }, - { "LanguageCode": "it", "Message": "Programmazione Completa: Allerte del Weekend Corruzione Void" }, - { "LanguageCode": "de", "Message": "Vollständiger Zeitplan: Void-Korruption Alarmierungen an den Wochenenden" }, - { "LanguageCode": "es", "Message": "Calendario completo: Alertas de fin de semana de Corrupción del Vacío" }, - { "LanguageCode": "pt", "Message": "Programação Completa: Alertas de Fim de Semana de Corrupção do Void" }, - { "LanguageCode": "ru", "Message": "Полное расписание: «Сигналы Тревоги: Искажение Бездны»" }, - { "LanguageCode": "pl", "Message": "Pełen harmonogram weekendowych Alarmów Skażenia Pustki" }, - { "LanguageCode": "uk", "Message": "Повний розклад: виклики на вихідних «Викривлення Порожнечі»" }, - { "LanguageCode": "tr", "Message": "Tam Program: Void Kirliliği Haftasonu Alert Görevleri" }, - { "LanguageCode": "ja", "Message": "イベントスケジュール:Voidコラプトウィークエンドアラート" }, - { "LanguageCode": "zh", "Message": "完整时间表:虚空堕落周末警报" }, - { "LanguageCode": "ko", "Message": "전체 일정: 보이드 커럽션 주말 얼럿" }, - { "LanguageCode": "tc", "Message": "完整時間表:虛空墮落週末警報" } - ], - "Prop": "https://www.warframe.com/news/void-corruption-alerts", - "Date": { "$date": { "$numberLong": "1704475980000" } }, - "EventStartDate": { "$date": { "$numberLong": "1704438000000" } }, - "EventEndDate": { "$date": { "$numberLong": "1707116400000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/09e25944d5374ec6e372c7ec7c297d67_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "62dff6238607d6b5d80876f5" }, "Messages": [{ "LanguageCode": "fr", "Message": "Une ressource indispensable, le Wiki FR Warframe !" }], @@ -225,46 +144,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "65a581da629f82a5970bd59b" }, - "Messages": [{ "LanguageCode": "en", "Message": "Operation: Gargoyle's Cry Has Ended!" }], - "Prop": "https://forums.warframe.com/topic/1375452-operation-gargoyles-cry-has-concluded/", - "Date": { "$date": { "$numberLong": "1705345140000" } }, - "EventEndDate": { "$date": { "$numberLong": "1708023600000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65a6b604d87aa13d3a0e0f6d" }, - "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Devstream 176!" }], - "Prop": "https://forums.warframe.com/topic/1380838-coming-soon-devstream-176/", - "Date": { "$date": { "$numberLong": "1705424280000" } }, - "EventStartDate": { "$date": { "$numberLong": "1706295600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1706299200000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframe", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65a6bc66776c6919200a289d" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第176回のお知らせ" }], - "Prop": "https://bit.ly/3Sjseae", - "Date": { "$date": { "$numberLong": "1705425960000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/Devstream176_1920x1080_V1.png.46562ca10cef441008b5b3855cb70b51.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65a6d82bff8d2e3c2a07cb9a" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Prochainement : Devstream 176" }], - "Prop": "https://forums.warframe.com/topic/1380875-prochainement-devstream-176/", - "Date": { "$date": { "$numberLong": "1705433100000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.3c3949ef5323d0bd0f14cc45e28515e4.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65a81a1dd0387266d60d5dc1" }, "Messages": [ @@ -290,475 +169,468 @@ "MobileOnly": false }, { - "_id": { "$oid": "65a82a92da2fe31a960bfe9e" }, - "Messages": [{ "LanguageCode": "en", "Message": "Cross Platform Save is Now Live!" }], - "Prop": "https://forums.warframe.com/topic/1380817-011624-cross-platform-save-stress-test-live-for-everyone/", - "Date": { "$date": { "$numberLong": "1705519620000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65a97a343172b2644a0051ec" }, + "_id": { "$oid": "65b95722f3765f6ab20fdd9a" }, "Messages": [ - { "LanguageCode": "en", "Message": "Prime Resurgence Event: Rotation 3" }, - { "LanguageCode": "fr", "Message": "Événement Résurgence Prime : 3ème rotation" }, - { "LanguageCode": "it", "Message": "Evento Risorgenza Prime: Rotazione 3" }, - { "LanguageCode": "de", "Message": "Prime Rückkehr Event: Rotation 3" }, - { "LanguageCode": "es", "Message": "Evento de Resurgimiento Prime: Rotación 3" }, - { "LanguageCode": "pt", "Message": "Evento da Ressurgência Prime: 3ª Rotação" }, - { "LanguageCode": "ru", "Message": "Событие «Возрождение Прайм»: Ротация 3" }, - { "LanguageCode": "pl", "Message": "Odrodzenie Prime: Rotacja 3" }, - { "LanguageCode": "uk", "Message": "Подія прайм-відродження: третя ротація" }, - { "LanguageCode": "tr", "Message": "Prime Diriliş Etkinliği: Rotasyon 3" }, - { "LanguageCode": "ja", "Message": "Prime Resurgence 特別イベント:ローテーション3" }, - { "LanguageCode": "zh", "Message": "Prime 重生活动:轮换 3" }, - { "LanguageCode": "ko", "Message": "프라임 리서전스 이벤트: 로테이션 3" }, - { "LanguageCode": "tc", "Message": "Prime Resurgence 活動:輪替 3" } + { "LanguageCode": "en", "Message": "Cross Platform Save is live! " }, + { "LanguageCode": "fr", "Message": "La Sauvegarde Cross-Platform est disponible ! " }, + { "LanguageCode": "it", "Message": "Il Salvataggio Multipiattaforma è disponibile! " }, + { "LanguageCode": "de", "Message": "Cross-Save ist live! " }, + { "LanguageCode": "es", "Message": "¡La progresión entre plataformas ya está disponible! " }, + { "LanguageCode": "pt", "Message": "O Salvamento de Progresso Multiplataforma já está disponível! " }, + { "LanguageCode": "ru", "Message": "Кроссплатформенное сохранение уже доступно! " }, + { "LanguageCode": "pl", "Message": "Zapis międzyplatformowy jest już dostępny! " }, + { "LanguageCode": "uk", "Message": "Міжплатформне збереження вже доступно!" }, + { "LanguageCode": "tr", "Message": "Çapraz Platform Kayıt sizlerle! " }, + { "LanguageCode": "ja", "Message": "クロスプラットフォームセーブがフル実装!" }, + { "LanguageCode": "zh", "Message": "跨平台存档现已登场! " }, + { "LanguageCode": "ko", "Message": "크로스 플랫폼 세이브가 지금 개시되었습니다! " }, + { "LanguageCode": "tc", "Message": "跨平台存檔現已登場!" } ], - "Prop": "https://www.warframe.com/news/prime-resurgence-event-2023?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-PrimeResurgenceR3LaunchIGN", - "Date": { "$date": { "$numberLong": "1705605180000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fae597f527efe097e32e79fca4a0ef82_1600x900.png", + "Prop": "https://www.warframe.com/news/cross-platform-save?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CrossSaveLaunchIGN", + "Date": { "$date": { "$numberLong": "1706640480000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/e79fd6318211fe640154a7eb772a8b55.jpg", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65a982175bb7a42d0a0b575e" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj : 35.0.10" }], - "Prop": "https://forums.warframe.com/topic/1381261-murmures-dans-les-murs%C2%A0-gauss-prime-correctif-35010/", - "Date": { "$date": { "$numberLong": "1705607640000" } }, + "_id": { "$oid": "65c6618a48bcb53a4b0b1cbf" }, + "Messages": [{ "LanguageCode": "en", "Message": "Have your Dojo featured on the Starchart!" }], + "Prop": "https://forums.warframe.com/topic/1382219-star-chart-dojo-showcase-winter-2024/", + "Date": { "$date": { "$numberLong": "1707499800000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65cb843bb92f7198e2038527" }, + "Messages": [{ "LanguageCode": "fr", "Message": "[PSA] Mise à jour des forums" }], + "Prop": "https://forums.warframe.com/topic/1384280-psa-mise-%C3%A0-jour-des-forums/", + "Date": { "$date": { "$numberLong": "1707836400000" } }, "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65a99d90cebffc2c7102d6cc" }, - "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.0.10" }], - "Prop": "https://forums.warframe.com/topic/1381286-susurros-en-las-paredes-revisi%C3%B3n-35010/", - "Date": { "$date": { "$numberLong": "1705614660000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65aee293c3a2f524020f60c1" }, - "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #377!" }], - "Prop": "https://forums.warframe.com/topic/1381856-community-stream-schedule-jan-22-28-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CommunityStreams-22", - "Date": { "$date": { "$numberLong": "1705960020000" } }, - "EventStartDate": { "$date": { "$numberLong": "1706223600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1706230800000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframe/", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65aee2bfda3fe794e60de1aa" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Stream & Twitch Drops: Jan 22 - 28" }], - "Prop": "https://forums.warframe.com/topic/1381856-community-stream-schedule-jan-22-28-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CommunityStreams-22", - "Date": { "$date": { "$numberLong": "1705960080000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65aefda7a257f498cf022f13" }, - "Messages": [{ "LanguageCode": "ja", "Message": "1月22日~1月28日の配信スケジュール" }], - "Prop": "https://bit.ly/3u2tKnV", - "Date": { "$date": { "$numberLong": "1705966920000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.a2106a7ef9255685cc8cdf9b08e82339.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65afd5325272c792660d6037" }, - "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: Programa de streams de la comunidad" }], - "Prop": "https://forums.warframe.com/topic/1381922-programa-de-streams-y-twitch-drops-22-28-de-enero/", - "Date": { "$date": { "$numberLong": "1706022120000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65afe4af37d109c18707fda2" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Streams Communautaires : 22 - 29 janv." }], - "Prop": "https://forums.warframe.com/topic/1381936-horaire-des-streams-communautaires-22-29-janvier/", - "Date": { "$date": { "$numberLong": "1706026080000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_01/image.png.d757c564a1cf92f3242bd43bd21c6cba.png", + "_id": { "$oid": "65cba74b92df73a75a0cbca6" }, + "Messages": [{ "LanguageCode": "fr", "Message": "DESIGN de Primes : Gauss Prime" }], + "Prop": "https://forums.warframe.com/topic/1384299-design-de-primes-gauss-prime/", + "Date": { "$date": { "$numberLong": "1707845400000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/8db8eb6be83bc8abb3e317c42d451bed_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65b12e76645ba809820b04f8" }, - "Messages": [{ "LanguageCode": "en", "Message": " Whispers in the Walls: Hotfix 35.0.11" }], - "Prop": "https://www.warframe.com/updates/pc/35-0-11", - "Date": { "$date": { "$numberLong": "1706110500000" } }, + "_id": { "$oid": "65cce3757b52c2dcb90817ad" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第177回のお知らせ" }], + "Prop": "https://bit.ly/3uqQsqe", + "Date": { "$date": { "$numberLong": "1707926340000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/0f615c30da8ead529702096f48184c14.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65ce62203fb50501ac040ef9" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Banshee Prime and Mirage Prime are back!" }, + { "LanguageCode": "fr", "Message": "Banshee et Mirage Prime sont de retour !" }, + { "LanguageCode": "it", "Message": "Banshee Prime e Mirage Prime sono tornate!" }, + { "LanguageCode": "de", "Message": "Banshee Prime und Mirage Prime sind zurück!" }, + { "LanguageCode": "es", "Message": "¡Banshee Prime y Mirage Prime están de regreso!" }, + { "LanguageCode": "pt", "Message": "A Banshee Prime e a Mirage Prime estão de volta!" }, + { "LanguageCode": "ru", "Message": "Банши Прайм и Мираж Прайм возвращаются!" }, + { "LanguageCode": "pl", "Message": "Banshee Prime i Mirage Prime powracają!" }, + { "LanguageCode": "uk", "Message": "Банші-прайм і Міраж-прайм повертаються!" }, + { "LanguageCode": "tr", "Message": "Banshee Prime ve Mirage Prime geri döndü!" }, + { "LanguageCode": "ja", "Message": "Banshee PrimeとMirage Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Banshee Prime 和 Mirage Prime 现已回归!" }, + { "LanguageCode": "ko", "Message": "밴쉬 프라임 및 미라지 프라임이 돌아왔습니다!" }, + { "LanguageCode": "tc", "Message": "Banshee Prime 以及 Mirage Prime 回歸了!" } + ], + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-PrimeResurgenceLaunchR16", + "Date": { "$date": { "$numberLong": "1708022040000" } }, + "EventStartDate": { "$date": { "$numberLong": "1708023600000" } }, + "EventEndDate": { "$date": { "$numberLong": "1710392400000" } }, + "ImageUrl": "https://www-static.warframe.com/images/prime-resurgence/rotations/banshee-mirage/masthead-keyart-desktop.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d4b93be0bec291280b92e0" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream + Twitch Drop Schedule" }], + "Prop": "https://forums.warframe.com/topic/1384886-community-stream-schedule-feb-20-25-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-CommunityStreams-20", + "Date": { "$date": { "$numberLong": "1708439820000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65d4c271593a19b4970ab693" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Streams et Drops : 20 - 25 fév." }], + "Prop": "https://forums.warframe.com/topic/1384891-streams-communautaires-20-25-f%C3%A9vrier/", + "Date": { "$date": { "$numberLong": "1708442100000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/WF_WeekendTwitchDrops_WeekOfFeb19.png.72260682eed6d2fb9a64909af34aa2b3.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d4c95f6376f1f11b02a584" }, + "Messages": [{ "LanguageCode": "ja", "Message": "2月20日~2月25日の配信スケジュール" }], + "Prop": "https://bit.ly/3IcJ3xH", + "Date": { "$date": { "$numberLong": "1708443900000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/FormaDropAsset.png.b6419591708e3914faedca1db2dfccd3.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65d4d5936b94ad331a0eb589" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes de mise à jour : 35.1.0" }], + "Prop": "https://forums.warframe.com/topic/1384897-murmures-dans-les-murs-mise-%C3%A0-jour-3510/", + "Date": { "$date": { "$numberLong": "1708447020000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d4e157b5f7e4adc408e258" }, + "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Actualización 35.1.0" }], + "Prop": "https://forums.warframe.com/topic/1384941-susurros-en-las-paredes-actualizaci%C3%B3n-3510/", + "Date": { "$date": { "$numberLong": "1708450020000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65d50a3156f5ee3b0c0a38b8" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Starter Weapon Pack Available Now" }, + { "LanguageCode": "fr", "Message": "Pack d'Armes de Départ disponible" }, + { "LanguageCode": "it", "Message": "Pacchetto Starter Weapon Disponibile Ora" }, + { "LanguageCode": "de", "Message": "Starter-Waffenpaket jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "El Paquete de Iniciación de Armas ya está disponible" }, + { "LanguageCode": "pt", "Message": "O Pacote Iniciante de Arma já está disponível" }, + { "LanguageCode": "ru", "Message": "Стартовый оружейный набор уже доступен" }, + { "LanguageCode": "pl", "Message": "Pakiet Startowy Broni już dostępny" }, + { "LanguageCode": "uk", "Message": "Набір зброї початківця вже доступний" }, + { "LanguageCode": "tr", "Message": "Başlangıç Silah Paketi Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "スターター武器パックが登場" }, + { "LanguageCode": "zh", "Message": "入门武器组合包现已推出" }, + { "LanguageCode": "ko", "Message": "스타터 무기 팩을 지금 만나보세요" } + ], + "Prop": "https://www.warframe.com/starter-weapon-pack?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-StarterWeaponPackLaunchIGN", + "Date": { "$date": { "$numberLong": "1708459620000" } }, + "ImageUrl": "https://www-static.warframe.com/images/starter-pack-ios/mastead-art-desktop.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d512fca06b4d92fa080fa5" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Warframe on iOS Available Now" }, + { "LanguageCode": "fr", "Message": "Warframe sur iOS : Disponible" }, + { "LanguageCode": "it", "Message": "Warframe su iOS Ora Disponibile" }, + { "LanguageCode": "de", "Message": "Warframe für iOS ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "Warframe en iOS disponible ya" }, + { "LanguageCode": "pt", "Message": "O Warframe já está disponível para iOS" }, + { "LanguageCode": "ru", "Message": "Игра Warframe для iOS станет уже доступна" }, + { "LanguageCode": "pl", "Message": "Warframe na iOS dostępny już teraz" }, + { "LanguageCode": "uk", "Message": "Warframe на iOS уже доступний" }, + { "LanguageCode": "tr", "Message": "Warframe Şimdi iOS'ta Sizlerle" }, + { "LanguageCode": "ja", "Message": "iOS版Warframeが登場" }, + { "LanguageCode": "zh", "Message": "iOS 版《Warframe》现已登场!" }, + { "LanguageCode": "ko", "Message": "워프레임을 지금 iOS에서 만나보세요" }, + { "LanguageCode": "tc", "Message": "iOS 版 Warframe 現已登場" } + ], + "Prop": "https://www.warframe.com/news/warframe-on-ios?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-iOSLaunchDay", + "Date": { "$date": { "$numberLong": "1708462800000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/6e010834485cd78f5dc26ebbcb329de8_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d6037cd5351737f6082182" }, + "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops 20 - 25 de Febrero" }], + "Prop": "https://forums.warframe.com/topic/1385160-programa-de-streams-y-twitch-drops-20-25-de-febrero/", + "Date": { "$date": { "$numberLong": "1708524300000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65d668feca0b2316ca050a2a" }, + "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.1.1" }], + "Prop": "https://www.warframe.com/updates/pc/35-1-1", + "Date": { "$date": { "$numberLong": "1708549740000" } }, "Priority": true, "MobileOnly": false }, { - "_id": { "$oid": "65b13d134d6668fdf30eecc0" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Lunar New Year 2024" }, - { "LanguageCode": "fr", "Message": "Nouvel An Lunaire 2024" }, - { "LanguageCode": "it", "Message": "Nuovo Anno Lunare 2024" }, - { "LanguageCode": "de", "Message": "Neues Mondjahr 2024" }, - { "LanguageCode": "es", "Message": "Año Nuevo Lunar 2024" }, - { "LanguageCode": "pt", "Message": "Ano Novo Lunar 2024" }, - { "LanguageCode": "ru", "Message": "Лунный Новый Год - 2024" }, - { "LanguageCode": "pl", "Message": "Księżycowy Nowy Rok 2024" }, - { "LanguageCode": "uk", "Message": "Місячний Новий рік 2024" }, - { "LanguageCode": "tr", "Message": "2024 Yeni Ay Yılı" }, - { "LanguageCode": "ja", "Message": "ルナーリニューアル2024" }, - { "LanguageCode": "zh", "Message": "农历新年 2024" }, - { "LanguageCode": "ko", "Message": "2024년 음력설" }, - { "LanguageCode": "tc", "Message": "農歷新年 2024" } - ], - "Prop": "https://www.warframe.com/news/lunar-new-year-2024?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-LunarNewYearLaunchIGN", - "Date": { "$date": { "$numberLong": "1706114100000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/1fdc03befd9fd26a6709646b696ce1e9_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65b140bcb79a3d0c010f86e0" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes de mise à jour : 35.0.11" }], - "Prop": "https://forums.warframe.com/topic/1382071-murmures-dans-les-murs%C2%A0-correctif-35011/", - "Date": { "$date": { "$numberLong": "1706115180000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65b17f9bf9409f11d20b06c3" }, - "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.0.11" }], - "Prop": "https://forums.warframe.com/topic/1382111-susurros-en-las-paredes-revisi%C3%B3n-35011/", - "Date": { "$date": { "$numberLong": "1706131320000" } }, + "_id": { "$oid": "65d679ad8289d4fbd80c4681" }, + "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.1.1" }], + "Prop": "https://forums.warframe.com/topic/1385254-susurros-en-las-paredes-revisi%C3%B3n-3511/", + "Date": { "$date": { "$numberLong": "1708554600000" } }, "Priority": false, "MobileOnly": false, "Community": true + }, + { + "_id": { "$oid": "65d7a2ee476834ce60013b92" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Mesa Statue Collection Available Now!" }, + { "LanguageCode": "fr", "Message": "Statue de Mesa de collection, disponible maintenant !" }, + { "LanguageCode": "it", "Message": "Collezione Statua di Mesa Disponibile Ora!" }, + { "LanguageCode": "de", "Message": "Mesa Statue-Kollektion ist jetzt verfügbar!" }, + { "LanguageCode": "es", "Message": "¡La colección Estatua de Mesa ya está disponible!" }, + { "LanguageCode": "pt", "Message": "A Coleção da Estátua da Mesa já está disponível!" }, + { "LanguageCode": "pl", "Message": "Kolekcjonerska Statuetka Mesy jest już dostępna!" }, + { "LanguageCode": "tr", "Message": "Mesa Heykel Koleksiyonu Şimdi Satışta!" }, + { "LanguageCode": "ja", "Message": "Mesa フィギュアコレクションが登場!" }, + { "LanguageCode": "zh", "Message": "Mesa 雕像组合包现已推出!" }, + { "LanguageCode": "ko", "Message": "메사 스태츄 컬렉션을 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "Mesa 雕像組合包現已登場!" } + ], + "Prop": "https://store.warframe.com/products/gunslinger-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-Merch-MesaStatueLaunch", + "Date": { "$date": { "$numberLong": "1708628280000" } }, + "EventStartDate": { "$date": { "$numberLong": "1708630200000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/e8bc0056ce8dc8275d0abf85c9836368_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d8d23b76ca4ce4e30a0e6d" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Початкова збірка Warframe для iOS: що всередині " }], + "Prop": "https://forums.warframe.com/topic/1385458-%D0%BF%D0%BE%D1%87%D0%B0%D1%82%D0%BA%D0%BE%D0%B2%D0%B0-%D0%B7%D0%B1%D1%96%D1%80%D0%BA%D0%B0-warframe-%D0%B4%D0%BB%D1%8F-ios-%D1%89%D0%BE-%D0%B2%D1%81%D0%B5%D1%80%D0%B5%D0%B4%D0%B8%D0%BD%D1%96-%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-35011-%C2%AB%D1%88%D0%B5%D0%BF%D1%96%D1%82-%D1%83-%D1%81%D1%82%D1%96%D0%BD%D0%B0%D1%85%C2%BB/", + "Date": { "$date": { "$numberLong": "1708708320000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/image.png.931a2ed8e142bf144c1de283a9d6f1cf.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d9033157765057180d1a4c" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Warframe Returns to PAX East" }, + { "LanguageCode": "fr", "Message": "Warframe revient à la PAX East" }, + { "LanguageCode": "it", "Message": "Warframe Torna al PAX East" }, + { "LanguageCode": "de", "Message": "Warframe kehrt zur PAX East zurück" }, + { "LanguageCode": "es", "Message": "Warframe regresa al PAX East" }, + { "LanguageCode": "pt", "Message": "O Warframe retorna à PAX East" }, + { "LanguageCode": "ru", "Message": "Warframe возвращается на PAX East" }, + { "LanguageCode": "pl", "Message": "Warframe powraca na Pax East" }, + { "LanguageCode": "uk", "Message": "Warframe повертається на «PAX East»" }, + { "LanguageCode": "tr", "Message": "Warframe, PAX East'e Geri Dönüyor" }, + { "LanguageCode": "ja", "Message": "WarframeがPAX Eastに再参加" }, + { "LanguageCode": "zh", "Message": "《Warframe》重返 PAX East" }, + { "LanguageCode": "ko", "Message": "워프레임이 PAX East로 돌아왔습니다" }, + { "LanguageCode": "tc", "Message": "Warframe 重返 PAX East" } + ], + "Prop": "https://www.warframe.com/news/tennovip-at-pax-east-2024?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-WarframeatPaxEastIGN", + "Date": { "$date": { "$numberLong": "1708720800000" } }, + "EventEndDate": { "$date": { "$numberLong": "1709874000000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/5a0951db27bc80990ca7c6531b87415b_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d9059c63a3a89f39076ccf" }, + "Messages": [ + { "LanguageCode": "en", "Message": "TennoCon 2024 Tickets on Sale Mar 28" }, + { "LanguageCode": "fr", "Message": "Tickets TennoCon 2024 en vente le 28 mars" }, + { "LanguageCode": "it", "Message": "Biglietti TennoCon 2024 - in vendita dal 28 Marzo" }, + { "LanguageCode": "de", "Message": "TennoCon 2024 Tickets sind ab dem 28. März verfügbar" }, + { "LanguageCode": "es", "Message": "Los boletos de la TennoCon 2024 saldrán a la venta el 28 de marzo" }, + { "LanguageCode": "pt", "Message": "Os ingressos para TennoCon 2024 estarão à venda no dia 28 de março" }, + { "LanguageCode": "ru", "Message": "Билеты на TennoCon 2024 поступят в продажу 28 марта" }, + { "LanguageCode": "pl", "Message": "Sprzedaż biletów TennoCon 2024 rozpoczyna się 28 marca" }, + { "LanguageCode": "uk", "Message": "Продаж фізичних квитків на Теннокон 2024 починається 28 березня" }, + { "LanguageCode": "tr", "Message": "TennoCon 2024 Biletleri 28 Mart'ta Satışa Sunuluyor" }, + { "LanguageCode": "ja", "Message": "TennoCon 2024チケットが3月29日から販売開始" }, + { "LanguageCode": "zh", "Message": "TennoCon 2024 门票将于美东夏令时间 3 月 28 日发售" }, + { "LanguageCode": "ko", "Message": "텐노콘 2024 티켓이 북미 시각 3월 28일부터 시작됩니다" }, + { "LanguageCode": "tc", "Message": "TennoCon 2024 門票將於美東夏令時間 2024 年 3 月 28 日開始發售" } + ], + "Prop": "https://www.warframe.com/tennocon?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-TennoConTicketSalesDateAnnounceIGN", + "Date": { "$date": { "$numberLong": "1708720920000" } }, + "EventEndDate": { "$date": { "$numberLong": "1711515600000" } }, + "ImageUrl": "https://www-static.warframe.com/images/tennocon/2024/WF_TennoCon_TicketSalesAnnounce_1920x1080.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d915b339ac8e5162092b7a" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Dante Unbound launches in March" }, + { "LanguageCode": "fr", "Message": "Dante Libéré arrive en mars" }, + { "LanguageCode": "it", "Message": "Dante Unbound verrà rilasciato in Marzo" }, + { "LanguageCode": "de", "Message": "\"Dante entfesselt\" startet im März" }, + { "LanguageCode": "es", "Message": "«Dante Liberado» se lanzará en marzo" }, + { "LanguageCode": "pt", "Message": "A atualização ''Dante Libertado'' será lançada em março" }, + { "LanguageCode": "ru", "Message": "«Данте на свободе» выйдет в марте" }, + { "LanguageCode": "pl", "Message": "Wyzwolenie Dantego nadchodzi w marcu" }, + { "LanguageCode": "uk", "Message": "«Данте вільний» виходить у березні" }, + { "LanguageCode": "tr", "Message": "Dante Unbound Mart ayında sizlerle buluşacak" }, + { "LanguageCode": "ja", "Message": "「解き放たれしDante」が3月に実装予定" }, + { "LanguageCode": "zh", "Message": "《Dante Unbound》——将在三月推出!" }, + { "LanguageCode": "ko", "Message": "해방된 단테가 3월에 출시됩니다" }, + { "LanguageCode": "tc", "Message": "《Dante Unbound》於三月推出!" } + ], + "Prop": "https://www.warframe.com/news/dante-unbound-launches-in-march?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-DanteUnboundMonthAnnounceIGN", + "Date": { "$date": { "$numberLong": "1708723500000" } }, + "EventEndDate": { "$date": { "$numberLong": "1709874000000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/1cfd3147281580f7a1ce8ea6b7d1d1bf_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d91a2815bab1f31305f7b4" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Devstream 177 Recap: March Preview" }, + { "LanguageCode": "fr", "Message": "Récapitulatif du Devstream 177 : aperçu de mars" }, + { "LanguageCode": "it", "Message": "Riassunto Devstream 177: Anteprima di Marzo" }, + { "LanguageCode": "de", "Message": "Devstream 177 Zusammenfassung: Vorschau für März" }, + { "LanguageCode": "es", "Message": "Resumen del Devstream 177: Vista previa de marzo" }, + { "LanguageCode": "pt", "Message": "Recapitulação da Devstream 177: Prévia de Março" }, + { "LanguageCode": "ru", "Message": "Devstream 177: итоги и мартовский обзор" }, + { "LanguageCode": "pl", "Message": "Podsumowanie Devstreamu 177: przegląd marca" }, + { "LanguageCode": "uk", "Message": "Підсумок трансляції розробників № 177: огляд березня" }, + { "LanguageCode": "tr", "Message": "Devstream 177 Özeti: Mart Önizlemesi" }, + { "LanguageCode": "ja", "Message": "Devstream 177振り返り:3月プレビュー" }, + { "LanguageCode": "zh", "Message": "开发者直播 177 回顾:三月预览" }, + { "LanguageCode": "ko", "Message": "Devstream 177 요약: 3월 미리보기" }, + { "LanguageCode": "tc", "Message": "開發者直播 177 回顧:3 月預覽" } + ], + "Prop": "https://www.warframe.com/news/march-preview?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-Devstream177RecapIGN", + "Date": { "$date": { "$numberLong": "1708726440000" } }, + "EventEndDate": { "$date": { "$numberLong": "1709269200000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/16aa1e9a5ae21b2f91b47c59b1ed59be_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "65d973eb3c31d7aae0074c09" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #177 - version FR" }], + "Prop": "https://forums.warframe.com/topic/1385560-r%C3%A9sum%C3%A9-devstream-177-version-fr/", + "Date": { "$date": { "$numberLong": "1708749660000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/image.png.5f48538c274864dcf14af9879a4a97e8.png", + "Priority": false, + "MobileOnly": false } ], "Goals": [ { - "_id": { "$oid": "65ab6ac224bae9718b87d97c" }, - "Activation": { "$date": { "$numberLong": "1705946779012" } }, - "Expiry": { "$date": { "$numberLong": "1707761179012" } }, - "HealthPct": 0.2572128, - "VictimNode": "SolNode228", - "Regions": [2], + "_id": { "$oid": "65ba6c8607749814b67a6cc1" }, + "Activation": { "$date": { "$numberLong": "1706803200000" } }, + "Expiry": { "$date": { "$numberLong": "1709222400000" } }, + "Count": 0, + "Goal": 0, "Success": 0, - "Desc": "/Lotus/Language/GameModes/RecurringGhoulAlert", - "ToolTip": "/Lotus/Language/GameModes/RecurringGhoulAlertDesc", - "Icon": "/Lotus/Interface/Icons/Categories/IconGhouls256.png", - "Tag": "GhoulEmergence", - "JobAffiliationTag": "CetusSyndicate", - "JobCurrentVersion": { "$oid": "65b25e4b0000000000000008" }, - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [280, 280, 280, 420] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyHunt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [560, 560, 560, 820] - } - ], - "JobPreviousVersion": { "$oid": "65b23b240000000000000008" }, - "PreviousJobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyRes", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableARewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [300, 300, 300, 440] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Events/GhoulAlertBountyHunt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/GhoulBountyTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [560, 560, 560, 820] - } - ] + "Personal": true, + "Desc": "/Lotus/Language/Events/ValentinesFortunaName", + "ToolTip": "/Lotus/Language/Events/ValentinesFortunaName", + "Icon": "/Lotus/Interface/Icons/WorldStatePanel/ValentinesEventIcon.png", + "Tag": "FortunaValentines", + "Node": "SolarisUnitedHub1" + } + ], + "Alerts": [ + { + "_id": { "$oid": "65d75f27de42c3831505fe61" }, + "Activation": { "$date": { "$numberLong": "1708718400000" } }, + "Expiry": { "$date": { "$numberLong": "1708804800000" } }, + "MissionInfo": { + "location": "SolNode64", + "missionType": "MT_TERRITORY", + "faction": "FC_GRINEER", + "difficulty": 1, + "missionReward": { "credits": 10000, "items": ["/Lotus/StoreItems/Types/Recipes/Components/OrokinReactorBlueprint"] }, + "levelOverride": "/Lotus/Levels/Proc/Grineer/GrineerOceanDefense", + "enemySpec": "/Lotus/Types/Game/EnemySpecs/SeaLabGrineerDefenseA", + "minEnemyLevel": 10, + "maxEnemyLevel": 15, + "descText": "/Lotus/Language/Alerts/LotusGiftDesc", + "maxWaveNum": 2 + }, + "Tag": "LotusGift", + "ForceUnlock": true + }, + { + "_id": { "$oid": "65d75f7bde42c3831505fe64" }, + "Activation": { "$date": { "$numberLong": "1708718400000" } }, + "Expiry": { "$date": { "$numberLong": "1708804800000" } }, + "MissionInfo": { + "location": "SolNode132", + "missionType": "MT_INTEL", + "faction": "FC_GRINEER", + "difficulty": 1, + "missionReward": { "credits": 10000, "items": ["/Lotus/StoreItems/Types/Recipes/Components/OrokinCatalystBlueprint"] }, + "levelOverride": "/Lotus/Levels/Proc/Grineer/GrineerShipyardsSpy", + "enemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerShipyardsA", + "extraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/GrineerIntelTiersSquadSix", + "minEnemyLevel": 10, + "maxEnemyLevel": 15, + "descText": "/Lotus/Language/Alerts/LotusGiftDesc" + }, + "Tag": "LotusGift", + "ForceUnlock": true } ], - "Alerts": [], "Sorties": [ { - "_id": { "$oid": "65b13e8ebd022673185e07ca" }, - "Activation": { "$date": { "$numberLong": "1706115600000" } }, - "Expiry": { "$date": { "$numberLong": "1706202000000" } }, + "_id": { "$oid": "65da1d0d1d1e075674dd7b5d" }, + "Activation": { "$date": { "$numberLong": "1708794000000" } }, + "Expiry": { "$date": { "$numberLong": "1708880400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 76908, - "Boss": "SORTIE_BOSS_KRIL", + "Seed": 21676, + "Boss": "SORTIE_BOSS_INFALAD", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode11", "tileset": "GrineerSettlementTileset" }, - { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode31", "tileset": "GrineerGalleonTileset" }, - { "missionType": "MT_SURVIVAL", "modifierType": "SORTIE_MODIFIER_HAZARD_ICE", "node": "SolNode225", "tileset": "GrineerGalleonTileset" } + { "missionType": "MT_HIVE", "modifierType": "SORTIE_MODIFIER_ELECTRICITY", "node": "SolNode171", "tileset": "InfestedCorpusShipTileset" }, + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode138", "tileset": "GrineerShipyardsTileset" }, + { "missionType": "MT_DEFENSE", "modifierType": "SORTIE_MODIFIER_SHOTGUN_ONLY", "node": "SolNode74", "tileset": "CorpusGasCityTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "65adac7e7b431e2243e17729" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, + "_id": { "$oid": "65d2967d22c7212c62aec3af" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 41119, - "Boss": "SORTIE_BOSS_NIRA", + "Seed": 80876, + "Boss": "SORTIE_BOSS_BOREAL", "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode121" }, - { "missionType": "MT_DEFENSE", "node": "SolNode100" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } + { "missionType": "MT_EXTERMINATION", "node": "SolNode59" }, + { "missionType": "MT_DEFENSE", "node": "SolNode27" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "65b141d68c8556d2b618ba63" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "ArbitersSyndicate", - "Seed": 76908, - "Nodes": ["SolNode123", "SolNode36", "SolNode97", "SolNode214", "SolNode167", "SolNode63", "SolNode103"] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba64" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 8165, - "Nodes": ["SolNode75", "SolNode68", "SolNode226", "SolNode212", "SolNode138", "SolNode409", "SolNode125"] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba67" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "KahlSyndicate", - "Seed": 49021, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba65" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 64190, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba66" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "EventSyndicate", - "Seed": 50600, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba68" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 64700, - "Nodes": ["SolNode41", "SolNode130", "SolNode2", "SolNode100", "SolNode18", "SolNode402", "SolNode209"] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba69" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "QuillsSyndicate", - "Seed": 5448, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba6a" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "PerrinSyndicate", - "Seed": 88616, - "Nodes": ["SolNode109", "SolNode12", "SolNode58", "SolNode710", "SolNode172", "SolNode189", "SolNode56"] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba6c" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 28171, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba6e" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 18301, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba6d" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 38372, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba6f" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 32462, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba6b" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 8377, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba71" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 47437, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba73" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 14162, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba75" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 82017, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba74" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 37454, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba76" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 64209, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba70" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 52771, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba72" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 36522, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba77" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 30017, - "Nodes": ["SolNode224", "SolNode46", "SolNode709", "SettlementNode14", "SolNode204", "SolNode187", "SolNode162"] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba78" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 89360, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba79" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "VoxSyndicate", - "Seed": 58460, - "Nodes": [] - }, - { - "_id": { "$oid": "65b141d68c8556d2b618ba7a" }, - "Activation": { "$date": { "$numberLong": "1706115542067" } }, - "Expiry": { "$date": { "$numberLong": "1706201940000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 59633, - "Nodes": ["SolNode89", "SolNode113", "SolNode70", "SettlementNode12", "SolNode166", "SolNode191", "SolNode50"] - }, - { - "_id": { "$oid": "65b25e4b0000000000000028" }, - "Activation": { "$date": { "$numberLong": "1706188363473" } }, - "Expiry": { "$date": { "$numberLong": "1706197362346" } }, - "Tag": "ZarimanSyndicate", - "Seed": 43557, - "Nodes": [] - }, - { - "_id": { "$oid": "65b25e4b0000000000000004" }, - "Activation": { "$date": { "$numberLong": "1706188363473" } }, - "Expiry": { "$date": { "$numberLong": "1706197362346" } }, - "Tag": "EntratiLabSyndicate", - "Seed": 43557, - "Nodes": [] - }, - { - "_id": { "$oid": "65b25e4b0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1706188363473" } }, - "Expiry": { "$date": { "$numberLong": "1706197362346" } }, + "_id": { "$oid": "65da0d2e0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1708789038291" } }, + "Expiry": { "$date": { "$numberLong": "1708798037165" } }, "Tag": "EntratiSyndicate", - "Seed": 43557, + "Seed": 64026, "Nodes": [], "Jobs": [ { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [6, 6, 6] + "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, "xpAmounts": [9, 9, 9] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", "masteryReq": 5, "minEnemyLevel": 25, @@ -768,23 +640,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [17, 17, 17, 26] + "xpAmounts": [19, 19, 19, 28] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [22, 22, 22, 22, 43] + "xpAmounts": [22, 22, 22, 22, 44] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -792,7 +664,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -801,7 +673,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -810,7 +682,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -821,122 +693,138 @@ ] }, { - "_id": { "$oid": "65b25e4b0000000000000008" }, - "Activation": { "$date": { "$numberLong": "1706188363473" } }, - "Expiry": { "$date": { "$numberLong": "1706197362346" } }, + "_id": { "$oid": "65da0d2e0000000000000004" }, + "Activation": { "$date": { "$numberLong": "1708789038291" } }, + "Expiry": { "$date": { "$numberLong": "1708798037165" } }, + "Tag": "EntratiLabSyndicate", + "Seed": 64026, + "Nodes": [] + }, + { + "_id": { "$oid": "65da0d2e0000000000000028" }, + "Activation": { "$date": { "$numberLong": "1708789038291" } }, + "Expiry": { "$date": { "$numberLong": "1708798037165" } }, + "Tag": "ZarimanSyndicate", + "Seed": 64026, + "Nodes": [] + }, + { + "_id": { "$oid": "65da0d2e0000000000000008" }, + "Activation": { "$date": { "$numberLong": "1708789038291" } }, + "Expiry": { "$date": { "$numberLong": "1708798037165" } }, "Tag": "CetusSyndicate", - "Seed": 43557, + "Seed": 64026, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [370, 370, 370] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [730, 730, 730] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [660, 660, 660, 970] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [590, 590, 590, 590, 1160] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [730, 730, 730, 730, 1440] + "xpAmounts": [360, 360, 360] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [710, 710, 710] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [650, 650, 650, 950] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [600, 600, 600, 600, 1170] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [760, 760, 760, 760, 1490] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [790, 790, 790, 790, 1550] + "xpAmounts": [820, 820, 820, 820, 1610] } ] }, { - "_id": { "$oid": "65b25e4b0000000000000024" }, - "Activation": { "$date": { "$numberLong": "1706188363473" } }, - "Expiry": { "$date": { "$numberLong": "1706197362346" } }, + "_id": { "$oid": "65da0d2e0000000000000024" }, + "Activation": { "$date": { "$numberLong": "1708789038291" } }, + "Expiry": { "$date": { "$numberLong": "1708798037165" } }, "Tag": "SolarisSyndicate", - "Seed": 43557, + "Seed": 64026, "Nodes": [], "Jobs": [ { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [470, 470, 470] + "xpAmounts": [420, 420, 420] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [660, 660, 660] + "xpAmounts": [710, 710, 710] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 890] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [630, 630, 630, 630, 1230] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [720, 720, 720, 720, 1410] + "xpAmounts": [560, 560, 560, 830] }, { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [610, 610, 610, 610, 1190] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [730, 730, 730, 730, 1430] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -944,261 +832,409 @@ }, { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [760, 760, 760, 760, 1490] + "xpAmounts": [820, 820, 820, 820, 1610] } ] + }, + { + "_id": { "$oid": "65da20554841354e254ca056" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "ArbitersSyndicate", + "Seed": 21676, + "Nodes": ["SolNode66", "SolNode225", "SolNode131", "SolNode58", "SolNode181", "SolNode42", "SolNode204"] + }, + { + "_id": { "$oid": "65da20564841354e254ca058" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 84574, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca057" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 21297, + "Nodes": ["SolNode12", "SolNode22", "SolNode50", "SolNode59", "SolNode408", "SolNode76", "SolNode61"] + }, + { + "_id": { "$oid": "65da20564841354e254ca059" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "EventSyndicate", + "Seed": 50974, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca05a" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "KahlSyndicate", + "Seed": 33706, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca05b" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 23203, + "Nodes": ["SolNode128", "SolNode119", "SolNode70", "SolNode30", "SolNode212", "SolNode26", "SolNode188"] + }, + { + "_id": { "$oid": "65da20564841354e254ca05c" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "QuillsSyndicate", + "Seed": 37870, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca05d" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "PerrinSyndicate", + "Seed": 45473, + "Nodes": ["SolNode75", "SolNode109", "SolNode711", "SolNode126", "SettlementNode1", "SolNode205", "SolNode223"] + }, + { + "_id": { "$oid": "65da20564841354e254ca05e" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 98411, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca05f" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 45109, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca060" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 82831, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca062" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 85666, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca061" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 31638, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca063" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 2015, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca065" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 64880, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca064" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 56300, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca066" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 73744, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca067" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 14064, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca068" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 24419, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca069" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 39687, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca06a" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 46596, + "Nodes": ["SolNode103", "SolNode14", "SolNode39", "SolNode101", "SolNode31", "SolNode164", "SolNode195"] + }, + { + "_id": { "$oid": "65da20564841354e254ca06c" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "VoxSyndicate", + "Seed": 1788, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca06b" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 89117, + "Nodes": [] + }, + { + "_id": { "$oid": "65da20564841354e254ca06d" }, + "Activation": { "$date": { "$numberLong": "1708793941965" } }, + "Expiry": { "$date": { "$numberLong": "1708880340000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 47148, + "Nodes": ["SolNode107", "SolNode89", "SolNode708", "SolNode137", "SettlementNode15", "SolNode130", "SolNode6"] } ], "ActiveMissions": [ { - "_id": { "$oid": "65b24fd5f4b71e28b251b3c9" }, - "Region": 16, - "Seed": 6118, - "Activation": { "$date": { "$numberLong": "1706184661538" } }, - "Expiry": { "$date": { "$numberLong": "1706191046761" } }, - "Node": "SettlementNode14", - "MissionType": "MT_INTEL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "65b24fd5f4b71e28b251b3ca" }, - "Region": 10, - "Seed": 35862, - "Activation": { "$date": { "$numberLong": "1706184661538" } }, - "Expiry": { "$date": { "$numberLong": "1706191223622" } }, - "Node": "SolNode147", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "65b2513deec0e5515b872ff4" }, - "Region": 13, - "Seed": 44943, - "Activation": { "$date": { "$numberLong": "1706185021956" } }, - "Expiry": { "$date": { "$numberLong": "1706191124596" } }, - "Node": "SolNode211", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "65b251f1e8fdfd1d5af5eaa2" }, - "Region": 2, - "Seed": 48148, - "Activation": { "$date": { "$numberLong": "1706185201485" } }, - "Expiry": { "$date": { "$numberLong": "1706191495444" } }, - "Node": "SolNode22", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "65b251f1e8fdfd1d5af5eaa3" }, - "Region": 3, - "Seed": 11637, - "Activation": { "$date": { "$numberLong": "1706185201485" } }, - "Expiry": { "$date": { "$numberLong": "1706191437768" } }, - "Node": "SolNode89", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "65b25666660026964d77ff05" }, + "_id": { "$oid": "65da0f75b8e502a471e12865" }, "Region": 19, - "Seed": 14729, - "Activation": { "$date": { "$numberLong": "1706186342092" } }, - "Expiry": { "$date": { "$numberLong": "1706191493274" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", + "Seed": 66644, + "Activation": { "$date": { "$numberLong": "1708789621431" } }, + "Expiry": { "$date": { "$numberLong": "1708795313520" } }, + "Node": "SolNode742", + "MissionType": "MT_DEFENSE", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "65b2575505da9552426a0928" }, + "_id": { "$oid": "65da0f75b8e502a471e12866" }, + "Region": 19, + "Seed": 916, + "Activation": { "$date": { "$numberLong": "1708789621431" } }, + "Expiry": { "$date": { "$numberLong": "1708794527293" } }, + "Node": "SolNode745", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "65da10de1f18fd228f893743" }, + "Region": 2, + "Seed": 44444, + "Activation": { "$date": { "$numberLong": "1708789981994" } }, + "Expiry": { "$date": { "$numberLong": "1708794861703" } }, + "Node": "SolNode23", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "65da14626ae446e07da5977a" }, + "Region": 2, + "Seed": 99725, + "Activation": { "$date": { "$numberLong": "1708790882110" } }, + "Expiry": { "$date": { "$numberLong": "1708796932694" } }, + "Node": "SolNode2", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "65da1732da6a951f5c6c5c47" }, + "Region": 10, + "Seed": 95856, + "Activation": { "$date": { "$numberLong": "1708791602091" } }, + "Expiry": { "$date": { "$numberLong": "1708796299830" } }, + "Node": "SolNode149", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65da17e5c031da85483a2514" }, "Region": 12, - "Seed": 80548, - "Activation": { "$date": { "$numberLong": "1706186581233" } }, - "Expiry": { "$date": { "$numberLong": "1706193364788" } }, + "Seed": 89464, + "Activation": { "$date": { "$numberLong": "1708791781584" } }, + "Expiry": { "$date": { "$numberLong": "1708796470128" } }, "Node": "SolNode185", "MissionType": "MT_TERRITORY", "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "65b2575505da9552426a0929" }, + "_id": { "$oid": "65da17e5c031da85483a2515" }, "Region": 11, - "Seed": 55560, - "Activation": { "$date": { "$numberLong": "1706186581233" } }, - "Expiry": { "$date": { "$numberLong": "1706192648739" } }, - "Node": "SolNode175", - "MissionType": "MT_HIVE", + "Seed": 7275, + "Activation": { "$date": { "$numberLong": "1708791781584" } }, + "Expiry": { "$date": { "$numberLong": "1708797253304" } }, + "Node": "SolNode166", + "MissionType": "MT_SURVIVAL", "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "65b259adaecb54752afad9fc" }, - "Region": 15, - "Seed": 69163, - "Activation": { "$date": { "$numberLong": "1706187181408" } }, - "Expiry": { "$date": { "$numberLong": "1706194191477" } }, - "Node": "SolNode402", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "65b259adaecb54752afad9fd" }, - "Region": 8, - "Seed": 49525, - "Activation": { "$date": { "$numberLong": "1706187181408" } }, - "Expiry": { "$date": { "$numberLong": "1706192097281" } }, - "Node": "SolNode62", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "65b25bc958fb85f81847da3d" }, - "Region": 11, - "Seed": 85623, - "Activation": { "$date": { "$numberLong": "1706187721137" } }, - "Expiry": { "$date": { "$numberLong": "1706192724073" } }, - "Node": "SolNode164", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65b25bc958fb85f81847da3e" }, + "_id": { "$oid": "65da194de9cef06a87414046" }, "Region": 12, - "Seed": 44998, - "Activation": { "$date": { "$numberLong": "1706187721137" } }, - "Expiry": { "$date": { "$numberLong": "1706193977801" } }, - "Node": "SolNode195", - "MissionType": "MT_DEFENSE", + "Seed": 77585, + "Activation": { "$date": { "$numberLong": "1708792141577" } }, + "Expiry": { "$date": { "$numberLong": "1708796904850" } }, + "Node": "SolNode177", + "MissionType": "MT_ARTIFACT", "Modifier": "VoidT4" }, { - "_id": { "$oid": "65b25bc958fb85f81847da3f" }, + "_id": { "$oid": "65da194de9cef06a87414047" }, + "Region": 11, + "Seed": 30375, + "Activation": { "$date": { "$numberLong": "1708792141577" } }, + "Expiry": { "$date": { "$numberLong": "1708798761177" } }, + "Node": "SolNode162", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "65da194de9cef06a87414048" }, "Region": 9, - "Seed": 11368, - "Activation": { "$date": { "$numberLong": "1706187721137" } }, - "Expiry": { "$date": { "$numberLong": "1706194804134" } }, - "Node": "SolNode21", - "MissionType": "MT_EXTERMINATION", + "Seed": 18556, + "Activation": { "$date": { "$numberLong": "1708792141577" } }, + "Expiry": { "$date": { "$numberLong": "1708796775998" } }, + "Node": "SolNode102", + "MissionType": "MT_INTEL", "Modifier": "VoidT4" }, { - "_id": { "$oid": "65b25c417b53dcc08f43dc42" }, + "_id": { "$oid": "65da19c5bcb38b7c35cf0438" }, "Region": 19, - "Seed": 94892, - "Activation": { "$date": { "$numberLong": "1706187841508" } }, - "Expiry": { "$date": { "$numberLong": "1706193967350" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", + "Seed": 79227, + "Activation": { "$date": { "$numberLong": "1708792261563" } }, + "Expiry": { "$date": { "$numberLong": "1708799328337" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", "Modifier": "VoidT5" }, { - "_id": { "$oid": "65b25c417b53dcc08f43dc43" }, + "_id": { "$oid": "65da19c5bcb38b7c35cf0439" }, "Region": 19, - "Seed": 61453, - "Activation": { "$date": { "$numberLong": "1706187841508" } }, - "Expiry": { "$date": { "$numberLong": "1706194621088" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", + "Seed": 80355, + "Activation": { "$date": { "$numberLong": "1708792261563" } }, + "Expiry": { "$date": { "$numberLong": "1708799386141" } }, + "Node": "SolNode744", + "MissionType": "MT_SURVIVAL", "Modifier": "VoidT5" }, { - "_id": { "$oid": "65b25e5d01c4c6e94c0308fd" }, + "_id": { "$oid": "65da19c5bcb38b7c35cf043a" }, + "Region": 19, + "Seed": 84029, + "Activation": { "$date": { "$numberLong": "1708792261563" } }, + "Expiry": { "$date": { "$numberLong": "1708797604775" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65da1c95d85bc17a8027c084" }, + "Region": 13, + "Seed": 49327, + "Activation": { "$date": { "$numberLong": "1708792981940" } }, + "Expiry": { "$date": { "$numberLong": "1708799364287" } }, + "Node": "SolNode215", + "MissionType": "MT_INTEL", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "65da1c95d85bc17a8027c085" }, + "Region": 8, + "Seed": 86479, + "Activation": { "$date": { "$numberLong": "1708792981940" } }, + "Expiry": { "$date": { "$numberLong": "1708798261971" } }, + "Node": "SolNode57", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "65da1e7628a8acc24eb10fe1" }, + "Region": 7, + "Seed": 19643, + "Activation": { "$date": { "$numberLong": "1708793462116" } }, + "Expiry": { "$date": { "$numberLong": "1708798334911" } }, + "Node": "SolNode64", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "65da1e7628a8acc24eb10fe2" }, + "Region": 8, + "Seed": 82309, + "Activation": { "$date": { "$numberLong": "1708793462116" } }, + "Expiry": { "$date": { "$numberLong": "1708799817827" } }, + "Node": "SolNode84", + "MissionType": "MT_INTEL", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "65da2019ef057ab9d6df2dfe" }, "Region": 5, - "Seed": 21125, - "Activation": { "$date": { "$numberLong": "1706188381165" } }, - "Expiry": { "$date": { "$numberLong": "1706193632515" } }, - "Node": "SolNode74", - "MissionType": "MT_MOBILE_DEFENSE", + "Seed": 60603, + "Activation": { "$date": { "$numberLong": "1708793881799" } }, + "Expiry": { "$date": { "$numberLong": "1708798796523" } }, + "Node": "SolNode73", + "MissionType": "MT_CAPTURE", "Modifier": "VoidT2" }, { - "_id": { "$oid": "65b263fde7e465acf52b363e" }, - "Region": 2, - "Seed": 86913, - "Activation": { "$date": { "$numberLong": "1706189821856" } }, - "Expiry": { "$date": { "$numberLong": "1706193902216" } }, - "Node": "SolNode107", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "65b263fde7e465acf52b363f" }, - "Region": 3, - "Seed": 24477, - "Activation": { "$date": { "$numberLong": "1706189821856" } }, - "Expiry": { "$date": { "$numberLong": "1706196725917" } }, - "Node": "SolNode39", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT1" + "_id": { "$oid": "65da2019ef057ab9d6df2dff" }, + "Region": 10, + "Seed": 79201, + "Activation": { "$date": { "$numberLong": "1708793881799" } }, + "Expiry": { "$date": { "$numberLong": "1708800748600" } }, + "Node": "SolNode146", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT2" } ], "GlobalUpgrades": [], "FlashSales": [ - { - "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleC", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 575, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 70, - "StartDate": { "$date": { "$numberLong": "1688216400000" } }, - "EndDate": { "$date": { "$numberLong": "1719838800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1735689600000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/LNYDragonEphemera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "ShowInMarket": true, @@ -1209,35 +1245,8 @@ "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1701103800000" } }, - "EndDate": { "$date": { "$numberLong": "1893516600000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1735689600000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleB", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 295, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + "StartDate": { "$date": { "$numberLong": "1672591560000" } }, + "EndDate": { "$date": { "$numberLong": "1895849220000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", @@ -1253,45 +1262,42 @@ "EndDate": { "$date": { "$numberLong": "1736767380000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", + "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, - "HideFromMarket": true, + "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, + "PremiumOverride": 70, + "StartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EndDate": { "$date": { "$numberLong": "1719838800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1735745220000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "RegularOverride": 0, "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704187920000" } }, - "EndDate": { "$date": { "$numberLong": "1735723920000" } } + "BogoBuy": 0, + "BogoGet": 0 }, { - "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "StartDate": { "$date": { "$numberLong": "1661173200000" } }, + "EndDate": { "$date": { "$numberLong": "1735689600000" } }, "ShowInMarket": true, "HideFromMarket": false, - "SupporterPack": false, + "SupporterPack": true, "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 30, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, + "PremiumOverride": 1, "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + "BogoGet": 0 }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackC", @@ -1306,6 +1312,19 @@ "StartDate": { "$date": { "$numberLong": "1704187800000" } }, "EndDate": { "$date": { "$numberLong": "1735723800000" } } }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704187920000" } }, + "EndDate": { "$date": { "$numberLong": "1735723920000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", "ShowInMarket": true, @@ -1320,67 +1339,14 @@ "EndDate": { "$date": { "$numberLong": "1735723860000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Dragon/ChromaLNYSkin", + "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleC", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 165, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1895482620000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 85, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1701103860000" } }, - "EndDate": { "$date": { "$numberLong": "1893516660000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 65, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1702381620000" } }, - "EndDate": { "$date": { "$numberLong": "1706788020000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Ogris", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, + "PremiumOverride": 575, "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, @@ -1401,14 +1367,14 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Types/Items/Emotes/LNY2024DragonEmote", + "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleB", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 25, + "PremiumOverride": 295, "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, @@ -1428,6 +1394,19 @@ "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/Dragon/ChromaLNYSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 165, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1895587200000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/LNYBirdSugatra", "ShowInMarket": true, @@ -1443,42 +1422,28 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNYHookSword", + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 75, - "RegularOverride": 0, + "PremiumOverride": 0, + "RegularOverride": 1, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon", + "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 40, + "PremiumOverride": 30, "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, @@ -1499,7 +1464,7 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Nukor", + "TypeName": "/Lotus/Types/Items/Emotes/LNY2024DragonEmote", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1527,21 +1492,21 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground", + "TypeName": "/Lotus/Upgrades/Skins/Effects/LNYDragonEphemera", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 50, + "PremiumOverride": 60, "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Ogris", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1555,21 +1520,63 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatWhite", + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Nukor", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 35, + "PremiumOverride": 25, "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit", + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNYHookSword", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 75, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 85, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 40, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, @@ -1596,34 +1603,6 @@ "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/CNY2021Poster", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, { "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022IgnisSkin", "ShowInMarket": true, @@ -1638,76 +1617,6 @@ "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 45, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 15, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavat", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, { "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTiger", "ShowInMarket": true, @@ -1723,42 +1632,14 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Effects/PeachBlossomsEphemera", + "TypeName": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 15, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatGold", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, + "PremiumOverride": 50, "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, @@ -1779,14 +1660,14 @@ "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", + "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 25, + "PremiumOverride": 35, "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, @@ -1806,6 +1687,34 @@ "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 15, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/Effects/LunarEphemera", "ShowInMarket": true, @@ -1820,6 +1729,48 @@ "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/PeachBlossomsEphemera", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/CNY2021Poster", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 45, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022Zarr", "ShowInMarket": true, @@ -1834,6 +1785,132 @@ "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 15, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatWhite", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavat", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 25, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Valentine2017GlyphBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 80, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/Valentine2020GlyphBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024SentinelSkinBundle", "ShowInMarket": true, @@ -1847,17 +1924,238 @@ "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1708876800000" } }, "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatGold", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706112000000" } }, + "EndDate": { "$date": { "$numberLong": "1708876800000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/ConclaveHeartOroOrnament", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 50000, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerValItemA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704131940000" } }, + "EndDate": { "$date": { "$numberLong": "2051287140000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Alad", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Clem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017D", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017A", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Kuva", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Key", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017B", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017C", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017E", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1706803200000" } }, + "EndDate": { "$date": { "$numberLong": "1709222400000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1708343940000" } }, + "EndDate": { "$date": { "$numberLong": "1767268740000" } } } ], "InGameMarket": { "LandingPage": { "Categories": [ + { + "CategoryName": "POPULAR", + "Name": "/Lotus/Language/Menu/StorePopular", + "Icon": "popular", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", + "/Lotus/Types/StoreItems/Packages/WarframeBundles/QorvexItemsBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/SevagothDeluxeSkinBundle", + "/Lotus/StoreItems/Powersuits/Wraith/Wraith", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/EssentialTennokaiModPack", + "/Lotus/Types/StoreItems/Packages/DuvArmorBundle", + "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerItemB", + "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropNecraMechDrone", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/BirdPlush", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/FishPlush", + "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/DeerPlush", + "/Lotus/Types/StoreItems/Packages/KavatStarterKit", + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", + "/Lotus/Types/StoreItems/Packages/FormaPack" + ] + }, { "CategoryName": "SEASONAL", "Name": "/Lotus/Language/Store/SeasonalCategoryTitle", "Icon": "seasonal", "AddToMenu": true, "Items": [ + "/Lotus/Types/StoreItems/Packages/Valentine2020GlyphBundle", + "/Lotus/Types/StoreItems/Packages/Valentine2017GlyphBundle", "/Lotus/Types/StoreItems/Packages/LNY2024BundleC", "/Lotus/Types/StoreItems/Packages/LNY2024BundleB", "/Lotus/Types/StoreItems/Packages/LNY2024BundleA", @@ -1898,61 +2196,34 @@ "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavatWhite", "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavatGold", "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavat", - "/Lotus/StoreItems/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin" + "/Lotus/StoreItems/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", + "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerValItemA", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017A", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017B", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017C", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017D", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017E", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Alad", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Clem", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Key", + "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Kuva", + "/Lotus/StoreItems/Types/Items/ShipDecos/ConclaveHeartOroOrnament" ] }, { - "CategoryName": "POPULAR", - "Name": "/Lotus/Language/Menu/StorePopular", - "Icon": "popular", - "AddToMenu": true, + "CategoryName": "TENNOGEN", + "Name": "/Lotus/Language/Menu/Store_Tennogen", + "Icon": "tennogen", "Items": [ - "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeTokenPackC", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/DagathItemsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", - "/Lotus/StoreItems/Powersuits/Wraith/Wraith", - "/Lotus/StoreItems/Powersuits/EntratiMech/ThanoTech", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/Types/StoreItems/Packages/IncarnonPackages/BoarIncarnonBundle", - "/Lotus/Types/StoreItems/Packages/ColorPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", - "/Lotus/Types/StoreItems/Packages/FormaPack" - ] - }, - { - "CategoryName": "WHISPERS", - "Name": "/Lotus/Language/Store/WhispersInTheWallCategory", - "Icon": "updatepacks", - "AddToMenu": true, - "Items": [ - "/Lotus/Types/StoreItems/Packages/SanctumPack", - "/Lotus/Types/StoreItems/Packages/PowerPack", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/QorvexItemsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/SevagothDeluxeSkinBundle", - "/Lotus/StoreItems/Upgrades/Skins/Weapons/Grimoire/GrimoireSciFiSkin", - "/Lotus/StoreItems/Upgrades/Skins/Weapons/Grimoire/GrimoireFantasySkin", - "/Lotus/Types/StoreItems/Packages/ShipDecoBundleEntrati", - "/Lotus/StoreItems/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", - "/Lotus/StoreItems/Upgrades/Skins/Wraith/SevagothDeluxeSkin", - "/Lotus/StoreItems/Powersuits/ConcreteFrame/ConcreteFrame", - "/Lotus/StoreItems/Upgrades/Skins/ConcreteFrame/ConcreteFrameAltHelmet", - "/Lotus/StoreItems/Weapons/Tenno/Archwing/Primary/TnConcreteArchgun/TnConcreteArchgunWeapon", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/TnConcreteSyandana", - "/Lotus/StoreItems/Weapons/Thanotech/EntSphereHammer/EntSphereHammer", - "/Lotus/StoreItems/Upgrades/Skins/Crowns/DexVinesCrown", - "/Lotus/Types/StoreItems/Packages/KavatColorPackEntrati", - "/Lotus/Types/StoreItems/Packages/EssentialTennokaiModPack", - "/Lotus/Types/StoreItems/Packages/EssentialGrimoireModPack", - "/Lotus/Types/StoreItems/Packages/WitWGlyphsBundle", - "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropNecraMechDrone", - "/Lotus/StoreItems/Types/Items/ShipDecos/WitWSupporterPoster", - "/Lotus/StoreItems/Types/Items/ShipDecos/AlbrechtPortrait", - "/Lotus/StoreItems/Types/Items/ShipDecos/GrimoireAltar", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/BirdPlush", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/FishPlush", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/DeerPlush" + "/Lotus/StoreItems/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuFacialAccessory", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWSildargScarf", + "/Lotus/StoreItems/Upgrades/Skins/Volt/SWArresterVoltHelmet", + "/Lotus/StoreItems/Upgrades/Skins/Runner/SWGaussAgitoSkin", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWTsujinasaSyandana", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRepalaScarf", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWJotunheimScarf", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRSixSariScarf", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWIcariusScarf" ] }, { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "Items": [] }, @@ -1964,9 +2235,10 @@ "Items": [ "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", + "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", "/Lotus/Types/StoreItems/Packages/SanctumPack", - "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "/Lotus/Types/StoreItems/Packages/PowerPack", + "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier2StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier1StoreItem" ] @@ -1976,180 +2248,180 @@ }, "Invasions": [ { - "_id": { "$oid": "65afaef2351fb9694241497c" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode140", - "Count": -38640, - "Goal": 39000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "_id": { "$oid": "65d860e98b58d6053003df5a" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode102", + "Count": -34575, + "Goal": 48000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "65afaef2351fb9694241497c" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/DeraVandalBlueprint", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 140526, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithStock", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 247423, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1706079736855" } } + "ChainID": { "$oid": "65d1e58ad44a53195b17032d" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 789806, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 199172, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1708680195347" } } }, { - "_id": { "$oid": "65b0dd496d385f3f83c6efea" }, + "_id": { "$oid": "65d84f56fd2b901dc35c1ca3" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode132", + "Count": 31008, + "Goal": 31000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 299747, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 158959, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1708675595530" } } + }, + { + "_id": { "$oid": "65d84f56fd2b901dc35c1ca2" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode132", + "Count": 8167, + "Goal": 49000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 898272, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 43492, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1708675854616" } } + }, + { + "_id": { "$oid": "65d99fa9b02f277934a06c7a" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode147", + "Count": -24593, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 984730, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/LatronWraithBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 192451, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1708761746502" } } + }, + { + "_id": { "$oid": "65d8eeb594ad914fa86ef239" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode51", - "Count": -30041, + "Node": "SettlementNode20", + "Count": -30133, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": true, - "ChainID": { "$oid": "65b0b44543e5f2aaa5dc4238" }, + "ChainID": { "$oid": "65d8b2f2b0df712dee39ee74" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 600552, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 954621, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1706089801698" } } + "AttackerMissionInfo": { "seed": 923473, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 442408, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1708715701823" } } }, { - "_id": { "$oid": "65b17349abe69a3a398a8d4d" }, + "_id": { "$oid": "65d91d954fcb7065ef8905a6" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode66", - "Count": -45510, - "Goal": 45000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65b1352d098c8f312414469f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 23499, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 781631, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706128201446" } } - }, - { - "_id": { "$oid": "65b1909697c9b75ced9f84ee" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode128", - "Count": -37084, - "Goal": 37000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65b1352d098c8f312414469f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 974901, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 769298, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706135702032" } } - }, - { - "_id": { "$oid": "65b1909697c9b75ced9f84ef" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode107", - "Count": -41089, - "Goal": 41000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65b1352d098c8f312414469f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 583106, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 681515, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706135702032" } } - }, - { - "_id": { "$oid": "65b1b999811d9b9c33e7ec57" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode22", - "Count": -41537, - "Goal": 41000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65b1352d098c8f312414469f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 693218, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 836123, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706146201951" } } - }, - { - "_id": { "$oid": "65b138b186388735d7c58d22" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode1", - "Count": 9211, - "Goal": 37000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode32", + "Count": -27455, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "65b138b186388735d7c58d22" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/StrunWraithBlueprint", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 981099, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 422102, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1706177182387" } } - }, - { - "_id": { "$oid": "65b205c55df39847640455d2" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode107", - "Count": -30576, - "Goal": 45000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65b205c55df39847640455d2" }, + "ChainID": { "$oid": "65d8f5bd66e24ecc82e7a991" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 780491, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 560485, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706171815900" } } + "AttackerMissionInfo": { "seed": 421223, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 10373, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1708727701599" } } }, { - "_id": { "$oid": "65b24765b0239b3bf17f7658" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode22", - "Count": -2361, - "Goal": 32000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65b205c55df39847640455d2" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 498139, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 407506, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706182501259" } } - }, - { - "_id": { "$oid": "65b235d2d954aa89d952e263" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode216", - "Count": -5825, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65b235d2d954aa89d952e263" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 303978, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 511183, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706181532444" } } - }, - { - "_id": { "$oid": "65b262592f5fa492b6d35be5" }, + "_id": { "$oid": "65d9bcf5f65ed3947897b58e" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode220", - "Count": -97, + "Count": -46289, + "Goal": 46000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 355628, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 911342, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1708773545136" } } + }, + { + "_id": { "$oid": "65d9eaa98123e6c90ad19a64" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode210", + "Count": -4272, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": false, + "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 900634, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 12161, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1708780201094" } } + }, + { + "_id": { "$oid": "65d9eaa98123e6c90ad19a65" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode217", + "Count": -21032, + "Goal": 45000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 328283, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 577156, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1708780201094" } } + }, + { + "_id": { "$oid": "65da06ca9322f9250d48c2e4" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode209", + "Count": -2439, + "Goal": 31000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 371634, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 787945, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1708787402585" } } + }, + { + "_id": { "$oid": "65da1e3aee47d2139b366611" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode211", + "Count": -91, "Goal": 32000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "65b235d2d954aa89d952e263" }, + "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 445670, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 392073, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1706189401747" } } + "AttackerMissionInfo": { "seed": 785982, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 634649, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1708793402058" } } } ], "HubEvents": [], @@ -2157,7 +2429,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9828234 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9865942 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -2171,74 +2443,87 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } + }, + { + "_id": { "$oid": "65d99fa9b02f277934a06c79" }, + "Node": "SolNode132", + "Faction": "FC_CORPUS", + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadB", + "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/CorpusIntelTiersBDropship", + "Expiry": { "$date": { "$numberLong": "1708845325533" } } } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1706277600000" } }, - "Expiry": { "$date": { "$numberLong": "1706450400000" } }, + "Activation": { "$date": { "$numberLong": "1708696800000" } }, + "Expiry": { "$date": { "$numberLong": "1708869600000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "PlutoHUB" + "Node": "MercuryHUB", + "Manifest": [ + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Events/InfQuantaInfestedAladV", "PrimePrice": 325, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventRifleImpactDamageMod", "PrimePrice": 330, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponCritDamageModExpert", "PrimePrice": 280, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTDinoSpikeScarf", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaGrakata", "PrimePrice": 610, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA", "PrimePrice": 150, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTQuanta", "PrimePrice": 300, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaMachete", "PrimePrice": 400, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisOdonataSkin", "PrimePrice": 350, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Harlequin/MirageAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/KubrowArmorPrisma", "PrimePrice": 400, "RegularPrice": 175000 }, + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon", "PrimePrice": 80, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Hoverboard/HoverboardStickerBaroA", "PrimePrice": 75, "RegularPrice": 75000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConI", "PrimePrice": 75, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", "PrimePrice": 350, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", "PrimePrice": 400, "RegularPrice": 350000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BekranZaftBucketBroom", "PrimePrice": 100, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", "PrimePrice": 350, "RegularPrice": 375000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisNikana", "PrimePrice": 375, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } + ] } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1705604400000" } }, + "Activation": { "$date": { "$numberLong": "1708023600000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtlasVaubanPrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVSarynPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtlasPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVaubanPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Berserker/ValkyrPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinPrime", "PrimePrice": 1 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVSaitaPrimeSuit", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Bows/PrimeCernos/PrimeCernos", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeVenKa/PrimeVenkaClaws", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Saryn/SarynPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Characters/Tenno/Accessory/Scarves/PrimeScarfD/Cloth/PrimeScarfDItem", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilSaryn", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/ThrowingWeapons/PrimeLiDagger/PrimeLiDagger", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeKatana/PrimeNikana", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Brawler/AtlasPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfAtlas", "PrimePrice": 2 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOrcusPrimeSentAccessories", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeTekko/PrimeTekko", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeDethCubePowerSuit", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Trapper/TrapperPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfV", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/CatenoPrimeMeleeDangle", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeFragor/PrimeFragor", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeAkstiletto/PrimeAkstiletto", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/SarynPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ValkyrPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/AtlasPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/VaubanPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionAtlasVaubanVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionAtlasVaubanVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionAtlasVaubanVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionAtlasVaubanVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionSarynValkyrVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionSarynValkyrVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionSarynValkyrVaultABronze", "RegularPrice": 1 } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheePrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMiragePrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Banshee/BansheePrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfF", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVIctusPrimeSentAccessories", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeHeliosPowerSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/AllNew1hSG/AllNew1hSG", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Harlequin/MiragePrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtavistPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfG", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeKogake/KogakePrimeKnuckles", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeAkbolto/PrimeAkBoltoWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BansheePrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/MiragePrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1706814000000" } }, + "Expiry": { "$date": { "$numberLong": "1710442800000" } }, "EvergreenManifest": [ - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/DualDagger/FangPrimeDagger", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeLex/PrimeLex", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Game/ShipScenes/PrimeLisetFiligreeScene", "PrimePrice": 1 }, @@ -2247,11 +2532,25 @@ { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/TwitchPrimeMeleeDangle", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeAviaSyandana", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeTwitchScarf", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/TwitchPrimeScarf", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/TwitchPrimeSigil", "PrimePrice": 1 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNecraloidBundle", "RegularPrice": 10 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinTwitchPrime", "RegularPrice": 10 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/InfMembraneCape", "RegularPrice": 10 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/GaraPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/GaussPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/GrendelPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/HildrynPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/HydroidPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/KhoraPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/NekrosPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/NidusPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/OberonPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/OctaviaPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/RevenantPrimeSongItem", "RegularPrice": 5 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/SongItems/VaubanPrimeSongItem", "RegularPrice": 5 }, { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PrimeBucks", "RegularPrice": 1 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoidTraceBundle", "RegularPrice": 1 } ], @@ -2326,93 +2625,56 @@ { "Expiry": { "$date": { "$numberLong": "1705604400000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, { "Expiry": { "$date": { "$numberLong": "1706814000000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, { "Expiry": { "$date": { "$numberLong": "1708023600000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, - { "Expiry": { "$date": { "$numberLong": "1710442800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1706814000000" } } } + { + "Expiry": { "$date": { "$numberLong": "1710442800000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1706814000000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack" + }, + { "Expiry": { "$date": { "$numberLong": "1744394400000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1709233200000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "65b2489214b7fcf4f7674815" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1706185201821" } }, - "Expiry": { "$date": { "$numberLong": "1706190601821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65b2489214b7fcf4f7674819" }, - "Node": "CrewBattleNode531", - "Activation": { "$date": { "$numberLong": "1706185201832" } }, - "Expiry": { "$date": { "$numberLong": "1706190601832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65b2489214b7fcf4f7674817" }, - "Node": "CrewBattleNode533", - "Activation": { "$date": { "$numberLong": "1706185201827" } }, - "Expiry": { "$date": { "$numberLong": "1706190601827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "65b2489214b7fcf4f7674816" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1706185201825" } }, - "Expiry": { "$date": { "$numberLong": "1706190601825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65b2489214b7fcf4f7674818" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1706185201829" } }, - "Expiry": { "$date": { "$numberLong": "1706190601829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "65b2489214b7fcf4f767481a" }, - "Node": "CrewBattleNode550", - "Activation": { "$date": { "$numberLong": "1706185201834" } }, - "Expiry": { "$date": { "$numberLong": "1706190601834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65b256a1f85a0db091fe17eb" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1706188801825" } }, - "Expiry": { "$date": { "$numberLong": "1706194201825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65b256a1f85a0db091fe17ea" }, + "_id": { "$oid": "65da0dd195e344f4904b6c8c" }, "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1706188801821" } }, - "Expiry": { "$date": { "$numberLong": "1706194201821" } }, + "Activation": { "$date": { "$numberLong": "1708791601821" } }, + "Expiry": { "$date": { "$numberLong": "1708797001821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65b256a1f85a0db091fe17ed" }, - "Node": "CrewBattleNode521", - "Activation": { "$date": { "$numberLong": "1706188801829" } }, - "Expiry": { "$date": { "$numberLong": "1706194201829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "65b256a1f85a0db091fe17ec" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1706188801827" } }, - "Expiry": { "$date": { "$numberLong": "1706194201827" } }, + "_id": { "$oid": "65da0dd195e344f4904b6c8e" }, + "Node": "CrewBattleNode534", + "Activation": { "$date": { "$numberLong": "1708791601827" } }, + "Expiry": { "$date": { "$numberLong": "1708797001827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "65b256a1f85a0db091fe17ee" }, - "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1706188801832" } }, - "Expiry": { "$date": { "$numberLong": "1706194201832" } }, + "_id": { "$oid": "65da0dd195e344f4904b6c8d" }, + "Node": "CrewBattleNode511", + "Activation": { "$date": { "$numberLong": "1708791601825" } }, + "Expiry": { "$date": { "$numberLong": "1708797001825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65da0dd195e344f4904b6c8f" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1708791601829" } }, + "Expiry": { "$date": { "$numberLong": "1708797001829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "65da0dd195e344f4904b6c90" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1708791601832" } }, + "Expiry": { "$date": { "$numberLong": "1708797001832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "65b256a1f85a0db091fe17ef" }, + "_id": { "$oid": "65da0dd195e344f4904b6c91" }, "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1706188801834" } }, - "Expiry": { "$date": { "$numberLong": "1706194201834" } }, + "Activation": { "$date": { "$numberLong": "1708791601834" } }, + "Expiry": { "$date": { "$numberLong": "1708797001834" } }, "ActiveMissionTier": "VoidT4" } ], @@ -2421,23 +2683,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Powersuits/Magician/Magician", - "Activation": { "$date": { "$numberLong": "1706166000000" } }, - "Expiry": { "$date": { "$numberLong": "1706259600000" } }, - "Discount": 20, - "OriginalPrice": 200, - "SalePrice": 160, - "AmountTotal": 200, - "AmountSold": 17 + "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnSpark/GrnSparkRifle", + "Activation": { "$date": { "$numberLong": "1708786800000" } }, + "Expiry": { "$date": { "$numberLong": "1708880400000" } }, + "Discount": 50, + "OriginalPrice": 150, + "SalePrice": 75, + "AmountTotal": 150, + "AmountSold": 23 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "65aaeb0592bde326c6403108" }, + "_id": { "$oid": "65d911ddcdd4e8d30dd56cd6" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1705700101189" } }, - "endDate": { "$date": { "$numberLong": "1706304901189" } }, + "startDate": { "$date": { "$numberLong": "1708724701832" } }, + "endDate": { "$date": { "$numberLong": "1709329501832" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2445,32 +2707,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "65aaeb0592bde326c640310b" }, + "_id": { "$oid": "65d911ddcdd4e8d30dd56cd9" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1705700101189" } }, - "endDate": { "$date": { "$numberLong": "1706304901189" } }, + "startDate": { "$date": { "$numberLong": "1708724701832" } }, + "endDate": { "$date": { "$numberLong": "1709329501832" } }, "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "65aaeb0592bde326c6403108" }, { "$oid": "65aaeb0592bde326c6403109" }, { "$oid": "65aaeb0592bde326c640310a" }], + "subChallenges": [{ "$oid": "65d911ddcdd4e8d30dd56cd6" }, { "$oid": "65d911ddcdd4e8d30dd56cd7" }, { "$oid": "65d911ddcdd4e8d30dd56cd8" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "65aaeb0592bde326c6403109" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1705700101189" } }, - "endDate": { "$date": { "$numberLong": "1706304901189" } }, - "params": [{ "n": "ScriptParamValue", "v": 20 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "65aaeb0592bde326c640310a" }, + "_id": { "$oid": "65d911ddcdd4e8d30dd56cd8" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1705700101189" } }, - "endDate": { "$date": { "$numberLong": "1706304901189" } }, + "startDate": { "$date": { "$numberLong": "1708724701832" } }, + "endDate": { "$date": { "$numberLong": "1709329501832" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2478,10 +2729,32 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "65b1c7a9e34593557b403072" }, + "_id": { "$oid": "65d911ddcdd4e8d30dd56cd7" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", + "startDate": { "$date": { "$numberLong": "1708724701832" } }, + "endDate": { "$date": { "$numberLong": "1709329501832" } }, + "params": [{ "n": "ScriptParamValue", "v": 20 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "65d969c14e52f0b099fd5de0" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "65d969c14e52f0b099fd5de1" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2489,32 +2762,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65b1c7a9e34593557b403073" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "65b1c7a9e34593557b403071" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "65b1c7a9e34593557b403074" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "_id": { "$oid": "65d969c14e52f0b099fd5de2" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2522,10 +2773,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65b1c7a9e34593557b403076" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDomination_MEDIUM", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "_id": { "$oid": "65d969c14e52f0b099fd5de4" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", @@ -2533,10 +2784,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65b1c7a9e34593557b403075" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeEASY", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "_id": { "$oid": "65d969c14e52f0b099fd5de3" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingHARD", + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "65d969c14e52f0b099fd5de5" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", @@ -2544,10 +2806,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65b1c7a9e34593557b403077" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesHARD", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, + "_id": { "$oid": "65d969c14e52f0b099fd5de6" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "65d969c14e52f0b099fd5de7" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM", + "startDate": { "$date": { "$numberLong": "1708747201749" } }, + "endDate": { "$date": { "$numberLong": "1708833601749" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", @@ -2555,35 +2828,35 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65b1c7a9e34593557b403078" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY", - "startDate": { "$date": { "$numberLong": "1706149801149" } }, - "endDate": { "$date": { "$numberLong": "1706236201149" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], + "_id": { "$oid": "65da1e3a8c6389d45b646e42" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedAffectorSuperPowerDamage", + "startDate": { "$date": { "$numberLong": "1708793402078" } }, + "endDate": { "$date": { "$numberLong": "1708794002078" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", + "PVPMode": "PVPMODE_CAPTURETHEFLAG", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" + "Category": "PVPChallengeTypeCategory_MODEAFFECTOR" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [50.276225577750985, 57.94470168330164, 0], + "ProjectPct": [77.9859887021797, 103.64227436509337, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, - { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } + { "Category": "EXC_NORMAL", "Choices": ["Gara", "Khora", "Revenant"] }, + { "Category": "EXC_HARD", "Choices": ["Bo", "Latron", "Furis", "Furax", "Strun"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "5b4478a82183dbb61871e464" }, "Name": "_People_#660", "Tier": 1, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, "Name": "Miau after Tomorrow#004", "Tier": 2, "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "51e332a507c56f8131001afe" }, "Name": "La confrerie#881", "Tier": 3, "AllianceId": { "$oid": "535d3fbc07c56fa289fec649" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz#996", "Tier": 4, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5a44a1ba2183db95d61d3e56" }, "Name": "Syndicate Solstice#268", "Tier": 5, "AllianceId": { "$oid": "56031df008c56fe8106a9982" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "606f4288eb6a782c3652ceb0" }, "Name": "Moderate Mishaps#738", "Tier": 1, "Emblem": true, "OriginalPlatform": 0, "AllianceId": { "$oid": "56031df008c56fe8106a9982" } }, + { "_id": { "$oid": "5a0ef1922183db6f5a60d9ec" }, "Name": "Turian Sixth Fleet#341", "Tier": 2, "AllianceId": { "$oid": "59849a44be87e41dfe7a2d2c" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "54283e6107c56f0e3b1e89bd" }, "Name": "THE ONYX CHAPTER#480", "Tier": 3, "AllianceId": { "$oid": "550277d006c56fbe22e9991d" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5962fe34be87e448e5396aa2" }, "Name": "Syndicate Academy#577", "Tier": 4, "AllianceId": { "$oid": "56031df008c56fe8106a9982" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "56d8b39408c56fd89a1799ec" }, "Name": "Phantom Vanguard#714", "Tier": 5, "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, "Emblem": true, "OriginalPlatform": 0 }, { "_id": { "$oid": "5d6e8383a38e4ab3d87910b4" }, "Name": "KHAO SAN ROAD#515", "Tier": 1, "AllianceId": { "$oid": "62ca246ada801e95e10faef5" }, "Emblem": true, "OriginalPlatform": 0 } ], "SeasonInfo": { @@ -2595,69 +2868,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001200090000000000000124" }, + "_id": { "$oid": "001200130000000000000182" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1705968000000" } }, - "Expiry": { "$date": { "$numberLong": "1706227200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore" + "Activation": { "$date": { "$numberLong": "1708560000000" } }, + "Expiry": { "$date": { "$numberLong": "1708819200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyAimGlide" }, { - "_id": { "$oid": "001200090000000000000125" }, + "_id": { "$oid": "001200130000000000000183" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1706054400000" } }, - "Expiry": { "$date": { "$numberLong": "1706313600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCompleteMissionPrimary" + "Activation": { "$date": { "$numberLong": "1708646400000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithAbilities" }, { - "_id": { "$oid": "001200090000000000000126" }, + "_id": { "$oid": "001200130000000000000184" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1706140800000" } }, - "Expiry": { "$date": { "$numberLong": "1706400000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyBuildersTouch" + "Activation": { "$date": { "$numberLong": "1708732800000" } }, + "Expiry": { "$date": { "$numberLong": "1708992000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyHijackCrewship" }, { - "_id": { "$oid": "001200090000000000000116" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions9" + "_id": { "$oid": "001200130000000000000172" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions13" }, { - "_id": { "$oid": "001200090000000000000117" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus9" + "_id": { "$oid": "001200130000000000000173" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus13" }, { - "_id": { "$oid": "001200090000000000000118" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies9" + "_id": { "$oid": "001200130000000000000174" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies13" }, { - "_id": { "$oid": "001200090000000000000119" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteExterminate" + "_id": { "$oid": "001200130000000000000175" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSortie" }, { - "_id": { "$oid": "001200090000000000000120" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCatchRareVenusFish" + "_id": { "$oid": "001200130000000000000176" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRequiemTotem" }, { - "_id": { "$oid": "001200090000000000000121" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCollectUniqueResources" + "_id": { "$oid": "001200130000000000000177" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteBeastSlayer" }, { - "_id": { "$oid": "001200090000000000000122" }, - "Activation": { "$date": { "$numberLong": "1705881600000" } }, - "Expiry": { "$date": { "$numberLong": "1706486400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillRopalolyst" + "_id": { "$oid": "001200130000000000000178" }, + "Activation": { "$date": { "$numberLong": "1708300800000" } }, + "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardUnlockRelics" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"eeg\":true,\"sfn\":554}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":555}" } -- 2.47.2 From b2dcee09b0c5e80ed40abbb12e8f96a07b36b29b Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Fri, 1 Mar 2024 14:37:25 +0100 Subject: [PATCH 064/522] version update 35.1.2 (#135) removed worldSeed from config --- config.json | 7 +- static/fixed_responses/worldState.json | 2665 ++++++++---------------- 2 files changed, 885 insertions(+), 1787 deletions(-) diff --git a/config.json b/config.json index 419447e2..1b8a5160 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,8 @@ { "autoCreateAccount": true, - "buildLabel": "2024.02.21.13.41/P4LYNzQKdd5ok43ZcUHBww", - "matchmakingBuildId": "9161871719973399660", - "version": "35.1.1", - "worldSeed": "bqIqh7f8RNMC0WkdePJkatBTRnU1WZwx1FgunR04BNLDWP9wNyc/LHhW8eiDrc5ZygtU8PlJ8UNo/CgdhmHu59CEh5uvPAmbOIH5/Iq5XjA6pBiKvATME/OCC9dKkAUqzpOqTyJYxl0aTKjdVRCETjw2+aU5ucFTp1GP4xV8lfs0+2aZ928qYD9QHBS12V2k2wM2uJl+E1d9sb9/PcuZKRSqC3qG1BoXmaySHaR9f/dN0rxy1zpx0+LD7fEjl0LNXkoO8oLZsHdjINTLGqT6yA42UXXb/Dd9KVbg605K3G+1iq0UIradETblXoV/iTDpgJXXlqHTrLxMOoC8iFNoGQ==", + "buildLabel": "2024.02.27.13.21/nZiv7UkxWYJ-spgQRXCEAA", + "matchmakingBuildId": "8033027149409830115", + "version": "35.1.2", "skipStoryModeChoice": true, "skipTutorial": true, "unlockAllMissions": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 5fa85ac2..58e19713 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "bqIqh7f8RNMC0WkdePJkatBTRnU1WZwx1FgunR04BNLDWP9wNyc/LHhW8eiDrc5ZygtU8PlJ8UNo/CgdhmHu59CEh5uvPAmbOIH5/Iq5XjA6pBiKvATME/OCC9dKkAUqzpOqTyJYxl0aTKjdVRCETjw2+aU5ucFTp1GP4xV8lfs0+2aZ928qYD9QHBS12V2k2wM2uJl+E1d9sb9/PcuZKRSqC3qG1BoXmaySHaR9f/dN0rxy1zpx0+LD7fEjl0LNXkoO8oLZsHdjINTLGqT6yA42UXXb/Dd9KVbg605K3G+1iq0UIradETblXoV/iTDpgJXXlqHTrLxMOoC8iFNoGQ==", + "WorldSeed": "EcKjo1UfIsGqFE9hCSvuA72N9an362sTWb4+cgxgZApxMHnzqFhqMwfl0nNTy/DzYumqtK7mnZz80wTpd/QNfFIO/rixu+I/V65PScL+9tgxQh0BbwNudqCvU+b2DDdRl5qhYedouIPBBwm6gEualhvMvDVFuJ9sJTdAfrTKN8M1WIn6NKBcSpPNPAMrKXC+mYZfejWhl9QWD5tLnMM8GXQxgunJFxORb7wEuhMexSXcB1kHwEZUeHROjGFibZhyDN/F2JIWh6im0g3j3vscQPLoUBBv1dhHWaNkNzzfXw1qloypAbLn5+YzK60MHWbsx6zEtlSyudaRDhMNXOMPhg==", "Version": 10, "MobileVersion": "4.15.20.0", - "BuildLabel": "2024.02.21.13.41/P4LYNzQKdd5ok43ZcUHBww", - "Time": 1708794279, + "BuildLabel": "2024.02.27.13.21/nZiv7UkxWYJ-spgQRXCEAA", + "Time": 1709299834, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -218,70 +218,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65cce3757b52c2dcb90817ad" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第177回のお知らせ" }], - "Prop": "https://bit.ly/3uqQsqe", - "Date": { "$date": { "$numberLong": "1707926340000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/0f615c30da8ead529702096f48184c14.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65ce62203fb50501ac040ef9" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Banshee Prime and Mirage Prime are back!" }, - { "LanguageCode": "fr", "Message": "Banshee et Mirage Prime sont de retour !" }, - { "LanguageCode": "it", "Message": "Banshee Prime e Mirage Prime sono tornate!" }, - { "LanguageCode": "de", "Message": "Banshee Prime und Mirage Prime sind zurück!" }, - { "LanguageCode": "es", "Message": "¡Banshee Prime y Mirage Prime están de regreso!" }, - { "LanguageCode": "pt", "Message": "A Banshee Prime e a Mirage Prime estão de volta!" }, - { "LanguageCode": "ru", "Message": "Банши Прайм и Мираж Прайм возвращаются!" }, - { "LanguageCode": "pl", "Message": "Banshee Prime i Mirage Prime powracają!" }, - { "LanguageCode": "uk", "Message": "Банші-прайм і Міраж-прайм повертаються!" }, - { "LanguageCode": "tr", "Message": "Banshee Prime ve Mirage Prime geri döndü!" }, - { "LanguageCode": "ja", "Message": "Banshee PrimeとMirage Primeが復帰!" }, - { "LanguageCode": "zh", "Message": "Banshee Prime 和 Mirage Prime 现已回归!" }, - { "LanguageCode": "ko", "Message": "밴쉬 프라임 및 미라지 프라임이 돌아왔습니다!" }, - { "LanguageCode": "tc", "Message": "Banshee Prime 以及 Mirage Prime 回歸了!" } - ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-PrimeResurgenceLaunchR16", - "Date": { "$date": { "$numberLong": "1708022040000" } }, - "EventStartDate": { "$date": { "$numberLong": "1708023600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1710392400000" } }, - "ImageUrl": "https://www-static.warframe.com/images/prime-resurgence/rotations/banshee-mirage/masthead-keyart-desktop.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65d4b93be0bec291280b92e0" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Stream + Twitch Drop Schedule" }], - "Prop": "https://forums.warframe.com/topic/1384886-community-stream-schedule-feb-20-25-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-CommunityStreams-20", - "Date": { "$date": { "$numberLong": "1708439820000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65d4c271593a19b4970ab693" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Streams et Drops : 20 - 25 fév." }], - "Prop": "https://forums.warframe.com/topic/1384891-streams-communautaires-20-25-f%C3%A9vrier/", - "Date": { "$date": { "$numberLong": "1708442100000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/WF_WeekendTwitchDrops_WeekOfFeb19.png.72260682eed6d2fb9a64909af34aa2b3.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65d4c95f6376f1f11b02a584" }, - "Messages": [{ "LanguageCode": "ja", "Message": "2月20日~2月25日の配信スケジュール" }], - "Prop": "https://bit.ly/3IcJ3xH", - "Date": { "$date": { "$numberLong": "1708443900000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/FormaDropAsset.png.b6419591708e3914faedca1db2dfccd3.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "65d4d5936b94ad331a0eb589" }, "Messages": [{ "LanguageCode": "fr", "Message": "Notes de mise à jour : 35.1.0" }], @@ -346,32 +282,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65d6037cd5351737f6082182" }, - "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops 20 - 25 de Febrero" }], - "Prop": "https://forums.warframe.com/topic/1385160-programa-de-streams-y-twitch-drops-20-25-de-febrero/", - "Date": { "$date": { "$numberLong": "1708524300000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65d668feca0b2316ca050a2a" }, - "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.1.1" }], - "Prop": "https://www.warframe.com/updates/pc/35-1-1", - "Date": { "$date": { "$numberLong": "1708549740000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "65d679ad8289d4fbd80c4681" }, - "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.1.1" }], - "Prop": "https://forums.warframe.com/topic/1385254-susurros-en-las-paredes-revisi%C3%B3n-3511/", - "Date": { "$date": { "$numberLong": "1708554600000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "65d7a2ee476834ce60013b92" }, "Messages": [ @@ -479,31 +389,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65d91a2815bab1f31305f7b4" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Devstream 177 Recap: March Preview" }, - { "LanguageCode": "fr", "Message": "Récapitulatif du Devstream 177 : aperçu de mars" }, - { "LanguageCode": "it", "Message": "Riassunto Devstream 177: Anteprima di Marzo" }, - { "LanguageCode": "de", "Message": "Devstream 177 Zusammenfassung: Vorschau für März" }, - { "LanguageCode": "es", "Message": "Resumen del Devstream 177: Vista previa de marzo" }, - { "LanguageCode": "pt", "Message": "Recapitulação da Devstream 177: Prévia de Março" }, - { "LanguageCode": "ru", "Message": "Devstream 177: итоги и мартовский обзор" }, - { "LanguageCode": "pl", "Message": "Podsumowanie Devstreamu 177: przegląd marca" }, - { "LanguageCode": "uk", "Message": "Підсумок трансляції розробників № 177: огляд березня" }, - { "LanguageCode": "tr", "Message": "Devstream 177 Özeti: Mart Önizlemesi" }, - { "LanguageCode": "ja", "Message": "Devstream 177振り返り:3月プレビュー" }, - { "LanguageCode": "zh", "Message": "开发者直播 177 回顾:三月预览" }, - { "LanguageCode": "ko", "Message": "Devstream 177 요약: 3월 미리보기" }, - { "LanguageCode": "tc", "Message": "開發者直播 177 回顧:3 月預覽" } - ], - "Prop": "https://www.warframe.com/news/march-preview?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-Devstream177RecapIGN", - "Date": { "$date": { "$numberLong": "1708726440000" } }, - "EventEndDate": { "$date": { "$numberLong": "1709269200000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/16aa1e9a5ae21b2f91b47c59b1ed59be_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65d973eb3c31d7aae0074c09" }, "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #177 - version FR" }], @@ -512,122 +397,305 @@ "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/image.png.5f48538c274864dcf14af9879a4a97e8.png", "Priority": false, "MobileOnly": false - } - ], - "Goals": [ - { - "_id": { "$oid": "65ba6c8607749814b67a6cc1" }, - "Activation": { "$date": { "$numberLong": "1706803200000" } }, - "Expiry": { "$date": { "$numberLong": "1709222400000" } }, - "Count": 0, - "Goal": 0, - "Success": 0, - "Personal": true, - "Desc": "/Lotus/Language/Events/ValentinesFortunaName", - "ToolTip": "/Lotus/Language/Events/ValentinesFortunaName", - "Icon": "/Lotus/Interface/Icons/WorldStatePanel/ValentinesEventIcon.png", - "Tag": "FortunaValentines", - "Node": "SolarisUnitedHub1" - } - ], - "Alerts": [ - { - "_id": { "$oid": "65d75f27de42c3831505fe61" }, - "Activation": { "$date": { "$numberLong": "1708718400000" } }, - "Expiry": { "$date": { "$numberLong": "1708804800000" } }, - "MissionInfo": { - "location": "SolNode64", - "missionType": "MT_TERRITORY", - "faction": "FC_GRINEER", - "difficulty": 1, - "missionReward": { "credits": 10000, "items": ["/Lotus/StoreItems/Types/Recipes/Components/OrokinReactorBlueprint"] }, - "levelOverride": "/Lotus/Levels/Proc/Grineer/GrineerOceanDefense", - "enemySpec": "/Lotus/Types/Game/EnemySpecs/SeaLabGrineerDefenseA", - "minEnemyLevel": 10, - "maxEnemyLevel": 15, - "descText": "/Lotus/Language/Alerts/LotusGiftDesc", - "maxWaveNum": 2 - }, - "Tag": "LotusGift", - "ForceUnlock": true }, { - "_id": { "$oid": "65d75f7bde42c3831505fe64" }, - "Activation": { "$date": { "$numberLong": "1708718400000" } }, - "Expiry": { "$date": { "$numberLong": "1708804800000" } }, - "MissionInfo": { - "location": "SolNode132", - "missionType": "MT_INTEL", - "faction": "FC_GRINEER", - "difficulty": 1, - "missionReward": { "credits": 10000, "items": ["/Lotus/StoreItems/Types/Recipes/Components/OrokinCatalystBlueprint"] }, - "levelOverride": "/Lotus/Levels/Proc/Grineer/GrineerShipyardsSpy", - "enemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerShipyardsA", - "extraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/GrineerIntelTiersSquadSix", - "minEnemyLevel": 10, - "maxEnemyLevel": 15, - "descText": "/Lotus/Language/Alerts/LotusGiftDesc" - }, - "Tag": "LotusGift", - "ForceUnlock": true + "_id": { "$oid": "65ddee6aa7605f6dc402bf80" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream & Twitch Drop Schedule" }], + "Prop": "https://forums.warframe.com/topic/1385973-community-stream-schedule-feb-27-mar-1-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-CommunityStreams-26", + "Date": { "$date": { "$numberLong": "1709043240000" } }, + "EventEndDate": { "$date": { "$numberLong": "1709341200000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "65de03e477ddc027f3042e8b" }, + "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops: 27 Feb - 1 Mar" }], + "Prop": "https://forums.warframe.com/topic/1385984-programa-de-streams-y-twitch-drops-27-de-febrero-1-de-marzo/", + "Date": { "$date": { "$numberLong": "1709048580000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65de1446344f138e6107dd46" }, + "Messages": [{ "LanguageCode": "ja", "Message": "2月27日~3月1日の配信スケジュール" }], + "Prop": "https://bit.ly/4bTV0WY", + "Date": { "$date": { "$numberLong": "1709052840000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/image.png.974b9963bc7803af7f996d5e5dfed6a7.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65df8ed3379f639d7d0a8e89" }, + "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.1.2" }], + "Prop": "https://www.warframe.com/updates/pc/35-1-2", + "Date": { "$date": { "$numberLong": "1709149860000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "65dfa44dc27a3db4a4006953" }, + "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.1.2" }], + "Prop": "https://forums.warframe.com/topic/1386163-susurros-en-las-paredes-revisi%C3%B3n-3512/", + "Date": { "$date": { "$numberLong": "1709155320000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true } ], + "Goals": [], + "Alerts": [], "Sorties": [ { - "_id": { "$oid": "65da1d0d1d1e075674dd7b5d" }, - "Activation": { "$date": { "$numberLong": "1708794000000" } }, - "Expiry": { "$date": { "$numberLong": "1708880400000" } }, + "_id": { "$oid": "65e0b48e0c6a6711e9f8483b" }, + "Activation": { "$date": { "$numberLong": "1709226000000" } }, + "Expiry": { "$date": { "$numberLong": "1709312400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 21676, - "Boss": "SORTIE_BOSS_INFALAD", + "Seed": 49322, + "Boss": "SORTIE_BOSS_AMBULAS", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_HIVE", "modifierType": "SORTIE_MODIFIER_ELECTRICITY", "node": "SolNode171", "tileset": "InfestedCorpusShipTileset" }, - { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode138", "tileset": "GrineerShipyardsTileset" }, - { "missionType": "MT_DEFENSE", "modifierType": "SORTIE_MODIFIER_SHOTGUN_ONLY", "node": "SolNode74", "tileset": "CorpusGasCityTileset" } + { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_SHIELDS", "node": "SolNode49", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode97", "tileset": "CorpusGasCityTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode51", "tileset": "CorpusOutpostTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "65d2967d22c7212c62aec3af" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, + "_id": { "$oid": "65dbd0fd399617ab4d3dcab9" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 80876, - "Boss": "SORTIE_BOSS_BOREAL", + "Seed": 96627, + "Boss": "SORTIE_BOSS_AMAR", "Missions": [ - { "missionType": "MT_EXTERMINATION", "node": "SolNode59" }, - { "missionType": "MT_DEFENSE", "node": "SolNode27" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } + { "missionType": "MT_INTEL", "node": "SolNode113" }, + { "missionType": "MT_ARTIFACT", "node": "SolNode30" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "65da0d2e0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1708789038291" } }, - "Expiry": { "$date": { "$numberLong": "1708798037165" } }, + "_id": { "$oid": "65e0b7d545104fda54e15fb1" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "ArbitersSyndicate", + "Seed": 49322, + "Nodes": ["SolNode15", "SolNode128", "SolNode88", "SolNode709", "SolNode72", "SettlementNode2", "SolNode212"] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb2" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 93695, + "Nodes": ["SolNode36", "SolNode89", "SolNode126", "SolNode67", "SolNode76", "SolNode220", "SolNode122"] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb3" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 90615, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb4" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "EventSyndicate", + "Seed": 36542, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb5" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "KahlSyndicate", + "Seed": 97566, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb6" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 82638, + "Nodes": ["SolNode109", "SolNode46", "SolNode141", "SolNode203", "SolNode167", "SolNode224", "SolNode93"] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb7" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "QuillsSyndicate", + "Seed": 97614, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb8" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "PerrinSyndicate", + "Seed": 29189, + "Nodes": ["SolNode226", "SolNode113", "SolNode132", "SolNode79", "SolNode102", "SolNode166", "SolNode1"] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fba" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 92611, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fbb" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 96279, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fb9" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 8362, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fbc" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 13502, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fbf" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 32300, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fbd" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 1378, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fbe" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 35524, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fc0" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 37691, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fc2" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 6421, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fc1" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 82871, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fc3" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 43217, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fc4" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 79986, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d545104fda54e15fc5" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 77533, + "Nodes": ["SolNode85", "SolNode30", "SolNode707", "SolNode140", "SolNode177", "SolNode401", "SettlementNode12"] + }, + { + "_id": { "$oid": "65e0b7d645104fda54e15fc6" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 46290, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d645104fda54e15fc7" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "VoxSyndicate", + "Seed": 63178, + "Nodes": [] + }, + { + "_id": { "$oid": "65e0b7d645104fda54e15fc8" }, + "Activation": { "$date": { "$numberLong": "1709225941718" } }, + "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 41152, + "Nodes": ["SolNode75", "SolNode66", "SolNode139", "SolNode25", "SolNode48", "SolNode171", "SolNode407"] + }, + { + "_id": { "$oid": "65e1bdaf0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1709292975280" } }, + "Expiry": { "$date": { "$numberLong": "1709301974154" } }, "Tag": "EntratiSyndicate", - "Seed": 64026, + "Seed": 9507, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableCRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [9, 9, 9] + "xpAmounts": [8, 8, 8] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", @@ -640,23 +708,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 28] + "xpAmounts": [16, 16, 16, 25] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [22, 22, 22, 22, 44] + "xpAmounts": [20, 20, 20, 20, 39] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -664,7 +732,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -673,7 +741,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -682,7 +750,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -693,138 +761,64 @@ ] }, { - "_id": { "$oid": "65da0d2e0000000000000004" }, - "Activation": { "$date": { "$numberLong": "1708789038291" } }, - "Expiry": { "$date": { "$numberLong": "1708798037165" } }, + "_id": { "$oid": "65e1bdaf0000000000000004" }, + "Activation": { "$date": { "$numberLong": "1709292975280" } }, + "Expiry": { "$date": { "$numberLong": "1709301974154" } }, "Tag": "EntratiLabSyndicate", - "Seed": 64026, + "Seed": 9508, "Nodes": [] }, { - "_id": { "$oid": "65da0d2e0000000000000028" }, - "Activation": { "$date": { "$numberLong": "1708789038291" } }, - "Expiry": { "$date": { "$numberLong": "1708798037165" } }, - "Tag": "ZarimanSyndicate", - "Seed": 64026, - "Nodes": [] - }, - { - "_id": { "$oid": "65da0d2e0000000000000008" }, - "Activation": { "$date": { "$numberLong": "1708789038291" } }, - "Expiry": { "$date": { "$numberLong": "1708798037165" } }, - "Tag": "CetusSyndicate", - "Seed": 64026, + "_id": { "$oid": "65e1bdaf0000000000000024" }, + "Activation": { "$date": { "$numberLong": "1709292975280" } }, + "Expiry": { "$date": { "$numberLong": "1709301974154" } }, + "Tag": "SolarisSyndicate", + "Seed": 9507, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobAmbush", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [360, 360, 360] + "xpAmounts": [340, 340, 340] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [710, 710, 710] + "xpAmounts": [600, 600, 600] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [650, 650, 650, 950] + "xpAmounts": [640, 640, 640, 940] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, "xpAmounts": [600, 600, 600, 600, 1170] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, "xpAmounts": [760, 760, 760, 760, 1490] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1610] - } - ] - }, - { - "_id": { "$oid": "65da0d2e0000000000000024" }, - "Activation": { "$date": { "$numberLong": "1708789038291" } }, - "Expiry": { "$date": { "$numberLong": "1708798037165" } }, - "Tag": "SolarisSyndicate", - "Seed": 64026, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [710, 710, 710] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [560, 560, 560, 830] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [610, 610, 610, 610, 1190] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [730, 730, 730, 730, 1430] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -832,434 +826,315 @@ }, { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1610] + "xpAmounts": [770, 770, 770, 770, 1520] } ] }, { - "_id": { "$oid": "65da20554841354e254ca056" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "ArbitersSyndicate", - "Seed": 21676, - "Nodes": ["SolNode66", "SolNode225", "SolNode131", "SolNode58", "SolNode181", "SolNode42", "SolNode204"] + "_id": { "$oid": "65e1bdaf0000000000000008" }, + "Activation": { "$date": { "$numberLong": "1709292975280" } }, + "Expiry": { "$date": { "$numberLong": "1709301974154" } }, + "Tag": "CetusSyndicate", + "Seed": 9507, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [450, 450, 450] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [680, 680, 680] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [610, 610, 610, 900] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [550, 550, 550, 550, 1080] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [710, 710, 710, 710, 1400] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [820, 820, 820, 820, 1600] + } + ] }, { - "_id": { "$oid": "65da20564841354e254ca058" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 84574, + "_id": { "$oid": "65e1bdaf0000000000000028" }, + "Activation": { "$date": { "$numberLong": "1709292975280" } }, + "Expiry": { "$date": { "$numberLong": "1709301974154" } }, + "Tag": "ZarimanSyndicate", + "Seed": 9508, "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca057" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 21297, - "Nodes": ["SolNode12", "SolNode22", "SolNode50", "SolNode59", "SolNode408", "SolNode76", "SolNode61"] - }, - { - "_id": { "$oid": "65da20564841354e254ca059" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "EventSyndicate", - "Seed": 50974, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca05a" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "KahlSyndicate", - "Seed": 33706, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca05b" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 23203, - "Nodes": ["SolNode128", "SolNode119", "SolNode70", "SolNode30", "SolNode212", "SolNode26", "SolNode188"] - }, - { - "_id": { "$oid": "65da20564841354e254ca05c" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "QuillsSyndicate", - "Seed": 37870, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca05d" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "PerrinSyndicate", - "Seed": 45473, - "Nodes": ["SolNode75", "SolNode109", "SolNode711", "SolNode126", "SettlementNode1", "SolNode205", "SolNode223"] - }, - { - "_id": { "$oid": "65da20564841354e254ca05e" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 98411, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca05f" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 45109, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca060" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 82831, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca062" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 85666, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca061" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 31638, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca063" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 2015, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca065" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 64880, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca064" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 56300, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca066" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 73744, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca067" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 14064, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca068" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 24419, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca069" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 39687, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca06a" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 46596, - "Nodes": ["SolNode103", "SolNode14", "SolNode39", "SolNode101", "SolNode31", "SolNode164", "SolNode195"] - }, - { - "_id": { "$oid": "65da20564841354e254ca06c" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "VoxSyndicate", - "Seed": 1788, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca06b" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 89117, - "Nodes": [] - }, - { - "_id": { "$oid": "65da20564841354e254ca06d" }, - "Activation": { "$date": { "$numberLong": "1708793941965" } }, - "Expiry": { "$date": { "$numberLong": "1708880340000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 47148, - "Nodes": ["SolNode107", "SolNode89", "SolNode708", "SolNode137", "SettlementNode15", "SolNode130", "SolNode6"] } ], "ActiveMissions": [ { - "_id": { "$oid": "65da0f75b8e502a471e12865" }, + "_id": { "$oid": "65e1c61131a2df9c2a9fa129" }, "Region": 19, - "Seed": 66644, - "Activation": { "$date": { "$numberLong": "1708789621431" } }, - "Expiry": { "$date": { "$numberLong": "1708795313520" } }, - "Node": "SolNode742", - "MissionType": "MT_DEFENSE", + "Seed": 69268, + "Activation": { "$date": { "$numberLong": "1709295121625" } }, + "Expiry": { "$date": { "$numberLong": "1709301963341" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "65da0f75b8e502a471e12866" }, + "_id": { "$oid": "65e1c61131a2df9c2a9fa12a" }, "Region": 19, - "Seed": 916, - "Activation": { "$date": { "$numberLong": "1708789621431" } }, - "Expiry": { "$date": { "$numberLong": "1708794527293" } }, - "Node": "SolNode745", - "MissionType": "MT_ARTIFACT", + "Seed": 60639, + "Activation": { "$date": { "$numberLong": "1709295121625" } }, + "Expiry": { "$date": { "$numberLong": "1709301245538" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "65da10de1f18fd228f893743" }, + "_id": { "$oid": "65e1c689b67931d0db1b3e7c" }, "Region": 2, - "Seed": 44444, - "Activation": { "$date": { "$numberLong": "1708789981994" } }, - "Expiry": { "$date": { "$numberLong": "1708794861703" } }, - "Node": "SolNode23", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "65da14626ae446e07da5977a" }, - "Region": 2, - "Seed": 99725, - "Activation": { "$date": { "$numberLong": "1708790882110" } }, - "Expiry": { "$date": { "$numberLong": "1708796932694" } }, + "Seed": 51467, + "Activation": { "$date": { "$numberLong": "1709295241956" } }, + "Expiry": { "$date": { "$numberLong": "1709300816725" } }, "Node": "SolNode2", "MissionType": "MT_MOBILE_DEFENSE", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "65da1732da6a951f5c6c5c47" }, - "Region": 10, - "Seed": 95856, - "Activation": { "$date": { "$numberLong": "1708791602091" } }, - "Expiry": { "$date": { "$numberLong": "1708796299830" } }, - "Node": "SolNode149", + "_id": { "$oid": "65e1c689b67931d0db1b3e7d" }, + "Region": 4, + "Seed": 26891, + "Activation": { "$date": { "$numberLong": "1709295241956" } }, + "Expiry": { "$date": { "$numberLong": "1709300017077" } }, + "Node": "SolNode46", "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2", + "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "65da17e5c031da85483a2514" }, - "Region": 12, - "Seed": 89464, - "Activation": { "$date": { "$numberLong": "1708791781584" } }, - "Expiry": { "$date": { "$numberLong": "1708796470128" } }, - "Node": "SolNode185", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT4", - "Hard": true + "_id": { "$oid": "65e1c8e23ad5e1ebfc158b6e" }, + "Region": 16, + "Seed": 9108, + "Activation": { "$date": { "$numberLong": "1709295842003" } }, + "Expiry": { "$date": { "$numberLong": "1709302522078" } }, + "Node": "SettlementNode14", + "MissionType": "MT_INTEL", + "Modifier": "VoidT2" }, { - "_id": { "$oid": "65da17e5c031da85483a2515" }, - "Region": 11, - "Seed": 7275, - "Activation": { "$date": { "$numberLong": "1708791781584" } }, - "Expiry": { "$date": { "$numberLong": "1708797253304" } }, - "Node": "SolNode166", + "_id": { "$oid": "65e1c8e23ad5e1ebfc158b6f" }, + "Region": 5, + "Seed": 37206, + "Activation": { "$date": { "$numberLong": "1709295842003" } }, + "Expiry": { "$date": { "$numberLong": "1709300222307" } }, + "Node": "SolNode100", "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT4", - "Hard": true + "Modifier": "VoidT2" }, { - "_id": { "$oid": "65da194de9cef06a87414046" }, + "_id": { "$oid": "65e1ca85b8319ef71adc9306" }, + "Region": 4, + "Seed": 48669, + "Activation": { "$date": { "$numberLong": "1709296261249" } }, + "Expiry": { "$date": { "$numberLong": "1709303440888" } }, + "Node": "SolNode113", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "65e1cac1778f27adc05b0f05" }, "Region": 12, - "Seed": 77585, - "Activation": { "$date": { "$numberLong": "1708792141577" } }, - "Expiry": { "$date": { "$numberLong": "1708796904850" } }, + "Seed": 43347, + "Activation": { "$date": { "$numberLong": "1709296321396" } }, + "Expiry": { "$date": { "$numberLong": "1709303109124" } }, "Node": "SolNode177", "MissionType": "MT_ARTIFACT", "Modifier": "VoidT4" }, { - "_id": { "$oid": "65da194de9cef06a87414047" }, + "_id": { "$oid": "65e1cac1778f27adc05b0f06" }, "Region": 11, - "Seed": 30375, - "Activation": { "$date": { "$numberLong": "1708792141577" } }, - "Expiry": { "$date": { "$numberLong": "1708798761177" } }, - "Node": "SolNode162", - "MissionType": "MT_CAPTURE", + "Seed": 58652, + "Activation": { "$date": { "$numberLong": "1709296321396" } }, + "Expiry": { "$date": { "$numberLong": "1709300809804" } }, + "Node": "SolNode153", + "MissionType": "MT_RESCUE", "Modifier": "VoidT4" }, { - "_id": { "$oid": "65da194de9cef06a87414048" }, + "_id": { "$oid": "65e1d115ebe6a3009dfd0169" }, + "Region": 12, + "Seed": 93497, + "Activation": { "$date": { "$numberLong": "1709297941239" } }, + "Expiry": { "$date": { "$numberLong": "1709303514456" } }, + "Node": "SolNode184", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "65e1d115ebe6a3009dfd016a" }, + "Region": 15, + "Seed": 2666, + "Activation": { "$date": { "$numberLong": "1709297941239" } }, + "Expiry": { "$date": { "$numberLong": "1709302760737" } }, + "Node": "SolNode410", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "65e1d115ebe6a3009dfd016b" }, "Region": 9, - "Seed": 18556, - "Activation": { "$date": { "$numberLong": "1708792141577" } }, - "Expiry": { "$date": { "$numberLong": "1708796775998" } }, + "Seed": 97842, + "Activation": { "$date": { "$numberLong": "1709297941239" } }, + "Expiry": { "$date": { "$numberLong": "1709302477724" } }, "Node": "SolNode102", "MissionType": "MT_INTEL", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65da19c5bcb38b7c35cf0438" }, - "Region": 19, - "Seed": 79227, - "Activation": { "$date": { "$numberLong": "1708792261563" } }, - "Expiry": { "$date": { "$numberLong": "1708799328337" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65da19c5bcb38b7c35cf0439" }, - "Region": 19, - "Seed": 80355, - "Activation": { "$date": { "$numberLong": "1708792261563" } }, - "Expiry": { "$date": { "$numberLong": "1708799386141" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65da19c5bcb38b7c35cf043a" }, - "Region": 19, - "Seed": 84029, - "Activation": { "$date": { "$numberLong": "1708792261563" } }, - "Expiry": { "$date": { "$numberLong": "1708797604775" } }, - "Node": "SolNode741", - "MissionType": "MT_ASSAULT", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65da1c95d85bc17a8027c084" }, - "Region": 13, - "Seed": 49327, - "Activation": { "$date": { "$numberLong": "1708792981940" } }, - "Expiry": { "$date": { "$numberLong": "1708799364287" } }, - "Node": "SolNode215", - "MissionType": "MT_INTEL", - "Modifier": "VoidT3", + "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "65da1c95d85bc17a8027c085" }, - "Region": 8, - "Seed": 86479, - "Activation": { "$date": { "$numberLong": "1708792981940" } }, - "Expiry": { "$date": { "$numberLong": "1708798261971" } }, - "Node": "SolNode57", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT3", - "Hard": true + "_id": { "$oid": "65e1d18d85adc0212ca34c2e" }, + "Region": 15, + "Seed": 44417, + "Activation": { "$date": { "$numberLong": "1709298061630" } }, + "Expiry": { "$date": { "$numberLong": "1709304153727" } }, + "Node": "SolNode401", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT3" }, { - "_id": { "$oid": "65da1e7628a8acc24eb10fe1" }, + "_id": { "$oid": "65e1d18d85adc0212ca34c2f" }, "Region": 7, - "Seed": 19643, - "Activation": { "$date": { "$numberLong": "1708793462116" } }, - "Expiry": { "$date": { "$numberLong": "1708798334911" } }, + "Seed": 53996, + "Activation": { "$date": { "$numberLong": "1709298061630" } }, + "Expiry": { "$date": { "$numberLong": "1709302328144" } }, "Node": "SolNode64", "MissionType": "MT_TERRITORY", "Modifier": "VoidT3" }, { - "_id": { "$oid": "65da1e7628a8acc24eb10fe2" }, - "Region": 8, - "Seed": 82309, - "Activation": { "$date": { "$numberLong": "1708793462116" } }, - "Expiry": { "$date": { "$numberLong": "1708799817827" } }, - "Node": "SolNode84", + "_id": { "$oid": "65e1d18d85adc0212ca34c30" }, + "Region": 13, + "Seed": 91560, + "Activation": { "$date": { "$numberLong": "1709298061630" } }, + "Expiry": { "$date": { "$numberLong": "1709303671883" } }, + "Node": "SolNode215", "MissionType": "MT_INTEL", "Modifier": "VoidT3" }, { - "_id": { "$oid": "65da2019ef057ab9d6df2dfe" }, - "Region": 5, - "Seed": 60603, - "Activation": { "$date": { "$numberLong": "1708793881799" } }, - "Expiry": { "$date": { "$numberLong": "1708798796523" } }, - "Node": "SolNode73", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT2" + "_id": { "$oid": "65e1d2b99367fd525c36a3ba" }, + "Region": 6, + "Seed": 68724, + "Activation": { "$date": { "$numberLong": "1709298361515" } }, + "Expiry": { "$date": { "$numberLong": "1709304239499" } }, + "Node": "SolNode93", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT2", + "Hard": true }, { - "_id": { "$oid": "65da2019ef057ab9d6df2dff" }, - "Region": 10, - "Seed": 79201, - "Activation": { "$date": { "$numberLong": "1708793881799" } }, - "Expiry": { "$date": { "$numberLong": "1708800748600" } }, - "Node": "SolNode146", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT2" + "_id": { "$oid": "65e1d2b99367fd525c36a3bb" }, + "Region": 16, + "Seed": 30979, + "Activation": { "$date": { "$numberLong": "1709298361515" } }, + "Expiry": { "$date": { "$numberLong": "1709302870648" } }, + "Node": "SettlementNode1", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "65e1d36e7d8510d49a2cf11d" }, + "Region": 19, + "Seed": 49817, + "Activation": { "$date": { "$numberLong": "1709298542000" } }, + "Expiry": { "$date": { "$numberLong": "1709305496482" } }, + "Node": "SolNode745", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65e1d36e7d8510d49a2cf11e" }, + "Region": 19, + "Seed": 63821, + "Activation": { "$date": { "$numberLong": "1709298542000" } }, + "Expiry": { "$date": { "$numberLong": "1709305008987" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "65e1d5c6b23a426b6c016e05" }, + "Region": 13, + "Seed": 98298, + "Activation": { "$date": { "$numberLong": "1709299141999" } }, + "Expiry": { "$date": { "$numberLong": "1709304989196" } }, + "Node": "SolNode204", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3", + "Hard": true } ], "GlobalUpgrades": [], "FlashSales": [ { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1672591560000" } }, - "EndDate": { "$date": { "$numberLong": "1895849220000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "StartDate": { "$date": { "$numberLong": "1661173200000" } }, + "EndDate": { "$date": { "$numberLong": "1735689600000" } }, "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": true, "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1702380180000" } }, - "EndDate": { "$date": { "$numberLong": "1736767380000" } } + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", @@ -1286,19 +1161,6 @@ "BogoBuy": 0, "BogoGet": 0 }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1735689600000" } }, - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackC", "ShowInMarket": true, @@ -1312,6 +1174,32 @@ "StartDate": { "$date": { "$numberLong": "1704187800000" } }, "EndDate": { "$date": { "$numberLong": "1735723800000" } } }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1702380180000" } }, + "EndDate": { "$date": { "$numberLong": "1736767380000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1672591560000" } }, + "EndDate": { "$date": { "$numberLong": "1895849220000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", "ShowInMarket": true, @@ -1325,75 +1213,6 @@ "StartDate": { "$date": { "$numberLong": "1704187920000" } }, "EndDate": { "$date": { "$numberLong": "1735723920000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704187860000" } }, - "EndDate": { "$date": { "$numberLong": "1735723860000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleC", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 575, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 135, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024BundleB", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 295, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Tails/LNYDragonTail", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 15, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, { "TypeName": "/Lotus/Upgrades/Skins/Dragon/ChromaLNYSkin", "ShowInMarket": true, @@ -1407,705 +1226,6 @@ "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1895587200000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/LNYBirdSugatra", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 15, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 30, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Wings/LNYDragonWings", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 15, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/Emotes/LNY2024DragonEmote", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Interface/Graphics/CustomUI/LunarNewYearStyle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/LNYDragonEphemera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Ogris", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Nukor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNYHookSword", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 75, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 85, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 40, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CernosSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022IgnisSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTiger", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CedoSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Kubrows/Armor/Lunar2022KubrowArmor", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 90, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 15, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/LunarEphemera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/PeachBlossomsEphemera", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/CNY2021Poster", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 45, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022Zarr", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 15, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatWhite", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavat", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 25, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Valentine2017GlyphBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 80, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/Valentine2020GlyphBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/LNY2024SentinelSkinBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 95, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatGold", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706112000000" } }, - "EndDate": { "$date": { "$numberLong": "1708876800000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1708876800000" } } - }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/ConclaveHeartOroOrnament", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 50000, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerValItemA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704131940000" } }, - "EndDate": { "$date": { "$numberLong": "2051287140000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Alad", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Clem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017D", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017A", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Kuva", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Key", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017B", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017C", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017E", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1706803200000" } }, - "EndDate": { "$date": { "$numberLong": "1709222400000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1709222400000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", "ShowInMarket": true, @@ -2118,6 +1238,32 @@ "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1708343940000" } }, "EndDate": { "$date": { "$numberLong": "1767268740000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704187860000" } }, + "EndDate": { "$date": { "$numberLong": "1735723860000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704115200000" } }, + "EndDate": { "$date": { "$numberLong": "1893504000000" } } } ], "InGameMarket": { @@ -2148,68 +1294,6 @@ "/Lotus/Types/StoreItems/Packages/FormaPack" ] }, - { - "CategoryName": "SEASONAL", - "Name": "/Lotus/Language/Store/SeasonalCategoryTitle", - "Icon": "seasonal", - "AddToMenu": true, - "Items": [ - "/Lotus/Types/StoreItems/Packages/Valentine2020GlyphBundle", - "/Lotus/Types/StoreItems/Packages/Valentine2017GlyphBundle", - "/Lotus/Types/StoreItems/Packages/LNY2024BundleC", - "/Lotus/Types/StoreItems/Packages/LNY2024BundleB", - "/Lotus/Types/StoreItems/Packages/LNY2024BundleA", - "/Lotus/StoreItems/Upgrades/Skins/Dragon/ChromaLNYSkin", - "/Lotus/StoreItems/Upgrades/Skins/Effects/LNYDragonEphemera", - "/Lotus/StoreItems/Types/Items/Emotes/LNY2024DragonEmote", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNY2024Ogris", - "/Lotus/Types/StoreItems/Packages/LNY2024SentinelSkinBundle", - "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", - "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", - "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/LNYDragonWings", - "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Tails/LNYDragonTail", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNYHookSword", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", - "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/LNYBirdSugatra", - "/Lotus/StoreItems/Interface/Graphics/CustomUI/LunarNewYearStyle", - "/Lotus/StoreItems/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/LNY2024Nukor", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph", - "/Lotus/StoreItems/Types/Items/ShipDecos/CNY2021Poster", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2023CedoSkin", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", - "/Lotus/StoreItems/Upgrades/Skins/Effects/LunarEphemera", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2023CernosSkin", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyTiger", - "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2022IgnisSkin", - "/Lotus/StoreItems/Upgrades/Skins/Effects/PeachBlossomsEphemera", - "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/Lunar2022KubrowArmor", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2022Zarr", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", - "/Lotus/StoreItems/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", - "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", - "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavatWhite", - "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavatGold", - "/Lotus/StoreItems/Types/Items/ShipDecos/WeGame/LuckyKavat", - "/Lotus/StoreItems/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", - "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerValItemA", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017A", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017B", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017C", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017D", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2017E", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Alad", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Clem", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Key", - "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageValentine2020Kuva", - "/Lotus/StoreItems/Types/Items/ShipDecos/ConclaveHeartOroOrnament" - ] - }, { "CategoryName": "TENNOGEN", "Name": "/Lotus/Language/Menu/Store_Tennogen", @@ -2248,180 +1332,180 @@ }, "Invasions": [ { - "_id": { "$oid": "65d860e98b58d6053003df5a" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode102", - "Count": -34575, - "Goal": 48000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65d1e58ad44a53195b17032d" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 789806, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 199172, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1708680195347" } } - }, - { - "_id": { "$oid": "65d84f56fd2b901dc35c1ca3" }, + "_id": { "$oid": "65ded415afb295267e01cea6" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode132", - "Count": 31008, - "Goal": 31000, + "Node": "SolNode137", + "Count": 44045, + "Goal": 44000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": true, "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 299747, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 883016, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 158959, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1708675595530" } } + "DefenderMissionInfo": { "seed": 144234, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1709103176294" } } }, { - "_id": { "$oid": "65d84f56fd2b901dc35c1ca2" }, + "_id": { "$oid": "65df54fe5771381feaeff2e0" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode132", - "Count": 8167, + "Node": "SolNode131", + "Count": 34194, "Goal": 49000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 898272, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 631777, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 43492, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1708675854616" } } + "DefenderMissionInfo": { "seed": 371647, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1709135966561" } } }, { - "_id": { "$oid": "65d99fa9b02f277934a06c7a" }, + "_id": { "$oid": "65e138f9efef3bd7f1028ef6" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", "Node": "SolNode147", - "Count": -24593, - "Goal": 35000, + "Count": 9477, + "Goal": 32000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", "Completed": false, "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 984730, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/LatronWraithBlueprint", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 192451, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1708761746502" } } + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 883899, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 357566, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1709259891085" } } }, { - "_id": { "$oid": "65d8eeb594ad914fa86ef239" }, - "Faction": "FC_INFESTATION", + "_id": { "$oid": "65def869f9181564486a5193" }, + "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SettlementNode20", - "Count": -30133, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Node": "SolNode100", + "Count": 48036, + "Goal": 48000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "65d8b2f2b0df712dee39ee74" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 923473, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 442408, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1708715701823" } } + "ChainID": { "$oid": "65def869f9181564486a5193" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/KarakWraithBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 273216, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 400175, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1709161134898" } } }, { - "_id": { "$oid": "65d91d954fcb7065ef8905a6" }, + "_id": { "$oid": "65e17cf17953cc2b1b2785f5" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode74", + "Count": -1611, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "65def869f9181564486a5193" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 72809, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 412474, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1709277199678" } } + }, + { + "_id": { "$oid": "65e114a5b860b9aeffee4858" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode32", - "Count": -27455, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "65d8f5bd66e24ecc82e7a991" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 421223, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 10373, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1708727701599" } } - }, - { - "_id": { "$oid": "65d9bcf5f65ed3947897b58e" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode220", - "Count": -46289, - "Goal": 46000, + "Node": "SolNode68", + "Count": -42860, + "Goal": 42000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "ChainID": { "$oid": "65e114a5b860b9aeffee4858" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 355628, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 911342, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1708773545136" } } + "AttackerMissionInfo": { "seed": 611621, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 900360, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1709255747241" } } }, { - "_id": { "$oid": "65d9eaa98123e6c90ad19a64" }, + "_id": { "$oid": "65e12ae92f1e012856ad9a1d" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode210", - "Count": -4272, + "Node": "SolNode84", + "Count": -48491, + "Goal": 48000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 562358, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 708093, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1709259961802" } } + }, + { + "_id": { "$oid": "65e151956111cd7d8c1a0d2e" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode62", + "Count": -37162, + "Goal": 37000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 387037, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 42802, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1709265301663" } } + }, + { + "_id": { "$oid": "65e151956111cd7d8c1a0d2f" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode127", + "Count": -9226, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 900634, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 873229, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 12161, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1708780201094" } } + "DefenderMissionInfo": { "seed": 119787, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1709265301663" } } }, { - "_id": { "$oid": "65d9eaa98123e6c90ad19a65" }, + "_id": { "$oid": "65e175e9035790842d0f5eed" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode217", - "Count": -21032, + "Node": "SolNode78", + "Count": -45684, "Goal": 45000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "Completed": true, + "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 328283, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 577156, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1708780201094" } } - }, - { - "_id": { "$oid": "65da06ca9322f9250d48c2e4" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode209", - "Count": -2439, - "Goal": 31000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 371634, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 630581, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 787945, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1708787402585" } } + "DefenderMissionInfo": { "seed": 247766, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1709274601925" } } }, { - "_id": { "$oid": "65da1e3aee47d2139b366611" }, + "_id": { "$oid": "65e17cf17953cc2b1b2785f6" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode211", - "Count": -91, - "Goal": 32000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode68", + "Count": -27521, + "Goal": 41000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "65d9bcf5f65ed3947897b58e" }, + "ChainID": { "$oid": "65e17cf17953cc2b1b2785f6" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 785982, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 634649, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1708793402058" } } + "AttackerMissionInfo": { "seed": 860206, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 993081, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1709282655817" } } } ], "HubEvents": [], @@ -2429,7 +1513,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9865942 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9875369 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -2445,51 +1529,30 @@ "Activation": { "$date": { "$numberLong": "1563030000000" } } }, { - "_id": { "$oid": "65d99fa9b02f277934a06c79" }, - "Node": "SolNode132", + "_id": { "$oid": "65e138f9efef3bd7f1028ef5" }, + "Node": "SolNode137", "Faction": "FC_CORPUS", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusSquadB", - "ExtraEnemySpec": "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/CorpusIntelTiersBDropship", - "Expiry": { "$date": { "$numberLong": "1708845325533" } } + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusShipEnemySpecs/CorpusShipSquadB", + "ExtraEnemySpec": "", + "Expiry": { "$date": { "$numberLong": "1709331917930" } } + }, + { + "_id": { "$oid": "65e17cf17953cc2b1b2785f4" }, + "Node": "SolNode100", + "Faction": "FC_GRINEER", + "EnemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerSurvivalA", + "ExtraEnemySpec": "", + "Expiry": { "$date": { "$numberLong": "1709336713209" } } } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1708696800000" } }, - "Expiry": { "$date": { "$numberLong": "1708869600000" } }, + "Activation": { "$date": { "$numberLong": "1709906400000" } }, + "Expiry": { "$date": { "$numberLong": "1710075600000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "MercuryHUB", - "Manifest": [ - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Events/InfQuantaInfestedAladV", "PrimePrice": 325, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageInfestedExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponEventRifleImpactDamageMod", "PrimePrice": 330, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponCritDamageModExpert", "PrimePrice": 280, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponFreezeDamageModExpert", "PrimePrice": 350, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/VTDinoSpikeScarf", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/VoidTrader/PrismaGrakata", "PrimePrice": 610, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA", "PrimePrice": 150, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/VTQuanta", "PrimePrice": 300, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/Melee/GrineerMachetteAndCleaver/PrismaMachete", "PrimePrice": 400, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisOdonataSkin", "PrimePrice": 350, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Harlequin/MirageAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Kubrows/Armor/KubrowArmorPrisma", "PrimePrice": 400, "RegularPrice": 175000 }, - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon", "PrimePrice": 80, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Hoverboard/HoverboardStickerBaroA", "PrimePrice": 75, "RegularPrice": 75000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TarotCardTennoConI", "PrimePrice": 75, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", "PrimePrice": 350, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", "PrimePrice": 400, "RegularPrice": 350000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BekranZaftBucketBroom", "PrimePrice": 100, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", "PrimePrice": 350, "RegularPrice": 375000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", "PrimePrice": 300, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisNikana", "PrimePrice": 375, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } - ] + "Node": "SaturnHUB" } ], "PrimeVaultTraders": [ @@ -2630,51 +1693,98 @@ "PreviewHiddenUntil": { "$date": { "$numberLong": "1706814000000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1744394400000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1709233200000" } } } + { + "Expiry": { "$date": { "$numberLong": "1712858400000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1709233200000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitaniaGaraPrimeDualPack" + }, + { "Expiry": { "$date": { "$numberLong": "1715277600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1711648800000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "65da0dd195e344f4904b6c8c" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1708791601821" } }, - "Expiry": { "$date": { "$numberLong": "1708797001821" } }, + "_id": { "$oid": "65e1be91c003870bb76e6988" }, + "Node": "CrewBattleNode518", + "Activation": { "$date": { "$numberLong": "1709295601821" } }, + "Expiry": { "$date": { "$numberLong": "1709301001821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65da0dd195e344f4904b6c8e" }, - "Node": "CrewBattleNode534", - "Activation": { "$date": { "$numberLong": "1708791601827" } }, - "Expiry": { "$date": { "$numberLong": "1708797001827" } }, + "_id": { "$oid": "65e1be91c003870bb76e6989" }, + "Node": "CrewBattleNode512", + "Activation": { "$date": { "$numberLong": "1709295601825" } }, + "Expiry": { "$date": { "$numberLong": "1709301001825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65e1be91c003870bb76e698a" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1709295601827" } }, + "Expiry": { "$date": { "$numberLong": "1709301001827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "65da0dd195e344f4904b6c8d" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1708791601825" } }, - "Expiry": { "$date": { "$numberLong": "1708797001825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "65da0dd195e344f4904b6c8f" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1708791601829" } }, - "Expiry": { "$date": { "$numberLong": "1708797001829" } }, + "_id": { "$oid": "65e1be91c003870bb76e698b" }, + "Node": "CrewBattleNode524", + "Activation": { "$date": { "$numberLong": "1709295601829" } }, + "Expiry": { "$date": { "$numberLong": "1709301001829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "65da0dd195e344f4904b6c90" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1708791601832" } }, - "Expiry": { "$date": { "$numberLong": "1708797001832" } }, + "_id": { "$oid": "65e1be91c003870bb76e698c" }, + "Node": "CrewBattleNode531", + "Activation": { "$date": { "$numberLong": "1709295601832" } }, + "Expiry": { "$date": { "$numberLong": "1709301001832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "65da0dd195e344f4904b6c91" }, + "_id": { "$oid": "65e1be91c003870bb76e698d" }, + "Node": "CrewBattleNode555", + "Activation": { "$date": { "$numberLong": "1709295601834" } }, + "Expiry": { "$date": { "$numberLong": "1709301001834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65e1c7f15b10b16bc550d152" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1709299201821" } }, + "Expiry": { "$date": { "$numberLong": "1709304601821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65e1c7f15b10b16bc550d153" }, + "Node": "CrewBattleNode511", + "Activation": { "$date": { "$numberLong": "1709299201825" } }, + "Expiry": { "$date": { "$numberLong": "1709304601825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "65e1c7f15b10b16bc550d155" }, + "Node": "CrewBattleNode521", + "Activation": { "$date": { "$numberLong": "1709299201829" } }, + "Expiry": { "$date": { "$numberLong": "1709304601829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "65e1c7f15b10b16bc550d154" }, + "Node": "CrewBattleNode501", + "Activation": { "$date": { "$numberLong": "1709299201827" } }, + "Expiry": { "$date": { "$numberLong": "1709304601827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "65e1c7f15b10b16bc550d156" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1709299201832" } }, + "Expiry": { "$date": { "$numberLong": "1709304601832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "65e1c7f15b10b16bc550d157" }, "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1708791601834" } }, - "Expiry": { "$date": { "$numberLong": "1708797001834" } }, + "Activation": { "$date": { "$numberLong": "1709299201834" } }, + "Expiry": { "$date": { "$numberLong": "1709304601834" } }, "ActiveMissionTier": "VoidT4" } ], @@ -2683,14 +1793,14 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnSpark/GrnSparkRifle", - "Activation": { "$date": { "$numberLong": "1708786800000" } }, - "Expiry": { "$date": { "$numberLong": "1708880400000" } }, - "Discount": 50, - "OriginalPrice": 150, - "SalePrice": 75, - "AmountTotal": 150, - "AmountSold": 23 + "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/GrineerPistol/GrineerLightPistol", + "Activation": { "$date": { "$numberLong": "1709254800000" } }, + "Expiry": { "$date": { "$numberLong": "1709348400000" } }, + "Discount": 20, + "OriginalPrice": 75, + "SalePrice": 60, + "AmountTotal": 100, + "AmountSold": 22 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, @@ -2717,17 +1827,6 @@ "subChallenges": [{ "$oid": "65d911ddcdd4e8d30dd56cd6" }, { "$oid": "65d911ddcdd4e8d30dd56cd7" }, { "$oid": "65d911ddcdd4e8d30dd56cd8" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, - { - "_id": { "$oid": "65d911ddcdd4e8d30dd56cd8" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1708724701832" } }, - "endDate": { "$date": { "$numberLong": "1709329501832" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, { "_id": { "$oid": "65d911ddcdd4e8d30dd56cd7" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", @@ -2740,10 +1839,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "65d969c14e52f0b099fd5de0" }, + "_id": { "$oid": "65d911ddcdd4e8d30dd56cd8" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1708724701832" } }, + "endDate": { "$date": { "$numberLong": "1709329501832" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "65e15646ac2f1a827151b202" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2751,10 +1861,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65d969c14e52f0b099fd5de1" }, + "_id": { "$oid": "65e15646ac2f1a827151b203" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2762,10 +1872,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65d969c14e52f0b099fd5de2" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "_id": { "$oid": "65e15646ac2f1a827151b204" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeEASY", + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2773,21 +1883,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65d969c14e52f0b099fd5de4" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], + "_id": { "$oid": "65e15646ac2f1a827151b206" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsMEDIUM", + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65d969c14e52f0b099fd5de3" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingHARD", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "_id": { "$oid": "65e15646ac2f1a827151b205" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -2795,21 +1905,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65d969c14e52f0b099fd5de5" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "65d969c14e52f0b099fd5de6" }, + "_id": { "$oid": "65e15646ac2f1a827151b209" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, "params": [{ "n": "ScriptParamValue", "v": 2 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", @@ -2817,10 +1916,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65d969c14e52f0b099fd5de7" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM", - "startDate": { "$date": { "$numberLong": "1708747201749" } }, - "endDate": { "$date": { "$numberLong": "1708833601749" } }, + "_id": { "$oid": "65e15646ac2f1a827151b208" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD", + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", @@ -2828,27 +1927,27 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65da1e3a8c6389d45b646e42" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedAffectorSuperPowerDamage", - "startDate": { "$date": { "$numberLong": "1708793402078" } }, - "endDate": { "$date": { "$numberLong": "1708794002078" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], + "_id": { "$oid": "65e15646ac2f1a827151b207" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY", + "startDate": { "$date": { "$numberLong": "1709266502025" } }, + "endDate": { "$date": { "$numberLong": "1709352902025" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], - "Category": "PVPChallengeTypeCategory_MODEAFFECTOR" + "Category": "PVPChallengeTypeCategory_DAILY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [77.9859887021797, 103.64227436509337, 0], + "ProjectPct": [81.39363698309623, 114.01275184327892, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Gara", "Khora", "Revenant"] }, - { "Category": "EXC_HARD", "Choices": ["Bo", "Latron", "Furis", "Furax", "Strun"] } + { "Category": "EXC_NORMAL", "Choices": ["Garuda", "Baruuk", "Hildryn"] }, + { "Category": "EXC_HARD", "Choices": ["Lex", "Magistar", "Boltor", "Bronco", "CeramicDagger"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ @@ -2868,69 +1967,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001200130000000000000182" }, + "_id": { "$oid": "001200140000000000000195" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1708560000000" } }, - "Expiry": { "$date": { "$numberLong": "1708819200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyAimGlide" + "Activation": { "$date": { "$numberLong": "1709078400000" } }, + "Expiry": { "$date": { "$numberLong": "1709337600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithHeadshots" }, { - "_id": { "$oid": "001200130000000000000183" }, + "_id": { "$oid": "001200140000000000000196" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1708646400000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithAbilities" + "Activation": { "$date": { "$numberLong": "1709164800000" } }, + "Expiry": { "$date": { "$numberLong": "1709424000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithMagnetic" }, { - "_id": { "$oid": "001200130000000000000184" }, + "_id": { "$oid": "001200140000000000000197" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1708732800000" } }, - "Expiry": { "$date": { "$numberLong": "1708992000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyHijackCrewship" + "Activation": { "$date": { "$numberLong": "1709251200000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithViral" }, { - "_id": { "$oid": "001200130000000000000172" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions13" + "_id": { "$oid": "001200140000000000000186" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions14" }, { - "_id": { "$oid": "001200130000000000000173" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus13" + "_id": { "$oid": "001200140000000000000187" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus14" }, { - "_id": { "$oid": "001200130000000000000174" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies13" + "_id": { "$oid": "001200140000000000000188" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies14" }, { - "_id": { "$oid": "001200130000000000000175" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSortie" + "_id": { "$oid": "001200140000000000000189" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyVenusBounties" }, { - "_id": { "$oid": "001200130000000000000176" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRequiemTotem" + "_id": { "$oid": "001200140000000000000190" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUseForma" }, { - "_id": { "$oid": "001200130000000000000177" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteBeastSlayer" + "_id": { "$oid": "001200140000000000000191" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardTerminated" }, { - "_id": { "$oid": "001200130000000000000178" }, - "Activation": { "$date": { "$numberLong": "1708300800000" } }, - "Expiry": { "$date": { "$numberLong": "1708905600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardUnlockRelics" + "_id": { "$oid": "001200140000000000000192" }, + "Activation": { "$date": { "$numberLong": "1708905600000" } }, + "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsMirrorDefense" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":555}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":550}" } -- 2.47.2 From 6a6d2cb41b8792f64e26665031d03ff9968e28dd Mon Sep 17 00:00:00 2001 From: lonewolf0708 Date: Sun, 3 Mar 2024 19:01:23 -0500 Subject: [PATCH 065/522] fix: personalRoomsTypes.ts missing import (#136) --- src/types/personalRoomsTypes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/personalRoomsTypes.ts b/src/types/personalRoomsTypes.ts index 7c9b91f0..d481808a 100644 --- a/src/types/personalRoomsTypes.ts +++ b/src/types/personalRoomsTypes.ts @@ -1,4 +1,4 @@ -import { IApartment, IRooms } from "@/src/types/shipTypes"; +import { IApartment, IRooms, IPlacedDecosDatabase } from "@/src/types/shipTypes"; import { Model, Types } from "mongoose"; export interface IOrbiter { -- 2.47.2 From 1c28a4025884e1ea51bfd07e44c442d629b6c6c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Thu, 4 Apr 2024 01:55:51 +0300 Subject: [PATCH 066/522] feat: theme saving (#137) --- src/controllers/api/updateThemeController.ts | 25 ++++++++++++++++++++ src/routes/api.ts | 2 ++ src/services/inventoryService.ts | 11 ++++++++- src/types/requestTypes.ts | 6 +++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/controllers/api/updateThemeController.ts diff --git a/src/controllers/api/updateThemeController.ts b/src/controllers/api/updateThemeController.ts new file mode 100644 index 00000000..5da05cb3 --- /dev/null +++ b/src/controllers/api/updateThemeController.ts @@ -0,0 +1,25 @@ +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { updateTheme } from "@/src/services/inventoryService"; +import { IThemeUpdateRequest } from "@/src/types/requestTypes"; +import { RequestHandler } from "express"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const updateThemeController: RequestHandler = async (request, response) => { + const accountId = request.query.accountId as string; + const body = String(request.body); + + try { + const json = getJSONfromString(body) as IThemeUpdateRequest; + if (typeof json !== "object") { + throw new Error("Invalid data format"); + } + + await updateTheme(json, accountId); + } catch (err) { + console.error("Error parsing JSON data:", err); + } + + response.json({}); +}; + +export { updateThemeController }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 71648809..1d550502 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -40,6 +40,7 @@ import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompl import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController"; import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; import { setActiveShipController } from "@/src/controllers/api/setActiveShipController"; +import { updateThemeController } from "../controllers/api/updateThemeController"; const apiRouter = express.Router(); @@ -90,5 +91,6 @@ apiRouter.post("/rerollRandomMod.php", rerollRandomModController); apiRouter.post("/joinSession.php", joinSessionController); apiRouter.post("/saveLoadout.php", saveLoadoutController); apiRouter.post("/trainingResult.php", trainingResultController); +apiRouter.post("/updateTheme.php", updateThemeController); export { apiRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index cc7fd350..8dd086fa 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -15,7 +15,7 @@ import { IRawUpgrade } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate } from "../types/genericUpdate"; -import { IArtifactsRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes"; +import { IArtifactsRequest, IMissionInventoryUpdateRequest, IThemeUpdateRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal } from "@/src/services/itemDataService"; @@ -150,6 +150,15 @@ export const updateGeneric = async (data: IGenericUpdate, accountId: string) => return data; }; +export const updateTheme = async (data: IThemeUpdateRequest, accountId: string) => { + const inventory = await getInventory(accountId); + if (data.Style) inventory.ThemeStyle = data.Style; + if (data.Background) inventory.ThemeBackground = data.Background; + if (data.Sounds) inventory.ThemeSounds = data.Sounds; + + await inventory.save(); +}; + export const addWeapon = async ( weaponType: WeaponTypeInternal, weaponName: string, diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index e4f94980..1be732a6 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -17,6 +17,12 @@ export interface IArtifactsRequest { FusionPointCost: number; } +export interface IThemeUpdateRequest { + Style?: string; + Background?: string; + Sounds?: string; +} + export interface IMissionInventoryUpdateRequest { rewardsMultiplier?: number; ActiveBoosters?: IBooster[]; -- 2.47.2 From a3dd1f2ebca68022940cbbd2eca862e179fbc30e Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Sat, 6 Apr 2024 00:09:27 +0200 Subject: [PATCH 067/522] fix: github actions packages version (#139) Co-authored-by: AMelonInsideLemon --- .github/workflows/prettier.yml | 6 +- static/fixed_responses/allMissions.json | 2 +- static/json/missions-drop-table.json | 4730 ++++++++++++++++- .../scripts/missions-drop-table-get-script.js | 257 +- 4 files changed, 4983 insertions(+), 12 deletions(-) diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 26270f08..85fcd1fa 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -7,17 +7,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3.5.2 + uses: actions/checkout@v4.1.2 with: ref: ${{ github.head_ref }} - name: Setup Node.js environment - uses: actions/setup-node@v2.5.2 + uses: actions/setup-node@v4.0.2 with: node-version: "18.x" - run: npm ci - run: npm run prettier - name: Commit changes - uses: stefanzweifel/git-auto-commit-action@v4.16.0 + uses: stefanzweifel/git-auto-commit-action@v5.0.0 with: commit_message: Apply prettier changes branch: ${{ github.head_ref }} diff --git a/static/fixed_responses/allMissions.json b/static/fixed_responses/allMissions.json index 8cfc4129..cbc51f5f 100644 --- a/static/fixed_responses/allMissions.json +++ b/static/fixed_responses/allMissions.json @@ -1498,4 +1498,4 @@ "Tier": 1, "Tag": "PlutoToErisJunction" } -] \ No newline at end of file +] diff --git a/static/json/missions-drop-table.json b/static/json/missions-drop-table.json index f720ca1c..d7d44eb7 100644 --- a/static/json/missions-drop-table.json +++ b/static/json/missions-drop-table.json @@ -1 +1,4729 @@ -{"SolNode94":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode130":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode119":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode12":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode28":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"SolNode108":[{"chance":38.72,"name":"Seer Blueprint"},{"chance":38.72,"name":"Seer Barrel"},{"chance":22.56,"name":"Seer Receiver"}],"SolNode224":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode225":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode123":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode61":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"SolNode23":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode109":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode104":[{"chance":38.72,"name":"Rhino Neuroptics Blueprint"},{"chance":38.72,"name":"Rhino Chassis Blueprint"},{"chance":22.56,"name":"Rhino Systems Blueprint"}],"SolNode66":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"ClanNode1":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.28,"name":"True Punishment","rotation":"C"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode107":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode22":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode101":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"ClanNode0":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode902":[{"chance":5.64,"name":"Morphic Transformer"},{"chance":38.72,"name":"Automatic Trigger"},{"chance":5.64,"name":"Phaedra Receiver"},{"chance":38.72,"name":"Extend"},{"chance":5.64,"name":"Shell Rush"},{"chance":5.64,"name":"Shell Rush"}],"SolNode63":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode79":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode39":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode15":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode26":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode85":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode75":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.18,"name":"300X Ferrite","rotation":"B"},{"chance":12.18,"name":"150X Rubedo","rotation":"B"},{"chance":12.18,"name":"Detonite Ampule","rotation":"B"},{"chance":12.18,"name":"100 Endo","rotation":"B"},{"chance":12.18,"name":"100 Endo","rotation":"B"},{"chance":12.18,"name":"3,000 Credits Cache","rotation":"B"},{"chance":12.18,"name":"3,000 Credits Cache","rotation":"B"},{"chance":12.18,"name":"Neurodes","rotation":"B"},{"chance":2.58,"name":"Kubrow Egg","rotation":"B"},{"chance":15.1,"name":"Health Restore (Large)","rotation":"C"},{"chance":15.1,"name":"Health Restore (Large)","rotation":"C"},{"chance":15.1,"name":"200 Endo","rotation":"C"},{"chance":15.1,"name":"200 Endo","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"Bite","rotation":"C"},{"chance":3.67,"name":"Link Armor","rotation":"C"},{"chance":3.67,"name":"Link Health","rotation":"C"},{"chance":3.67,"name":"Link Shields","rotation":"C"},{"chance":3.67,"name":"Maul","rotation":"C"},{"chance":3.67,"name":"Hastened Deflection","rotation":"C"},{"chance":2,"name":"Forma Blueprint","rotation":"C"},{"chance":0.5,"name":"Forma","rotation":"C"}],"SolNode24":[{"chance":38.72,"name":"Hydroid Neuroptics Blueprint"},{"chance":38.72,"name":"Hydroid Chassis Blueprint"},{"chance":22.56,"name":"Hydroid Systems Blueprint"}],"ClanNode2":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode903":[{"chance":38.72,"name":"Polar Magazine"},{"chance":38.72,"name":"Superior Defenses"},{"chance":3.76,"name":"Meteor Crash"},{"chance":3.76,"name":"Nebula Bore"},{"chance":3.76,"name":"Astral Slash"},{"chance":3.76,"name":"Comet Blast"},{"chance":3.76,"name":"Quasar Drill"},{"chance":3.76,"name":"Zodiac Shred"}],"ClanNode3":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode30":[{"chance":14.29,"name":"Lith G6 Relic","rotation":"A"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"A"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"A"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"A"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"A"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"A"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":14.29,"name":"Meso P11 Relic","rotation":"C"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"C"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"C"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"C"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"C"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"C"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"C"}],"SolNode46":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode106":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode41":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode16":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode45":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode36":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"ClanNode8":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode99":[{"chance":38.72,"name":"Excalibur Neuroptics Blueprint"},{"chance":38.72,"name":"Excalibur Chassis Blueprint"},{"chance":22.56,"name":"Excalibur Systems Blueprint"}],"SolNode65":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"ClanNode9":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode904":[{"chance":5.64,"name":"Morphic Transformer"},{"chance":38.72,"name":"Automatic Trigger"},{"chance":5.64,"name":"Phaedra Receiver"},{"chance":38.72,"name":"Extend"},{"chance":5.64,"name":"Shell Rush"},{"chance":5.64,"name":"Shell Rush"}],"SolNode87":[{"chance":27.78,"name":"5X Hexenon","rotation":"A"},{"chance":5.56,"name":"Meso P11 Relic","rotation":"A"},{"chance":5.56,"name":"Meso G5 Relic","rotation":"A"},{"chance":5.56,"name":"Meso K6 Relic","rotation":"A"},{"chance":5.56,"name":"Meso P13 Relic","rotation":"A"},{"chance":11.11,"name":"Proton Pulse","rotation":"A"},{"chance":11.11,"name":"Motus Signal","rotation":"A"},{"chance":11.11,"name":"Aero Periphery","rotation":"A"},{"chance":5.56,"name":"Meso C8 Relic","rotation":"A"},{"chance":5.56,"name":"Meso K4 Relic","rotation":"A"},{"chance":5.56,"name":"Meso S12 Relic","rotation":"A"},{"chance":27.78,"name":"10X Hexenon","rotation":"B"},{"chance":5.56,"name":"Neo F2 Relic","rotation":"B"},{"chance":5.56,"name":"Neo T7 Relic","rotation":"B"},{"chance":5.56,"name":"Neo K5 Relic","rotation":"B"},{"chance":11.11,"name":"Proton Jet","rotation":"B"},{"chance":11.11,"name":"Motus Impact","rotation":"B"},{"chance":11.11,"name":"Aero Vantage","rotation":"B"},{"chance":5.56,"name":"Neo D7 Relic","rotation":"B"},{"chance":5.56,"name":"Neo C4 Relic","rotation":"B"},{"chance":5.56,"name":"Neo L3 Relic","rotation":"B"},{"chance":5.56,"name":"Neo N23 Relic","rotation":"B"},{"chance":30,"name":"15X Hexenon","rotation":"C"},{"chance":5,"name":"Axi H6 Relic","rotation":"C"},{"chance":5,"name":"Axi A16 Relic","rotation":"C"},{"chance":5,"name":"Axi G10 Relic","rotation":"C"},{"chance":10,"name":"Proton Snap","rotation":"C"},{"chance":10,"name":"Motus Setup","rotation":"C"},{"chance":10,"name":"Aero Agility","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"},{"chance":5,"name":"Axi B6 Relic","rotation":"C"},{"chance":5,"name":"Axi K11 Relic","rotation":"C"},{"chance":5,"name":"Axi W3 Relic","rotation":"C"},{"chance":5,"name":"Axi H7 Relic","rotation":"C"}],"SolNode88":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode97":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode126":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"SolNode125":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode100":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode25":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode121":[{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode53":[{"chance":38.72,"name":"Valkyr Neuroptics Blueprint"},{"chance":38.72,"name":"Valkyr Chassis Blueprint"},{"chance":22.56,"name":"Valkyr Systems Blueprint"}],"SolNode740":[{"chance":22.56,"name":"Wisp Blueprint"},{"chance":25.81,"name":"Wisp Chassis Blueprint"},{"chance":25.81,"name":"Wisp Neuroptics Blueprint"},{"chance":25.81,"name":"Wisp Systems Blueprint"}],"ClanNode4":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode73":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode905":[{"chance":25.81,"name":"Glacial Edge"},{"chance":25.81,"name":"Conductive Blade"},{"chance":25.81,"name":"Tempered Blade"},{"chance":3.76,"name":"Meteor Crash"},{"chance":3.76,"name":"Nebula Bore"},{"chance":3.76,"name":"Astral Slash"},{"chance":3.76,"name":"Comet Blast"},{"chance":3.76,"name":"Quasar Drill"},{"chance":3.76,"name":"Zodiac Shred"}],"ClanNode5":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode42":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode96":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode67":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode32":[{"chance":38.72,"name":"Ember Neuroptics Blueprint"},{"chance":38.72,"name":"Ember Chassis Blueprint"},{"chance":22.56,"name":"Ember Systems Blueprint"}],"SolNode18":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode70":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode31":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode50":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"SolNode82":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode906":[{"chance":5.06,"name":"400 Endo"},{"chance":3.16,"name":"400 Endo"},{"chance":1.01,"name":"400 Endo"},{"chance":1.01,"name":"400 Endo"},{"chance":5.06,"name":"400 Endo"},{"chance":5.06,"name":"Tempered Blade"},{"chance":5.06,"name":"Sudden Impact"},{"chance":5.06,"name":"Poisonous Sting"},{"chance":5.06,"name":"Glacial Edge"},{"chance":5.06,"name":"Conductive Blade"},{"chance":5.06,"name":"Furor"},{"chance":3.16,"name":"Extend"},{"chance":3.16,"name":"Superior Defenses"},{"chance":3.16,"name":"Cutting Edge"},{"chance":3.16,"name":"System Reroute"},{"chance":3.16,"name":"Efficient Transferral"},{"chance":3.16,"name":"Blazing Steel"},{"chance":5.06,"name":"Meso P11 Relic"},{"chance":5.06,"name":"Meso G5 Relic"},{"chance":5.06,"name":"Meso K6 Relic"},{"chance":5.06,"name":"Meso P13 Relic"},{"chance":5.06,"name":"Meso C8 Relic"},{"chance":5.06,"name":"Meso K4 Relic"},{"chance":5.06,"name":"Meso S12 Relic"}],"ClanNode13":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode12":[{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":2.58,"name":"Expel Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Smite Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Meso P11 Relic","rotation":"B"},{"chance":10,"name":"Meso G5 Relic","rotation":"B"},{"chance":10,"name":"Meso K6 Relic","rotation":"B"},{"chance":10,"name":"Meso P13 Relic","rotation":"B"},{"chance":10,"name":"Meso C8 Relic","rotation":"B"},{"chance":10,"name":"Meso K4 Relic","rotation":"B"},{"chance":10,"name":"Meso S12 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Enduring Strike","rotation":"C"},{"chance":10,"name":"Neo F2 Relic","rotation":"C"},{"chance":10,"name":"Neo T7 Relic","rotation":"C"},{"chance":10,"name":"Neo K5 Relic","rotation":"C"},{"chance":10,"name":"Neo D7 Relic","rotation":"C"},{"chance":10,"name":"Neo C4 Relic","rotation":"C"},{"chance":10,"name":"Neo L3 Relic","rotation":"C"},{"chance":10,"name":"Neo N23 Relic","rotation":"C"}],"SolNode33":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode105":[{"chance":11.28,"name":"Equinox Night Aspect Blueprint"},{"chance":12.91,"name":"Equinox Night Chassis Blueprint"},{"chance":12.91,"name":"Equinox Night Neuroptics Blueprint"},{"chance":12.91,"name":"Equinox Night Systems Blueprint"},{"chance":11.28,"name":"Equinox Day Aspect Blueprint"},{"chance":12.91,"name":"Equinox Day Chassis Blueprint"},{"chance":12.91,"name":"Equinox Day Neuroptics Blueprint"},{"chance":12.91,"name":"Equinox Day Systems Blueprint"}],"SolNode64":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode69":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode98":[{"chance":20,"name":"3,000 Credits Cache","rotation":"A"},{"chance":20,"name":"3,000 Credits Cache","rotation":"A"},{"chance":20,"name":"300X Polymer Bundle","rotation":"A"},{"chance":20,"name":"200 Endo","rotation":"A"},{"chance":20,"name":"200 Endo","rotation":"A"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"200 Endo","rotation":"B"},{"chance":15.49,"name":"200 Endo","rotation":"B"},{"chance":15.49,"name":"300X Plastids","rotation":"B"},{"chance":4.51,"name":"Battering Maneuver","rotation":"B"},{"chance":4.51,"name":"Mobilize","rotation":"B"},{"chance":4.51,"name":"Piercing Step","rotation":"B"},{"chance":4.51,"name":"Rending Turn","rotation":"B"},{"chance":4.51,"name":"Patagium","rotation":"B"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":4.51,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"2X Gallium","rotation":"C"},{"chance":15.49,"name":"3X Gallium","rotation":"C"},{"chance":15.49,"name":"250X Oxium","rotation":"C"},{"chance":15.49,"name":"Tellurium","rotation":"C"},{"chance":4.51,"name":"Lightning Dash","rotation":"C"},{"chance":4.51,"name":"Firewalker","rotation":"C"},{"chance":4.51,"name":"Ice Spring","rotation":"C"},{"chance":4.51,"name":"Toxic Flight","rotation":"C"}],"SolNode9":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"SolNode60":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"ClanNode16":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":13.56,"name":"Neo F2 Relic","rotation":"C"},{"chance":13.56,"name":"Neo T7 Relic","rotation":"C"},{"chance":13.56,"name":"Neo K5 Relic","rotation":"C"},{"chance":5.08,"name":"Universal Medallion","rotation":"C"},{"chance":13.56,"name":"Neo D7 Relic","rotation":"C"},{"chance":13.56,"name":"Neo C4 Relic","rotation":"C"},{"chance":13.56,"name":"Neo L3 Relic","rotation":"C"},{"chance":13.56,"name":"Neo N23 Relic","rotation":"C"}],"SolNode122":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode907":[{"chance":2.51,"name":"Automatic Trigger","rotation":"A"},{"chance":2.51,"name":"Combustion Rounds","rotation":"A"},{"chance":2.51,"name":"Dual Rounds","rotation":"A"},{"chance":2.51,"name":"Hollowed Bullets","rotation":"A"},{"chance":2.51,"name":"Magazine Extension","rotation":"A"},{"chance":2.51,"name":"Modified Munitions","rotation":"A"},{"chance":2.51,"name":"Parallax Scope","rotation":"A"},{"chance":2.51,"name":"Rubedo-Lined Barrel","rotation":"A"},{"chance":2.51,"name":"Venomous Clip","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"A"},{"chance":10,"name":"Superior Defenses","rotation":"B"},{"chance":10,"name":"Bleeding Edge","rotation":"B"},{"chance":10,"name":"Superior Defenses","rotation":"B"},{"chance":10,"name":"Argon Plating","rotation":"B"},{"chance":10,"name":"Furor","rotation":"B"},{"chance":10,"name":"Glacial Edge","rotation":"B"},{"chance":10,"name":"Electrified Barrel","rotation":"B"},{"chance":10,"name":"Energy Inversion","rotation":"B"},{"chance":10,"name":"250 Endo","rotation":"B"},{"chance":10,"name":"250 Endo","rotation":"B"},{"chance":22.56,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"Axi H6 Relic","rotation":"C"},{"chance":9.68,"name":"Axi A16 Relic","rotation":"C"},{"chance":9.68,"name":"Axi G10 Relic","rotation":"C"},{"chance":9.68,"name":"Axi B6 Relic","rotation":"C"},{"chance":9.68,"name":"Axi K11 Relic","rotation":"C"},{"chance":9.68,"name":"Axi W3 Relic","rotation":"C"},{"chance":9.68,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode17":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode1":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode17":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode78":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode6":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode127":[{"chance":38.72,"name":"Loki Neuroptics Blueprint"},{"chance":38.72,"name":"Loki Chassis Blueprint"},{"chance":22.56,"name":"Loki Systems Blueprint"}],"SolNode118":[{"chance":100,"name":"2X 10,000 Credits Cache","rotation":"A"},{"chance":100,"name":"3X 10,000 Credits Cache","rotation":"B"},{"chance":95,"name":"5X 10,000 Credits Cache","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"}],"SolNode84":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"ClanNode20":[{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"250 Endo","rotation":"A"},{"chance":2.58,"name":"Expel Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Smite Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Neo F2 Relic","rotation":"B"},{"chance":10,"name":"Neo T7 Relic","rotation":"B"},{"chance":10,"name":"Neo K5 Relic","rotation":"B"},{"chance":10,"name":"Neo D7 Relic","rotation":"B"},{"chance":10,"name":"Neo C4 Relic","rotation":"B"},{"chance":10,"name":"Neo L3 Relic","rotation":"B"},{"chance":10,"name":"Neo N23 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Life Strike","rotation":"C"},{"chance":10,"name":"Axi H6 Relic","rotation":"C"},{"chance":10,"name":"Axi A16 Relic","rotation":"C"},{"chance":10,"name":"Axi G10 Relic","rotation":"C"},{"chance":10,"name":"Axi B6 Relic","rotation":"C"},{"chance":10,"name":"Axi K11 Relic","rotation":"C"},{"chance":10,"name":"Axi W3 Relic","rotation":"C"},{"chance":10,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode21":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode72":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode48":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode76":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode51":[{"chance":38.72,"name":"Trinity Neuroptics Blueprint"},{"chance":38.72,"name":"Trinity Chassis Blueprint"},{"chance":22.56,"name":"Trinity Systems Blueprint"}],"SolNode56":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"Orokin Cell","rotation":"C"},{"chance":12.58,"name":"Gallium","rotation":"C"},{"chance":12.58,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode43":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"SolNode81":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode24":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode102":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"ClanNode25":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode135":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode132":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode139":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode141":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode137":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode144":[{"chance":38.72,"name":"Frost Neuroptics Blueprint"},{"chance":38.72,"name":"Frost Chassis Blueprint"},{"chance":22.56,"name":"Frost Systems Blueprint"}],"SolNode149":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode147":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode146":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode23":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.28,"name":"True Punishment","rotation":"C"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"ClanNode22":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode153":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode162":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode167":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"150 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Nidus Systems Blueprint","rotation":"C"},{"chance":14.29,"name":"Nidus Neuroptics Blueprint","rotation":"C"},{"chance":14.29,"name":"Nidus Chassis Blueprint","rotation":"C"},{"chance":14.29,"name":"Vital Sense","rotation":"C"},{"chance":14.29,"name":"Metal Auger","rotation":"C"},{"chance":14.29,"name":"Stretch","rotation":"C"},{"chance":14.29,"name":"300 Endo","rotation":"C"}],"SolNode166":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode18":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode172":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode19":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Life Strike","rotation":"C"},{"chance":12.5,"name":"Axi H6 Relic","rotation":"C"},{"chance":12.5,"name":"Axi A16 Relic","rotation":"C"},{"chance":12.5,"name":"Axi G10 Relic","rotation":"C"},{"chance":12.5,"name":"Axi B6 Relic","rotation":"C"},{"chance":12.5,"name":"Axi K11 Relic","rotation":"C"},{"chance":12.5,"name":"Axi W3 Relic","rotation":"C"},{"chance":12.5,"name":"Axi H7 Relic","rotation":"C"}],"SolNode175":[{"chance":16.67,"name":"3,000 Credits Cache","rotation":"A"},{"chance":16.67,"name":"3,000 Credits Cache","rotation":"A"},{"chance":16.67,"name":"200 Endo","rotation":"A"},{"chance":16.67,"name":"200 Endo","rotation":"A"},{"chance":16.67,"name":"1000X Nano Spores","rotation":"A"},{"chance":16.67,"name":"Thief's Wit","rotation":"A"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"300 Endo","rotation":"B"},{"chance":15.49,"name":"350X Plastids","rotation":"B"},{"chance":15.49,"name":"3X Mutagen Sample","rotation":"B"},{"chance":5.64,"name":"Contagious Spread","rotation":"B"},{"chance":5.64,"name":"Pathogen Rounds","rotation":"B"},{"chance":5.64,"name":"Infected Clip","rotation":"B"},{"chance":5.64,"name":"Fever Strike","rotation":"B"},{"chance":15.49,"name":"Neurodes","rotation":"C"},{"chance":15.49,"name":"2X Neurodes","rotation":"C"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":4.51,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"Enemy Sense","rotation":"C"},{"chance":4.51,"name":"Mutalist Alad V Nav Coordinate","rotation":"C"},{"chance":4.51,"name":"High Voltage","rotation":"C"},{"chance":4.51,"name":"Shell Shock","rotation":"C"},{"chance":4.51,"name":"Firestorm","rotation":"C"}],"SolNode177":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":10.2,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.2,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.2,"name":"Axi G10 Relic","rotation":"C"},{"chance":7.84,"name":"Gauss Chassis Blueprint","rotation":"C"},{"chance":7.84,"name":"Gauss Neuroptics Blueprint","rotation":"C"},{"chance":7.84,"name":"Gauss Systems Blueprint","rotation":"C"},{"chance":5.1,"name":"Universal Medallion","rotation":"C"},{"chance":10.2,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.2,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.2,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.2,"name":"Axi H7 Relic","rotation":"C"}],"SolNode184":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"Orokin Cell","rotation":"C"},{"chance":12.58,"name":"Gallium","rotation":"C"},{"chance":12.58,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode183":[{"chance":75.5,"name":"5,000 Credits Cache"},{"chance":22,"name":"250 Endo"},{"chance":0.5,"name":"Forma Blueprint"},{"chance":0.5,"name":"Crimson Dervish"},{"chance":0.5,"name":"Astral Twilight"},{"chance":0.5,"name":"Blind Justice"},{"chance":0.25,"name":"Tempo Royale"},{"chance":0.25,"name":"Vengeful Revenant"}],"SolNode190":[{"chance":75.88,"name":"4,000 Credits Cache"},{"chance":22.11,"name":"250 Endo"},{"chance":0.34,"name":"Forma Blueprint"},{"chance":0.34,"name":"Crushing Ruin"},{"chance":0.34,"name":"Final Harbinger"},{"chance":0.34,"name":"Vermillion Storm"},{"chance":0.34,"name":"Stalking Fan"},{"chance":0.34,"name":"Decisive Judgement"}],"SolNode185":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"SolNode187":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode188":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"SolNode189":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode199":[{"chance":75.5,"name":"5,000 Credits Cache"},{"chance":22,"name":"250 Endo"},{"chance":0.5,"name":"Forma Blueprint"},{"chance":0.5,"name":"Crimson Dervish"},{"chance":0.5,"name":"Astral Twilight"},{"chance":0.5,"name":"Blind Justice"},{"chance":0.25,"name":"Tempo Royale"},{"chance":0.25,"name":"Vengeful Revenant"}],"SolNode193":[{"chance":38.72,"name":"Saryn Neuroptics Blueprint"},{"chance":38.72,"name":"Saryn Chassis Blueprint"},{"chance":22.56,"name":"Saryn Systems Blueprint"}],"SolNode195":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode14":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode15":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode203":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode210":[{"chance":38.72,"name":"Nova Neuroptics Blueprint"},{"chance":38.72,"name":"Nova Chassis Blueprint"},{"chance":22.56,"name":"Nova Systems Blueprint"}],"SolNode216":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode211":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode215":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode212":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode217":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"ClanNode6":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode7":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode400":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode401":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode402":[{"chance":6.67,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.67,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"A"},{"chance":6.67,"name":"Aya","rotation":"A"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"B"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"B"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"B"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"B"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"B"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"B"},{"chance":2.05,"name":"Meso P11 Relic","rotation":"B"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"B"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"B"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"B"},{"chance":2.05,"name":"Meso P13 Relic","rotation":"B"},{"chance":2.05,"name":"Meso C8 Relic","rotation":"B"},{"chance":2.05,"name":"Meso K4 Relic","rotation":"B"},{"chance":2.05,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":6.67,"name":"Lith G6 Relic","rotation":"C"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"C"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"C"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"C"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"C"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"C"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"C"},{"chance":6.67,"name":"Meso P11 Relic","rotation":"C"},{"chance":6.67,"name":"Meso G5 Relic","rotation":"C"},{"chance":6.67,"name":"Meso K6 Relic","rotation":"C"},{"chance":6.67,"name":"Meso P13 Relic","rotation":"C"},{"chance":6.67,"name":"Meso C8 Relic","rotation":"C"},{"chance":6.67,"name":"Meso K4 Relic","rotation":"C"},{"chance":6.67,"name":"Meso S12 Relic","rotation":"C"},{"chance":6.67,"name":"Aya","rotation":"C"}],"SolNode403":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode404":[{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Bullet Dance","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode405":[{"chance":11.06,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"A"},{"chance":2.05,"name":"Meso P11 Relic","rotation":"A"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"A"},{"chance":2.05,"name":"Meso P13 Relic","rotation":"A"},{"chance":2.05,"name":"Meso C8 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K4 Relic","rotation":"A"},{"chance":2.05,"name":"Meso S12 Relic","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.05,"name":"Neo F2 Relic","rotation":"B"},{"chance":2.05,"name":"Neo F2 Relic","rotation":"B"},{"chance":2.05,"name":"Neo T7 Relic","rotation":"B"},{"chance":2.05,"name":"Neo K5 Relic","rotation":"B"},{"chance":2.05,"name":"Neo D7 Relic","rotation":"B"},{"chance":2.05,"name":"Neo C4 Relic","rotation":"B"},{"chance":2.05,"name":"Neo L3 Relic","rotation":"B"},{"chance":2.05,"name":"Neo N23 Relic","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":6.49,"name":"Meso P11 Relic","rotation":"C"},{"chance":1.29,"name":"Meso P11 Relic","rotation":"C"},{"chance":6.49,"name":"Meso G5 Relic","rotation":"C"},{"chance":6.49,"name":"Meso K6 Relic","rotation":"C"},{"chance":6.49,"name":"Meso P13 Relic","rotation":"C"},{"chance":6.49,"name":"Meso C8 Relic","rotation":"C"},{"chance":6.49,"name":"Meso K4 Relic","rotation":"C"},{"chance":6.49,"name":"Meso S12 Relic","rotation":"C"},{"chance":6.49,"name":"Neo F2 Relic","rotation":"C"},{"chance":6.49,"name":"Neo T7 Relic","rotation":"C"},{"chance":6.49,"name":"Neo K5 Relic","rotation":"C"},{"chance":6.49,"name":"Neo D7 Relic","rotation":"C"},{"chance":6.49,"name":"Neo C4 Relic","rotation":"C"},{"chance":6.49,"name":"Neo L3 Relic","rotation":"C"},{"chance":6.49,"name":"Neo N23 Relic","rotation":"C"},{"chance":6.49,"name":"Aya","rotation":"C"},{"chance":1.29,"name":"Aya","rotation":"C"}],"SolNode406":[{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Neo F2 Relic"},{"chance":6.67,"name":"Neo T7 Relic"},{"chance":6.67,"name":"Neo K5 Relic"},{"chance":6.67,"name":"Neo D7 Relic"},{"chance":6.67,"name":"Neo C4 Relic"},{"chance":6.67,"name":"Neo L3 Relic"},{"chance":6.67,"name":"Neo N23 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode407":[{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Neo F2 Relic"},{"chance":6.67,"name":"Neo T7 Relic"},{"chance":6.67,"name":"Neo K5 Relic"},{"chance":6.67,"name":"Neo D7 Relic"},{"chance":6.67,"name":"Neo C4 Relic"},{"chance":6.67,"name":"Neo L3 Relic"},{"chance":6.67,"name":"Neo N23 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode408":[{"chance":6.96,"name":"Meso P11 Relic","rotation":"A"},{"chance":6.96,"name":"Meso G5 Relic","rotation":"A"},{"chance":6.96,"name":"Meso K6 Relic","rotation":"A"},{"chance":6.96,"name":"Meso P13 Relic","rotation":"A"},{"chance":1.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":6.96,"name":"Meso K4 Relic","rotation":"A"},{"chance":6.96,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.96,"name":"Aya","rotation":"A"},{"chance":6.96,"name":"Neo F2 Relic","rotation":"A"},{"chance":6.96,"name":"Neo T7 Relic","rotation":"A"},{"chance":6.96,"name":"Neo K5 Relic","rotation":"A"},{"chance":6.96,"name":"Neo D7 Relic","rotation":"A"},{"chance":6.96,"name":"Neo C4 Relic","rotation":"A"},{"chance":6.96,"name":"Neo L3 Relic","rotation":"A"},{"chance":6.96,"name":"Neo N23 Relic","rotation":"A"},{"chance":1.29,"name":"Aya","rotation":"A"},{"chance":9.09,"name":"Neo F2 Relic","rotation":"B"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"B"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"B"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"B"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"B"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"B"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"B"},{"chance":9.09,"name":"Aya","rotation":"B"},{"chance":9.68,"name":"Neo F2 Relic","rotation":"C"},{"chance":9.68,"name":"Neo T7 Relic","rotation":"C"},{"chance":9.68,"name":"Neo K5 Relic","rotation":"C"},{"chance":9.68,"name":"Neo D7 Relic","rotation":"C"},{"chance":9.68,"name":"Neo C4 Relic","rotation":"C"},{"chance":9.68,"name":"Neo L3 Relic","rotation":"C"},{"chance":9.68,"name":"Neo N23 Relic","rotation":"C"},{"chance":9.68,"name":"Aya","rotation":"C"},{"chance":2.82,"name":"Axi H6 Relic","rotation":"C"},{"chance":2.82,"name":"Axi A16 Relic","rotation":"C"},{"chance":2.82,"name":"Axi G10 Relic","rotation":"C"},{"chance":2.82,"name":"Axi B6 Relic","rotation":"C"},{"chance":2.82,"name":"Axi K11 Relic","rotation":"C"},{"chance":2.82,"name":"Axi W3 Relic","rotation":"C"},{"chance":2.82,"name":"Axi H7 Relic","rotation":"C"},{"chance":2.82,"name":"Aya","rotation":"C"}],"SolNode409":[{"chance":9.09,"name":"Neo F2 Relic","rotation":"A"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"A"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"A"},{"chance":9.09,"name":"Aya","rotation":"A"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Aya","rotation":"B"},{"chance":10.84,"name":"Axi H6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi A16 Relic","rotation":"C"},{"chance":0.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.84,"name":"Axi G10 Relic","rotation":"C"},{"chance":0.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":10.84,"name":"Axi B6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi K11 Relic","rotation":"C"},{"chance":0.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.84,"name":"Axi W3 Relic","rotation":"C"},{"chance":0.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.84,"name":"Axi H7 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H7 Relic","rotation":"C"},{"chance":22.11,"name":"Aya","rotation":"C"}],"SolNode410":[{"chance":6.25,"name":"Neo F2 Relic"},{"chance":6.25,"name":"Neo T7 Relic"},{"chance":6.25,"name":"Neo K5 Relic"},{"chance":6.25,"name":"Neo D7 Relic"},{"chance":6.25,"name":"Neo C4 Relic"},{"chance":6.25,"name":"Neo C4 Relic"},{"chance":6.25,"name":"Neo L3 Relic"},{"chance":6.25,"name":"Axi H6 Relic"},{"chance":6.25,"name":"Axi A16 Relic"},{"chance":6.25,"name":"Axi G10 Relic"},{"chance":6.25,"name":"Axi B6 Relic"},{"chance":6.25,"name":"Axi K11 Relic"},{"chance":6.25,"name":"Axi W3 Relic"},{"chance":6.25,"name":"Axi H7 Relic"},{"chance":6.25,"name":"Aya"},{"chance":6.25,"name":"Aya"}],"SolNode411":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":15.18,"name":"400 Endo","rotation":"B"},{"chance":15.18,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":15.18,"name":"400X Circuits","rotation":"B"},{"chance":15.18,"name":"400X Rubedo","rotation":"B"},{"chance":15.18,"name":"300X Plastids","rotation":"B"},{"chance":25.29,"name":"600 Endo","rotation":"C"},{"chance":25.29,"name":"600 Endo","rotation":"C"},{"chance":4.42,"name":"600 Endo","rotation":"C"},{"chance":25.29,"name":"Neurodes","rotation":"C"},{"chance":4.42,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.42,"name":"2X Gallium","rotation":"C"},{"chance":4.42,"name":"Argon Crystal","rotation":"C"},{"chance":4.42,"name":"Bullet Dance","rotation":"C"},{"chance":1.01,"name":"Nitain Extract","rotation":"C"},{"chance":1.01,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode412":[{"chance":9.09,"name":"Neo F2 Relic","rotation":"A"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"A"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"A"},{"chance":9.09,"name":"Aya","rotation":"A"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Aya","rotation":"B"},{"chance":10.84,"name":"Axi H6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi A16 Relic","rotation":"C"},{"chance":0.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.84,"name":"Axi G10 Relic","rotation":"C"},{"chance":0.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":10.84,"name":"Axi B6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi K11 Relic","rotation":"C"},{"chance":0.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.84,"name":"Axi W3 Relic","rotation":"C"},{"chance":0.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.84,"name":"Axi H7 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H7 Relic","rotation":"C"},{"chance":22.11,"name":"Aya","rotation":"C"}],"SettlementNode3":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode2":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SettlementNode12":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SettlementNode10":[{"chance":16.67,"name":"Tempered Blade","rotation":"A"},{"chance":16.67,"name":"Sudden Impact","rotation":"A"},{"chance":16.67,"name":"Poisonous Sting","rotation":"A"},{"chance":16.67,"name":"Glacial Edge","rotation":"A"},{"chance":16.67,"name":"Conductive Blade","rotation":"A"},{"chance":16.67,"name":"Furor","rotation":"A"},{"chance":3.76,"name":"Extend","rotation":"B"},{"chance":3.76,"name":"Superior Defenses","rotation":"B"},{"chance":3.76,"name":"Cutting Edge","rotation":"B"},{"chance":3.76,"name":"System Reroute","rotation":"B"},{"chance":3.76,"name":"Efficient Transferral","rotation":"B"},{"chance":3.76,"name":"Blazing Steel","rotation":"B"},{"chance":77.44,"name":"150 Endo","rotation":"B"},{"chance":7.52,"name":"Meteor Crash","rotation":"C"},{"chance":7.52,"name":"Nebula Bore","rotation":"C"},{"chance":7.52,"name":"Astral Slash","rotation":"C"},{"chance":9.68,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"Lith G6 Relic","rotation":"C"},{"chance":9.68,"name":"Lith W3 Relic","rotation":"C"},{"chance":9.68,"name":"Lith S15 Relic","rotation":"C"},{"chance":9.68,"name":"Lith S14 Relic","rotation":"C"},{"chance":9.68,"name":"Lith B11 Relic","rotation":"C"},{"chance":9.68,"name":"Lith H9 Relic","rotation":"C"},{"chance":9.68,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode11":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SettlementNode14":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"ClanNode10":[{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":2.58,"name":"Smite Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Expel Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Lith G6 Relic","rotation":"B"},{"chance":10,"name":"Lith W3 Relic","rotation":"B"},{"chance":10,"name":"Lith S15 Relic","rotation":"B"},{"chance":10,"name":"Lith S14 Relic","rotation":"B"},{"chance":10,"name":"Lith B11 Relic","rotation":"B"},{"chance":10,"name":"Lith H9 Relic","rotation":"B"},{"chance":10,"name":"Lith R3 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Quickening","rotation":"C"},{"chance":10,"name":"Lith G6 Relic","rotation":"C"},{"chance":10,"name":"Lith W3 Relic","rotation":"C"},{"chance":10,"name":"Lith S15 Relic","rotation":"C"},{"chance":10,"name":"Lith S14 Relic","rotation":"C"},{"chance":10,"name":"Lith B11 Relic","rotation":"C"},{"chance":10,"name":"Lith H9 Relic","rotation":"C"},{"chance":10,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode20":[{"chance":38.72,"name":"Mag Neuroptics Blueprint"},{"chance":38.72,"name":"Mag Chassis Blueprint"},{"chance":22.56,"name":"Mag Systems Blueprint"}],"ClanNode11":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode707":[{"chance":11.11,"name":"250 Endo","rotation":"A"},{"chance":11.11,"name":"250 Endo","rotation":"A"},{"chance":11.11,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.11,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.11,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.11,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.11,"name":"Lith R3 Relic","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"B"},{"chance":38.72,"name":"250 Endo","rotation":"B"},{"chance":22.56,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":22.56,"name":"Forma Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode710":[{"chance":14.29,"name":"3,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"3,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"200 Endo","rotation":"A"},{"chance":14.29,"name":"200 Endo","rotation":"A"},{"chance":14.29,"name":"1000X Nano Spores","rotation":"A"},{"chance":14.29,"name":"Thief's Wit","rotation":"A"},{"chance":14.29,"name":"3X Mutagen Sample","rotation":"A"},{"chance":15.18,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.18,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.18,"name":"200 Endo","rotation":"B"},{"chance":15.18,"name":"200 Endo","rotation":"B"},{"chance":15.18,"name":"Neurodes","rotation":"B"},{"chance":4.42,"name":"2X Neurodes","rotation":"B"},{"chance":2.01,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":4.42,"name":"Cleanse Infested","rotation":"B"},{"chance":4.42,"name":"Bane Of Infested","rotation":"B"},{"chance":4.42,"name":"Smite Infested","rotation":"B"},{"chance":4.42,"name":"Expel Infested","rotation":"B"},{"chance":19.36,"name":"Argon Crystal","rotation":"C"},{"chance":3.76,"name":"2X Argon Crystal","rotation":"C"},{"chance":19.36,"name":"Orokin Cell","rotation":"C"},{"chance":3.76,"name":"2X Orokin Cell","rotation":"C"},{"chance":19.36,"name":"Neural Sensors","rotation":"C"},{"chance":3.76,"name":"2X Neural Sensors","rotation":"C"},{"chance":19.36,"name":"400 Endo","rotation":"C"},{"chance":3.76,"name":"400 Endo","rotation":"C"},{"chance":3.76,"name":"Enemy Sense","rotation":"C"},{"chance":3.76,"name":"Master Thief","rotation":"C"}],"SolNode711":[{"chance":11.11,"name":"400 Endo","rotation":"A"},{"chance":11.11,"name":"400 Endo","rotation":"A"},{"chance":11.11,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.11,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.11,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.11,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.11,"name":"Lith R3 Relic","rotation":"A"},{"chance":12.5,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":22.56,"name":"Octavia Neuroptics Blueprint","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode712":[{"chance":33.33,"name":"Nekros Chassis Blueprint"},{"chance":33.33,"name":"Nekros Neuroptics Blueprint"},{"chance":33.33,"name":"Nekros Systems Blueprint"}],"SolNode300":[{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"300X Polymer Bundle","rotation":"A"},{"chance":12.91,"name":"350X Rubedo","rotation":"A"},{"chance":12.91,"name":"300X Plastids","rotation":"A"},{"chance":22.56,"name":"Octavia Systems Blueprint","rotation":"A"},{"chance":25.29,"name":"2,500 Credits Cache","rotation":"B"},{"chance":25.29,"name":"3,000 Credits Cache","rotation":"B"},{"chance":25.29,"name":"4,000 Credits Cache","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":10.82,"name":"600 Endo","rotation":"C"},{"chance":10.82,"name":"Orokin Cell","rotation":"C"},{"chance":10.82,"name":"Gallium","rotation":"C"},{"chance":10.82,"name":"Neurodes","rotation":"C"},{"chance":10.82,"name":"2X Gallium","rotation":"C"},{"chance":10.82,"name":"2X Orokin Cell","rotation":"C"},{"chance":10.82,"name":"2X Neurodes","rotation":"C"},{"chance":10.82,"name":"Tellurium","rotation":"C"},{"chance":10.82,"name":"Argon Crystal","rotation":"C"},{"chance":1.29,"name":"Nitain Extract","rotation":"C"},{"chance":1.29,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode306":[{"chance":12.18,"name":"Blood Rush","rotation":"A"},{"chance":12.18,"name":"Hydraulic Crosshairs","rotation":"A"},{"chance":12.18,"name":"Shrapnel Shot","rotation":"A"},{"chance":12.18,"name":"100 Endo","rotation":"A"},{"chance":12.18,"name":"Fast Hands","rotation":"A"},{"chance":12.18,"name":"Point Strike","rotation":"A"},{"chance":12.18,"name":"Piercing Hit","rotation":"A"},{"chance":12.18,"name":"Pistol Gambit","rotation":"A"},{"chance":1.29,"name":"Gnashing Payara","rotation":"A"},{"chance":1.29,"name":"Astral Twilight","rotation":"A"},{"chance":7.49,"name":"Focused Defense","rotation":"B"},{"chance":7.49,"name":"Catalyzer Link","rotation":"B"},{"chance":7.49,"name":"Target Cracker","rotation":"B"},{"chance":7.49,"name":"No Return","rotation":"B"},{"chance":7.49,"name":"Hornet Strike","rotation":"B"},{"chance":7.49,"name":"Reflex Coil","rotation":"B"},{"chance":7.49,"name":"Deep Freeze","rotation":"B"},{"chance":7.49,"name":"North Wind","rotation":"B"},{"chance":7.49,"name":"Cryo Rounds","rotation":"B"},{"chance":7.49,"name":"Hell's Chamber","rotation":"B"},{"chance":7.49,"name":"Streamline","rotation":"B"},{"chance":7.49,"name":"Shocking Touch","rotation":"B"},{"chance":7.49,"name":"Stormbringer","rotation":"B"},{"chance":1.29,"name":"High Noon","rotation":"B"},{"chance":1.29,"name":"Crushing Ruin","rotation":"B"},{"chance":7.37,"name":"Rime Rounds","rotation":"C"},{"chance":7.37,"name":"Scattering Inferno","rotation":"C"},{"chance":37.94,"name":"Failsafe","rotation":"C"},{"chance":37.94,"name":"Coiling Viper","rotation":"C"},{"chance":2.01,"name":"Cleaving Whirlwind","rotation":"C"},{"chance":7.37,"name":"Ivara Chassis Blueprint","rotation":"C"}],"SolNode302":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode304":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode307":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode308":[{"chance":14.29,"name":"Neo F2 Relic","rotation":"A"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"A"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"A"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"A"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"A"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"A"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":12.42,"name":"Axi H6 Relic","rotation":"C"},{"chance":12.42,"name":"Axi A16 Relic","rotation":"C"},{"chance":12.42,"name":"Axi G10 Relic","rotation":"C"},{"chance":8.05,"name":"Lua Lens Blueprint","rotation":"C"},{"chance":5.03,"name":"Universal Medallion","rotation":"C"},{"chance":12.42,"name":"Axi B6 Relic","rotation":"C"},{"chance":12.42,"name":"Axi K11 Relic","rotation":"C"},{"chance":12.42,"name":"Axi W3 Relic","rotation":"C"},{"chance":12.42,"name":"Axi H7 Relic","rotation":"C"}],"SolNode742":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode744":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":4,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":4,"name":"Arrow Mutation","rotation":"C"},{"chance":4,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":4,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":4,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":8,"name":"Axi H6 Relic","rotation":"C"},{"chance":8,"name":"Axi A16 Relic","rotation":"C"},{"chance":8,"name":"Axi G10 Relic","rotation":"C"},{"chance":8,"name":"Axi B6 Relic","rotation":"C"},{"chance":8,"name":"Axi K11 Relic","rotation":"C"},{"chance":8,"name":"Axi W3 Relic","rotation":"C"},{"chance":8,"name":"Axi H7 Relic","rotation":"C"},{"chance":12,"name":"Harrow Neuroptics Blueprint","rotation":"C"},{"chance":12,"name":"Harrow Systems Blueprint","rotation":"C"}],"SolNode745":[{"chance":100,"name":"100X Kuva","rotation":"A"},{"chance":100,"name":"200X Kuva","rotation":"B"},{"chance":95,"name":"350X Kuva","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"}],"SolNode746":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"Orokin Cell","rotation":"C"},{"chance":10.79,"name":"Gallium","rotation":"C"},{"chance":10.79,"name":"Neurodes","rotation":"C"},{"chance":10.79,"name":"Cyclone Kraken","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neural Sensors","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode747":[{"chance":20,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"Harrow Neuroptics Blueprint","rotation":"A"},{"chance":13.33,"name":"Steady Hands","rotation":"A"},{"chance":13.33,"name":"Stabilizer","rotation":"A"},{"chance":13.33,"name":"Power Throw","rotation":"A"},{"chance":13.33,"name":"Stretch","rotation":"A"},{"chance":10,"name":"200 Endo","rotation":"A"},{"chance":10,"name":"Untraceable","rotation":"B"},{"chance":10,"name":"Runtime","rotation":"B"},{"chance":10,"name":"Scorch","rotation":"B"},{"chance":10,"name":"Thermite Rounds","rotation":"B"},{"chance":10,"name":"Frostbite","rotation":"B"},{"chance":10,"name":"Frigid Blast","rotation":"B"},{"chance":10,"name":"Arrow Mutation","rotation":"B"},{"chance":10,"name":"Sniper Ammo Mutation","rotation":"B"},{"chance":10,"name":"Shotgun Ammo Mutation","rotation":"B"},{"chance":10,"name":"Covert Lethality","rotation":"B"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"C"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"C"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"C"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"C"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"C"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"C"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"C"}],"SolNode748":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}]} \ No newline at end of file +{ + "SolNode94": [ + { "chance": 50, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 50, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SolNode130": [ + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, + { "chance": 8.33, "name": "Ravage", "rotation": "C" }, + { "chance": 8.33, "name": "Continuity", "rotation": "C" }, + { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, + { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode119": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } + ], + "SolNode12": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode28": [ + { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "240X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "750X Circuits", "rotation": "B" }, + { "chance": 12.65, "name": "750X Alloy Plate", "rotation": "B" }, + { "chance": 15.1, "name": "80 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "150 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Morphics", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 5.5, "name": "2X Morphics", "rotation": "C" }, + { "chance": 5.5, "name": "2X Gallium", "rotation": "C" }, + { "chance": 5.5, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 5.5, "name": "160 Endo", "rotation": "C" }, + { "chance": 0.67, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 0.67, "name": "Tellurium", "rotation": "C" }, + { "chance": 0.67, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Fuselage Blueprint", "rotation": "C" } + ], + "SolNode108": [ + { "chance": 38.72, "name": "Seer Blueprint" }, + { "chance": 38.72, "name": "Seer Barrel" }, + { "chance": 22.56, "name": "Seer Receiver" } + ], + "SolNode224": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.88, "name": "Rush", "rotation": "B" }, + { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.88, "name": "No Return", "rotation": "B" }, + { "chance": 5.88, "name": "Serration", "rotation": "B" }, + { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.88, "name": "North Wind", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode225": [ + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Reflection", "rotation": "A" }, + { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, + { "chance": 14.29, "name": "Parry", "rotation": "A" }, + { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 10, "name": "Master Key", "rotation": "C" }, + { "chance": 10, "name": "Reflection", "rotation": "C" }, + { "chance": 10, "name": "Parry", "rotation": "C" }, + { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, + { "chance": 10, "name": "Serration", "rotation": "C" }, + { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, + { "chance": 10, "name": "Metal Auger", "rotation": "C" }, + { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, + { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, + { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } + ], + "SolNode123": [ + { "chance": 50, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 50, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SolNode61": [ + { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "240X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "750X Circuits", "rotation": "B" }, + { "chance": 12.65, "name": "750X Alloy Plate", "rotation": "B" }, + { "chance": 15.1, "name": "80 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "150 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Morphics", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 5.5, "name": "2X Morphics", "rotation": "C" }, + { "chance": 5.5, "name": "2X Gallium", "rotation": "C" }, + { "chance": 5.5, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 5.5, "name": "160 Endo", "rotation": "C" }, + { "chance": 0.67, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 0.67, "name": "Tellurium", "rotation": "C" }, + { "chance": 0.67, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Fuselage Blueprint", "rotation": "C" } + ], + "SolNode23": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.88, "name": "Rush", "rotation": "B" }, + { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.88, "name": "No Return", "rotation": "B" }, + { "chance": 5.88, "name": "Serration", "rotation": "B" }, + { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.88, "name": "North Wind", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode109": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } + ], + "SolNode104": [ + { "chance": 38.72, "name": "Rhino Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Rhino Chassis Blueprint" }, + { "chance": 22.56, "name": "Rhino Systems Blueprint" } + ], + "SolNode66": [ + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Reflection", "rotation": "A" }, + { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, + { "chance": 14.29, "name": "Parry", "rotation": "A" }, + { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 10, "name": "Master Key", "rotation": "C" }, + { "chance": 10, "name": "Reflection", "rotation": "C" }, + { "chance": 10, "name": "Parry", "rotation": "C" }, + { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, + { "chance": 10, "name": "Serration", "rotation": "C" }, + { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, + { "chance": 10, "name": "Metal Auger", "rotation": "C" }, + { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, + { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, + { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } + ], + "ClanNode1": [ + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "True Punishment", "rotation": "C" }, + { "chance": 11.28, "name": "Quickening", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SolNode107": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode22": [ + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, + { "chance": 8.33, "name": "Ravage", "rotation": "C" }, + { "chance": 8.33, "name": "Continuity", "rotation": "C" }, + { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, + { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode101": [ + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "ClanNode0": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode902": [ + { "chance": 5.64, "name": "Morphic Transformer" }, + { "chance": 38.72, "name": "Automatic Trigger" }, + { "chance": 5.64, "name": "Phaedra Receiver" }, + { "chance": 38.72, "name": "Extend" }, + { "chance": 5.64, "name": "Shell Rush" }, + { "chance": 5.64, "name": "Shell Rush" } + ], + "SolNode63": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode79": [ + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Reflection", "rotation": "A" }, + { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, + { "chance": 14.29, "name": "Parry", "rotation": "A" }, + { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 10, "name": "Master Key", "rotation": "C" }, + { "chance": 10, "name": "Reflection", "rotation": "C" }, + { "chance": 10, "name": "Parry", "rotation": "C" }, + { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, + { "chance": 10, "name": "Serration", "rotation": "C" }, + { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, + { "chance": 10, "name": "Metal Auger", "rotation": "C" }, + { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, + { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, + { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } + ], + "SolNode39": [ + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SolNode15": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } + ], + "SolNode26": [ + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, + { "chance": 8.33, "name": "Ravage", "rotation": "C" }, + { "chance": 8.33, "name": "Continuity", "rotation": "C" }, + { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, + { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode85": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.88, "name": "Rush", "rotation": "B" }, + { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.88, "name": "No Return", "rotation": "B" }, + { "chance": 5.88, "name": "Serration", "rotation": "B" }, + { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.88, "name": "North Wind", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode75": [ + { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 12.18, "name": "300X Ferrite", "rotation": "B" }, + { "chance": 12.18, "name": "150X Rubedo", "rotation": "B" }, + { "chance": 12.18, "name": "Detonite Ampule", "rotation": "B" }, + { "chance": 12.18, "name": "100 Endo", "rotation": "B" }, + { "chance": 12.18, "name": "100 Endo", "rotation": "B" }, + { "chance": 12.18, "name": "3,000 Credits Cache", "rotation": "B" }, + { "chance": 12.18, "name": "3,000 Credits Cache", "rotation": "B" }, + { "chance": 12.18, "name": "Neurodes", "rotation": "B" }, + { "chance": 2.58, "name": "Kubrow Egg", "rotation": "B" }, + { "chance": 15.1, "name": "Health Restore (Large)", "rotation": "C" }, + { "chance": 15.1, "name": "Health Restore (Large)", "rotation": "C" }, + { "chance": 15.1, "name": "200 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "200 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 3.67, "name": "Bite", "rotation": "C" }, + { "chance": 3.67, "name": "Link Armor", "rotation": "C" }, + { "chance": 3.67, "name": "Link Health", "rotation": "C" }, + { "chance": 3.67, "name": "Link Shields", "rotation": "C" }, + { "chance": 3.67, "name": "Maul", "rotation": "C" }, + { "chance": 3.67, "name": "Hastened Deflection", "rotation": "C" }, + { "chance": 2, "name": "Forma Blueprint", "rotation": "C" }, + { "chance": 0.5, "name": "Forma", "rotation": "C" } + ], + "SolNode24": [ + { "chance": 38.72, "name": "Hydroid Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Hydroid Chassis Blueprint" }, + { "chance": 22.56, "name": "Hydroid Systems Blueprint" } + ], + "ClanNode2": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode903": [ + { "chance": 38.72, "name": "Polar Magazine" }, + { "chance": 38.72, "name": "Superior Defenses" }, + { "chance": 3.76, "name": "Meteor Crash" }, + { "chance": 3.76, "name": "Nebula Bore" }, + { "chance": 3.76, "name": "Astral Slash" }, + { "chance": 3.76, "name": "Comet Blast" }, + { "chance": 3.76, "name": "Quasar Drill" }, + { "chance": 3.76, "name": "Zodiac Shred" } + ], + "ClanNode3": [ + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SolNode30": [ + { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode46": [ + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, + { "chance": 8.33, "name": "Ravage", "rotation": "C" }, + { "chance": 8.33, "name": "Continuity", "rotation": "C" }, + { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, + { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode106": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.88, "name": "Rush", "rotation": "B" }, + { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.88, "name": "No Return", "rotation": "B" }, + { "chance": 5.88, "name": "Serration", "rotation": "B" }, + { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.88, "name": "North Wind", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode41": [ + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Reflection", "rotation": "A" }, + { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, + { "chance": 14.29, "name": "Parry", "rotation": "A" }, + { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 10, "name": "Master Key", "rotation": "C" }, + { "chance": 10, "name": "Reflection", "rotation": "C" }, + { "chance": 10, "name": "Parry", "rotation": "C" }, + { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, + { "chance": 10, "name": "Serration", "rotation": "C" }, + { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, + { "chance": 10, "name": "Metal Auger", "rotation": "C" }, + { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, + { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, + { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } + ], + "SolNode16": [ + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SolNode45": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode36": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } + ], + "ClanNode8": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode99": [ + { "chance": 38.72, "name": "Excalibur Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Excalibur Chassis Blueprint" }, + { "chance": 22.56, "name": "Excalibur Systems Blueprint" } + ], + "SolNode65": [ + { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "240X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "750X Circuits", "rotation": "B" }, + { "chance": 12.65, "name": "750X Alloy Plate", "rotation": "B" }, + { "chance": 15.1, "name": "80 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "150 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Morphics", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 5.5, "name": "2X Morphics", "rotation": "C" }, + { "chance": 5.5, "name": "2X Gallium", "rotation": "C" }, + { "chance": 5.5, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 5.5, "name": "160 Endo", "rotation": "C" }, + { "chance": 0.67, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 0.67, "name": "Tellurium", "rotation": "C" }, + { "chance": 0.67, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Fuselage Blueprint", "rotation": "C" } + ], + "ClanNode9": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "Quickening", "rotation": "C" }, + { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode904": [ + { "chance": 5.64, "name": "Morphic Transformer" }, + { "chance": 38.72, "name": "Automatic Trigger" }, + { "chance": 5.64, "name": "Phaedra Receiver" }, + { "chance": 38.72, "name": "Extend" }, + { "chance": 5.64, "name": "Shell Rush" }, + { "chance": 5.64, "name": "Shell Rush" } + ], + "SolNode87": [ + { "chance": 27.78, "name": "5X Hexenon", "rotation": "A" }, + { "chance": 5.56, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 5.56, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 5.56, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 5.56, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Proton Pulse", "rotation": "A" }, + { "chance": 11.11, "name": "Motus Signal", "rotation": "A" }, + { "chance": 11.11, "name": "Aero Periphery", "rotation": "A" }, + { "chance": 5.56, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 5.56, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 5.56, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 27.78, "name": "10X Hexenon", "rotation": "B" }, + { "chance": 5.56, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 5.56, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 5.56, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 11.11, "name": "Proton Jet", "rotation": "B" }, + { "chance": 11.11, "name": "Motus Impact", "rotation": "B" }, + { "chance": 11.11, "name": "Aero Vantage", "rotation": "B" }, + { "chance": 5.56, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 5.56, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 5.56, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 5.56, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 30, "name": "15X Hexenon", "rotation": "C" }, + { "chance": 5, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 5, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 5, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 10, "name": "Proton Snap", "rotation": "C" }, + { "chance": 10, "name": "Motus Setup", "rotation": "C" }, + { "chance": 10, "name": "Aero Agility", "rotation": "C" }, + { "chance": 5, "name": "Universal Medallion", "rotation": "C" }, + { "chance": 5, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 5, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 5, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 5, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode88": [ + { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, + { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, + { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } + ], + "SolNode97": [ + { "chance": 9.09, "name": "Vitality", "rotation": "A" }, + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, + { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, + { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, + { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, + { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, + { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, + { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.56, "name": "Rush", "rotation": "B" }, + { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.56, "name": "No Return", "rotation": "B" }, + { "chance": 5.56, "name": "Serration", "rotation": "B" }, + { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.56, "name": "North Wind", "rotation": "B" }, + { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 5.56, "name": "Streamline", "rotation": "B" }, + { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, + { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, + { "chance": 5.56, "name": "Fury", "rotation": "B" }, + { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, + { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, + { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, + { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, + { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode126": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "C" } + ], + "SolNode125": [ + { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 6.25, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.25, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.25, "name": "North Wind", "rotation": "B" }, + { "chance": 6.25, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 6.25, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.25, "name": "Stormbringer", "rotation": "B" }, + { "chance": 6.25, "name": "Point Blank", "rotation": "B" }, + { "chance": 6.25, "name": "Fury", "rotation": "B" }, + { "chance": 6.25, "name": "150 Endo", "rotation": "B" }, + { "chance": 6.25, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 4.51, "name": "Vital Sense", "rotation": "C" }, + { "chance": 4.51, "name": "Metal Auger", "rotation": "C" }, + { "chance": 4.51, "name": "Ravage", "rotation": "C" }, + { "chance": 4.51, "name": "Stretch", "rotation": "C" }, + { "chance": 4.51, "name": "300 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode100": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode25": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, + { "chance": 7.14, "name": "No Return", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 7.14, "name": "North Wind", "rotation": "B" }, + { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode121": [ + { "chance": 33.33, "name": "4,000 Credits Cache", "rotation": "A" }, + { "chance": 33.33, "name": "4,000 Credits Cache", "rotation": "A" }, + { "chance": 33.33, "name": "4,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, + { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, + { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } + ], + "SolNode53": [ + { "chance": 38.72, "name": "Valkyr Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Valkyr Chassis Blueprint" }, + { "chance": 22.56, "name": "Valkyr Systems Blueprint" } + ], + "SolNode740": [ + { "chance": 22.56, "name": "Wisp Blueprint" }, + { "chance": 25.81, "name": "Wisp Chassis Blueprint" }, + { "chance": 25.81, "name": "Wisp Neuroptics Blueprint" }, + { "chance": 25.81, "name": "Wisp Systems Blueprint" } + ], + "ClanNode4": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode73": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode905": [ + { "chance": 25.81, "name": "Glacial Edge" }, + { "chance": 25.81, "name": "Conductive Blade" }, + { "chance": 25.81, "name": "Tempered Blade" }, + { "chance": 3.76, "name": "Meteor Crash" }, + { "chance": 3.76, "name": "Nebula Bore" }, + { "chance": 3.76, "name": "Astral Slash" }, + { "chance": 3.76, "name": "Comet Blast" }, + { "chance": 3.76, "name": "Quasar Drill" }, + { "chance": 3.76, "name": "Zodiac Shred" } + ], + "ClanNode5": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "Quickening", "rotation": "C" }, + { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode42": [ + { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 6.25, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.25, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.25, "name": "North Wind", "rotation": "B" }, + { "chance": 6.25, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 6.25, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.25, "name": "Stormbringer", "rotation": "B" }, + { "chance": 6.25, "name": "Point Blank", "rotation": "B" }, + { "chance": 6.25, "name": "Fury", "rotation": "B" }, + { "chance": 6.25, "name": "150 Endo", "rotation": "B" }, + { "chance": 6.25, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 4.51, "name": "Vital Sense", "rotation": "C" }, + { "chance": 4.51, "name": "Metal Auger", "rotation": "C" }, + { "chance": 4.51, "name": "Ravage", "rotation": "C" }, + { "chance": 4.51, "name": "Stretch", "rotation": "C" }, + { "chance": 4.51, "name": "300 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode96": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode67": [ + { "chance": 9.09, "name": "Vitality", "rotation": "A" }, + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, + { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, + { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, + { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, + { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, + { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, + { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.56, "name": "Rush", "rotation": "B" }, + { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.56, "name": "No Return", "rotation": "B" }, + { "chance": 5.56, "name": "Serration", "rotation": "B" }, + { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.56, "name": "North Wind", "rotation": "B" }, + { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 5.56, "name": "Streamline", "rotation": "B" }, + { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, + { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, + { "chance": 5.56, "name": "Fury", "rotation": "B" }, + { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, + { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, + { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, + { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, + { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode32": [ + { "chance": 38.72, "name": "Ember Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Ember Chassis Blueprint" }, + { "chance": 22.56, "name": "Ember Systems Blueprint" } + ], + "SolNode18": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, + { "chance": 7.14, "name": "No Return", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 7.14, "name": "North Wind", "rotation": "B" }, + { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode70": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode31": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ], + "SolNode50": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "C" } + ], + "SolNode82": [ + { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, + { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, + { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } + ], + "SolNode906": [ + { "chance": 5.06, "name": "400 Endo" }, + { "chance": 3.16, "name": "400 Endo" }, + { "chance": 1.01, "name": "400 Endo" }, + { "chance": 1.01, "name": "400 Endo" }, + { "chance": 5.06, "name": "400 Endo" }, + { "chance": 5.06, "name": "Tempered Blade" }, + { "chance": 5.06, "name": "Sudden Impact" }, + { "chance": 5.06, "name": "Poisonous Sting" }, + { "chance": 5.06, "name": "Glacial Edge" }, + { "chance": 5.06, "name": "Conductive Blade" }, + { "chance": 5.06, "name": "Furor" }, + { "chance": 3.16, "name": "Extend" }, + { "chance": 3.16, "name": "Superior Defenses" }, + { "chance": 3.16, "name": "Cutting Edge" }, + { "chance": 3.16, "name": "System Reroute" }, + { "chance": 3.16, "name": "Efficient Transferral" }, + { "chance": 3.16, "name": "Blazing Steel" }, + { "chance": 5.06, "name": "Meso P11 Relic" }, + { "chance": 5.06, "name": "Meso G5 Relic" }, + { "chance": 5.06, "name": "Meso K6 Relic" }, + { "chance": 5.06, "name": "Meso P13 Relic" }, + { "chance": 5.06, "name": "Meso C8 Relic" }, + { "chance": 5.06, "name": "Meso K4 Relic" }, + { "chance": 5.06, "name": "Meso S12 Relic" } + ], + "ClanNode13": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "Quickening", "rotation": "C" }, + { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "ClanNode12": [ + { "chance": 16.24, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.24, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.24, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.24, "name": "150 Endo", "rotation": "A" }, + { "chance": 16.24, "name": "150 Endo", "rotation": "A" }, + { "chance": 16.24, "name": "150 Endo", "rotation": "A" }, + { "chance": 2.58, "name": "Expel Corrupted", "rotation": "A" }, + { "chance": 6, "name": "Harrow Systems Blueprint", "rotation": "B" }, + { "chance": 8, "name": "Smite Corrupted", "rotation": "B" }, + { "chance": 8, "name": "Cleanse Corrupted", "rotation": "B" }, + { "chance": 8, "name": "Bane Of Corrupted", "rotation": "B" }, + { "chance": 10, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 10, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 10, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 10, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 10, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 10, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 10, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 15, "name": "Harrow Systems Blueprint", "rotation": "C" }, + { "chance": 15, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode33": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode105": [ + { "chance": 11.28, "name": "Equinox Night Aspect Blueprint" }, + { "chance": 12.91, "name": "Equinox Night Chassis Blueprint" }, + { "chance": 12.91, "name": "Equinox Night Neuroptics Blueprint" }, + { "chance": 12.91, "name": "Equinox Night Systems Blueprint" }, + { "chance": 11.28, "name": "Equinox Day Aspect Blueprint" }, + { "chance": 12.91, "name": "Equinox Day Chassis Blueprint" }, + { "chance": 12.91, "name": "Equinox Day Neuroptics Blueprint" }, + { "chance": 12.91, "name": "Equinox Day Systems Blueprint" } + ], + "SolNode64": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, + { "chance": 7.14, "name": "No Return", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 7.14, "name": "North Wind", "rotation": "B" }, + { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode69": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode98": [ + { "chance": 20, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 20, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 20, "name": "300X Polymer Bundle", "rotation": "A" }, + { "chance": 20, "name": "200 Endo", "rotation": "A" }, + { "chance": 20, "name": "200 Endo", "rotation": "A" }, + { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, + { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, + { "chance": 15.49, "name": "200 Endo", "rotation": "B" }, + { "chance": 15.49, "name": "200 Endo", "rotation": "B" }, + { "chance": 15.49, "name": "300X Plastids", "rotation": "B" }, + { "chance": 4.51, "name": "Battering Maneuver", "rotation": "B" }, + { "chance": 4.51, "name": "Mobilize", "rotation": "B" }, + { "chance": 4.51, "name": "Piercing Step", "rotation": "B" }, + { "chance": 4.51, "name": "Rending Turn", "rotation": "B" }, + { "chance": 4.51, "name": "Patagium", "rotation": "B" }, + { "chance": 15.49, "name": "400 Endo", "rotation": "C" }, + { "chance": 4.51, "name": "400 Endo", "rotation": "C" }, + { "chance": 15.49, "name": "2X Gallium", "rotation": "C" }, + { "chance": 15.49, "name": "3X Gallium", "rotation": "C" }, + { "chance": 15.49, "name": "250X Oxium", "rotation": "C" }, + { "chance": 15.49, "name": "Tellurium", "rotation": "C" }, + { "chance": 4.51, "name": "Lightning Dash", "rotation": "C" }, + { "chance": 4.51, "name": "Firewalker", "rotation": "C" }, + { "chance": 4.51, "name": "Ice Spring", "rotation": "C" }, + { "chance": 4.51, "name": "Toxic Flight", "rotation": "C" } + ], + "SolNode9": [ + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, + { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, + { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, + { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, + { "chance": 7.04, "name": "Stretch", "rotation": "C" }, + { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, + { "chance": 7.04, "name": "Scorch", "rotation": "C" }, + { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, + { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, + { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, + { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } + ], + "SolNode60": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ], + "ClanNode16": [ + { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 13.56, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 13.56, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 13.56, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 5.08, "name": "Universal Medallion", "rotation": "C" }, + { "chance": 13.56, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 13.56, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 13.56, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 13.56, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode122": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.67, "name": "North Wind", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Streamline", "rotation": "B" }, + { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, + { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, + { "chance": 2.26, "name": "Ravage", "rotation": "C" }, + { "chance": 2.26, "name": "Stretch", "rotation": "C" }, + { "chance": 2.26, "name": "Handspring", "rotation": "C" }, + { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, + { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, + { "chance": 2.26, "name": "Continuity", "rotation": "C" }, + { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, + { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode907": [ + { "chance": 2.51, "name": "Automatic Trigger", "rotation": "A" }, + { "chance": 2.51, "name": "Combustion Rounds", "rotation": "A" }, + { "chance": 2.51, "name": "Dual Rounds", "rotation": "A" }, + { "chance": 2.51, "name": "Hollowed Bullets", "rotation": "A" }, + { "chance": 2.51, "name": "Magazine Extension", "rotation": "A" }, + { "chance": 2.51, "name": "Modified Munitions", "rotation": "A" }, + { "chance": 2.51, "name": "Parallax Scope", "rotation": "A" }, + { "chance": 2.51, "name": "Rubedo-Lined Barrel", "rotation": "A" }, + { "chance": 2.51, "name": "Venomous Clip", "rotation": "A" }, + { "chance": 38.72, "name": "250 Endo", "rotation": "A" }, + { "chance": 38.72, "name": "250 Endo", "rotation": "A" }, + { "chance": 10, "name": "Superior Defenses", "rotation": "B" }, + { "chance": 10, "name": "Bleeding Edge", "rotation": "B" }, + { "chance": 10, "name": "Superior Defenses", "rotation": "B" }, + { "chance": 10, "name": "Argon Plating", "rotation": "B" }, + { "chance": 10, "name": "Furor", "rotation": "B" }, + { "chance": 10, "name": "Glacial Edge", "rotation": "B" }, + { "chance": 10, "name": "Electrified Barrel", "rotation": "B" }, + { "chance": 10, "name": "Energy Inversion", "rotation": "B" }, + { "chance": 10, "name": "250 Endo", "rotation": "B" }, + { "chance": 10, "name": "250 Endo", "rotation": "B" }, + { "chance": 22.56, "name": "400 Endo", "rotation": "C" }, + { "chance": 9.68, "name": "400 Endo", "rotation": "C" }, + { "chance": 9.68, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Axi H7 Relic", "rotation": "C" } + ], + "ClanNode17": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 11.28, "name": "Life Strike", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode1": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode17": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.67, "name": "North Wind", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Streamline", "rotation": "B" }, + { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, + { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, + { "chance": 2.26, "name": "Ravage", "rotation": "C" }, + { "chance": 2.26, "name": "Stretch", "rotation": "C" }, + { "chance": 2.26, "name": "Handspring", "rotation": "C" }, + { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, + { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, + { "chance": 2.26, "name": "Continuity", "rotation": "C" }, + { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, + { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode78": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ], + "SolNode6": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode127": [ + { "chance": 38.72, "name": "Loki Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Loki Chassis Blueprint" }, + { "chance": 22.56, "name": "Loki Systems Blueprint" } + ], + "SolNode118": [ + { "chance": 100, "name": "2X 10,000 Credits Cache", "rotation": "A" }, + { "chance": 100, "name": "3X 10,000 Credits Cache", "rotation": "B" }, + { "chance": 95, "name": "5X 10,000 Credits Cache", "rotation": "C" }, + { "chance": 5, "name": "Universal Medallion", "rotation": "C" } + ], + "SolNode84": [ + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, + { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, + { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, + { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, + { "chance": 7.04, "name": "Stretch", "rotation": "C" }, + { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, + { "chance": 7.04, "name": "Scorch", "rotation": "C" }, + { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, + { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, + { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, + { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } + ], + "ClanNode20": [ + { "chance": 24.35, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 24.35, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 24.35, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 24.35, "name": "250 Endo", "rotation": "A" }, + { "chance": 2.58, "name": "Expel Corrupted", "rotation": "A" }, + { "chance": 6, "name": "Harrow Systems Blueprint", "rotation": "B" }, + { "chance": 8, "name": "Smite Corrupted", "rotation": "B" }, + { "chance": 8, "name": "Cleanse Corrupted", "rotation": "B" }, + { "chance": 8, "name": "Bane Of Corrupted", "rotation": "B" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 15, "name": "Harrow Systems Blueprint", "rotation": "C" }, + { "chance": 15, "name": "Life Strike", "rotation": "C" }, + { "chance": 10, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 10, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 10, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 10, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 10, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 10, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 10, "name": "Axi H7 Relic", "rotation": "C" } + ], + "ClanNode21": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 11.28, "name": "Life Strike", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode72": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.67, "name": "North Wind", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Streamline", "rotation": "B" }, + { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, + { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, + { "chance": 2.26, "name": "Ravage", "rotation": "C" }, + { "chance": 2.26, "name": "Stretch", "rotation": "C" }, + { "chance": 2.26, "name": "Handspring", "rotation": "C" }, + { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, + { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, + { "chance": 2.26, "name": "Continuity", "rotation": "C" }, + { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, + { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode48": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ], + "SolNode76": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode51": [ + { "chance": 38.72, "name": "Trinity Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Trinity Chassis Blueprint" }, + { "chance": 22.56, "name": "Trinity Systems Blueprint" } + ], + "SolNode56": [ + { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, + { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, + { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, + { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, + { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, + { "chance": 12.58, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 12.58, "name": "Gallium", "rotation": "C" }, + { "chance": 12.58, "name": "Neurodes", "rotation": "C" }, + { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, + { "chance": 3.67, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 3.67, "name": "Tellurium", "rotation": "C" }, + { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } + ], + "SolNode43": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode81": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "ClanNode24": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode102": [ + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, + { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, + { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, + { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, + { "chance": 7.04, "name": "Stretch", "rotation": "C" }, + { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, + { "chance": 7.04, "name": "Scorch", "rotation": "C" }, + { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, + { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, + { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, + { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } + ], + "ClanNode25": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode135": [ + { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, + { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, + { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } + ], + "SolNode132": [ + { "chance": 9.09, "name": "Vitality", "rotation": "A" }, + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, + { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, + { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, + { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, + { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, + { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, + { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.56, "name": "Rush", "rotation": "B" }, + { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.56, "name": "No Return", "rotation": "B" }, + { "chance": 5.56, "name": "Serration", "rotation": "B" }, + { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.56, "name": "North Wind", "rotation": "B" }, + { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 5.56, "name": "Streamline", "rotation": "B" }, + { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, + { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, + { "chance": 5.56, "name": "Fury", "rotation": "B" }, + { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, + { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, + { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, + { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, + { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode139": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode141": [ + { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, + { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, + { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, + { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 15.1, "name": "Gallium", "rotation": "C" }, + { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, + { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, + { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } + ], + "SolNode137": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } + ], + "SolNode144": [ + { "chance": 38.72, "name": "Frost Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Frost Chassis Blueprint" }, + { "chance": 22.56, "name": "Frost Systems Blueprint" } + ], + "SolNode149": [ + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, + { "chance": 8.33, "name": "Ravage", "rotation": "C" }, + { "chance": 8.33, "name": "Continuity", "rotation": "C" }, + { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, + { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode147": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.88, "name": "Rush", "rotation": "B" }, + { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.88, "name": "No Return", "rotation": "B" }, + { "chance": 5.88, "name": "Serration", "rotation": "B" }, + { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.88, "name": "North Wind", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode146": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "ClanNode23": [ + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "True Punishment", "rotation": "C" }, + { "chance": 11.28, "name": "Quickening", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "ClanNode22": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode153": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ], + "SolNode162": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode167": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.67, "name": "North Wind", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Streamline", "rotation": "B" }, + { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 6.67, "name": "150 Endo", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Nidus Systems Blueprint", "rotation": "C" }, + { "chance": 14.29, "name": "Nidus Neuroptics Blueprint", "rotation": "C" }, + { "chance": 14.29, "name": "Nidus Chassis Blueprint", "rotation": "C" }, + { "chance": 14.29, "name": "Vital Sense", "rotation": "C" }, + { "chance": 14.29, "name": "Metal Auger", "rotation": "C" }, + { "chance": 14.29, "name": "Stretch", "rotation": "C" }, + { "chance": 14.29, "name": "300 Endo", "rotation": "C" } + ], + "SolNode166": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "ClanNode18": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode172": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "C" } + ], + "ClanNode19": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Life Strike", "rotation": "C" }, + { "chance": 12.5, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 12.5, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 12.5, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 12.5, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 12.5, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 12.5, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 12.5, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode175": [ + { "chance": 16.67, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "200 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "200 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "1000X Nano Spores", "rotation": "A" }, + { "chance": 16.67, "name": "Thief's Wit", "rotation": "A" }, + { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, + { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, + { "chance": 15.49, "name": "300 Endo", "rotation": "B" }, + { "chance": 15.49, "name": "350X Plastids", "rotation": "B" }, + { "chance": 15.49, "name": "3X Mutagen Sample", "rotation": "B" }, + { "chance": 5.64, "name": "Contagious Spread", "rotation": "B" }, + { "chance": 5.64, "name": "Pathogen Rounds", "rotation": "B" }, + { "chance": 5.64, "name": "Infected Clip", "rotation": "B" }, + { "chance": 5.64, "name": "Fever Strike", "rotation": "B" }, + { "chance": 15.49, "name": "Neurodes", "rotation": "C" }, + { "chance": 15.49, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 15.49, "name": "400 Endo", "rotation": "C" }, + { "chance": 15.49, "name": "400 Endo", "rotation": "C" }, + { "chance": 4.51, "name": "400 Endo", "rotation": "C" }, + { "chance": 15.49, "name": "Enemy Sense", "rotation": "C" }, + { "chance": 4.51, "name": "Mutalist Alad V Nav Coordinate", "rotation": "C" }, + { "chance": 4.51, "name": "High Voltage", "rotation": "C" }, + { "chance": 4.51, "name": "Shell Shock", "rotation": "C" }, + { "chance": 4.51, "name": "Firestorm", "rotation": "C" } + ], + "SolNode177": [ + { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 10.2, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 10.2, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 10.2, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 7.84, "name": "Gauss Chassis Blueprint", "rotation": "C" }, + { "chance": 7.84, "name": "Gauss Neuroptics Blueprint", "rotation": "C" }, + { "chance": 7.84, "name": "Gauss Systems Blueprint", "rotation": "C" }, + { "chance": 5.1, "name": "Universal Medallion", "rotation": "C" }, + { "chance": 10.2, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 10.2, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 10.2, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 10.2, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode184": [ + { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, + { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, + { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, + { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, + { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, + { "chance": 12.58, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 12.58, "name": "Gallium", "rotation": "C" }, + { "chance": 12.58, "name": "Neurodes", "rotation": "C" }, + { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, + { "chance": 3.67, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 3.67, "name": "Tellurium", "rotation": "C" }, + { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } + ], + "SolNode183": [ + { "chance": 75.5, "name": "5,000 Credits Cache" }, + { "chance": 22, "name": "250 Endo" }, + { "chance": 0.5, "name": "Forma Blueprint" }, + { "chance": 0.5, "name": "Crimson Dervish" }, + { "chance": 0.5, "name": "Astral Twilight" }, + { "chance": 0.5, "name": "Blind Justice" }, + { "chance": 0.25, "name": "Tempo Royale" }, + { "chance": 0.25, "name": "Vengeful Revenant" } + ], + "SolNode190": [ + { "chance": 75.88, "name": "4,000 Credits Cache" }, + { "chance": 22.11, "name": "250 Endo" }, + { "chance": 0.34, "name": "Forma Blueprint" }, + { "chance": 0.34, "name": "Crushing Ruin" }, + { "chance": 0.34, "name": "Final Harbinger" }, + { "chance": 0.34, "name": "Vermillion Storm" }, + { "chance": 0.34, "name": "Stalking Fan" }, + { "chance": 0.34, "name": "Decisive Judgement" } + ], + "SolNode185": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode187": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode188": [ + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, + { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, + { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, + { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, + { "chance": 7.04, "name": "Stretch", "rotation": "C" }, + { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, + { "chance": 7.04, "name": "Scorch", "rotation": "C" }, + { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, + { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, + { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, + { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, + { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } + ], + "SolNode189": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ], + "SolNode199": [ + { "chance": 75.5, "name": "5,000 Credits Cache" }, + { "chance": 22, "name": "250 Endo" }, + { "chance": 0.5, "name": "Forma Blueprint" }, + { "chance": 0.5, "name": "Crimson Dervish" }, + { "chance": 0.5, "name": "Astral Twilight" }, + { "chance": 0.5, "name": "Blind Justice" }, + { "chance": 0.25, "name": "Tempo Royale" }, + { "chance": 0.25, "name": "Vengeful Revenant" } + ], + "SolNode193": [ + { "chance": 38.72, "name": "Saryn Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Saryn Chassis Blueprint" }, + { "chance": 22.56, "name": "Saryn Systems Blueprint" } + ], + "SolNode195": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.67, "name": "North Wind", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Streamline", "rotation": "B" }, + { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, + { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, + { "chance": 2.26, "name": "Ravage", "rotation": "C" }, + { "chance": 2.26, "name": "Stretch", "rotation": "C" }, + { "chance": 2.26, "name": "Handspring", "rotation": "C" }, + { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, + { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, + { "chance": 2.26, "name": "Continuity", "rotation": "C" }, + { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, + { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "ClanNode14": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 11.28, "name": "Life Strike", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "ClanNode15": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode203": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode210": [ + { "chance": 38.72, "name": "Nova Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Nova Chassis Blueprint" }, + { "chance": 22.56, "name": "Nova Systems Blueprint" } + ], + "SolNode216": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode211": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, + { "chance": 7.14, "name": "No Return", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 7.14, "name": "North Wind", "rotation": "B" }, + { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode215": [ + { "chance": 9.09, "name": "Vitality", "rotation": "A" }, + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, + { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, + { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, + { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, + { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, + { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, + { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 5.56, "name": "Rush", "rotation": "B" }, + { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, + { "chance": 5.56, "name": "No Return", "rotation": "B" }, + { "chance": 5.56, "name": "Serration", "rotation": "B" }, + { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 5.56, "name": "North Wind", "rotation": "B" }, + { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 5.56, "name": "Streamline", "rotation": "B" }, + { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, + { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, + { "chance": 5.56, "name": "Fury", "rotation": "B" }, + { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, + { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, + { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, + { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, + { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode212": [ + { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 6.25, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.25, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.25, "name": "North Wind", "rotation": "B" }, + { "chance": 6.25, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 6.25, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.25, "name": "Stormbringer", "rotation": "B" }, + { "chance": 6.25, "name": "Point Blank", "rotation": "B" }, + { "chance": 6.25, "name": "Fury", "rotation": "B" }, + { "chance": 6.25, "name": "150 Endo", "rotation": "B" }, + { "chance": 6.25, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.25, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 4.51, "name": "Vital Sense", "rotation": "C" }, + { "chance": 4.51, "name": "Metal Auger", "rotation": "C" }, + { "chance": 4.51, "name": "Ravage", "rotation": "C" }, + { "chance": 4.51, "name": "Stretch", "rotation": "C" }, + { "chance": 4.51, "name": "300 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode217": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "C" } + ], + "ClanNode6": [ + { "chance": 6.9, "name": "Vitality", "rotation": "A" }, + { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, + { "chance": 7.37, "name": "Rush", "rotation": "A" }, + { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, + { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, + { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, + { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, + { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, + { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, + { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, + { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, + { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, + { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, + { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, + { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, + { "chance": 8.43, "name": "No Return", "rotation": "B" }, + { "chance": 8.43, "name": "Ravage", "rotation": "B" }, + { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, + { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, + { "chance": 1.58, "name": "Serration", "rotation": "B" }, + { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 0.67, "name": "Fury", "rotation": "B" }, + { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, + { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, + { "chance": 0.67, "name": "Quickening", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, + { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, + { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, + { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, + { "chance": 1.84, "name": "Streamline", "rotation": "C" }, + { "chance": 1.84, "name": "Intensify", "rotation": "C" }, + { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, + { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, + { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, + { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, + { "chance": 0.4, "name": "Quickening", "rotation": "C" }, + { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } + ], + "ClanNode7": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode400": [ + { "chance": 6.67, "name": "Lith G6 Relic" }, + { "chance": 6.67, "name": "Lith G6 Relic" }, + { "chance": 6.67, "name": "Lith W3 Relic" }, + { "chance": 6.67, "name": "Lith W3 Relic" }, + { "chance": 6.67, "name": "Lith S15 Relic" }, + { "chance": 6.67, "name": "Lith S15 Relic" }, + { "chance": 6.67, "name": "Lith S14 Relic" }, + { "chance": 6.67, "name": "Lith S14 Relic" }, + { "chance": 6.67, "name": "Lith B11 Relic" }, + { "chance": 6.67, "name": "Lith B11 Relic" }, + { "chance": 6.67, "name": "Lith H9 Relic" }, + { "chance": 6.67, "name": "Lith H9 Relic" }, + { "chance": 6.67, "name": "Lith R3 Relic" }, + { "chance": 6.67, "name": "Lith R3 Relic" }, + { "chance": 6.67, "name": "Aya" } + ], + "SolNode401": [ + { "chance": 6.67, "name": "Lith G6 Relic" }, + { "chance": 6.67, "name": "Lith G6 Relic" }, + { "chance": 6.67, "name": "Lith W3 Relic" }, + { "chance": 6.67, "name": "Lith W3 Relic" }, + { "chance": 6.67, "name": "Lith S15 Relic" }, + { "chance": 6.67, "name": "Lith S15 Relic" }, + { "chance": 6.67, "name": "Lith S14 Relic" }, + { "chance": 6.67, "name": "Lith S14 Relic" }, + { "chance": 6.67, "name": "Lith B11 Relic" }, + { "chance": 6.67, "name": "Lith B11 Relic" }, + { "chance": 6.67, "name": "Lith H9 Relic" }, + { "chance": 6.67, "name": "Lith H9 Relic" }, + { "chance": 6.67, "name": "Lith R3 Relic" }, + { "chance": 6.67, "name": "Lith R3 Relic" }, + { "chance": 6.67, "name": "Aya" } + ], + "SolNode402": [ + { "chance": 6.67, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Aya", "rotation": "A" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Aya", "rotation": "B" }, + { "chance": 2.05, "name": "Aya", "rotation": "B" }, + { "chance": 2.05, "name": "Aya", "rotation": "B" }, + { "chance": 6.67, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Lith R3 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 6.67, "name": "Aya", "rotation": "C" } + ], + "SolNode403": [ + { "chance": 6.67, "name": "Lith G6 Relic" }, + { "chance": 6.67, "name": "Lith W3 Relic" }, + { "chance": 6.67, "name": "Lith S15 Relic" }, + { "chance": 6.67, "name": "Lith S14 Relic" }, + { "chance": 6.67, "name": "Lith B11 Relic" }, + { "chance": 6.67, "name": "Lith W3 Relic" }, + { "chance": 6.67, "name": "Lith R3 Relic" }, + { "chance": 6.67, "name": "Meso P11 Relic" }, + { "chance": 6.67, "name": "Meso G5 Relic" }, + { "chance": 6.67, "name": "Meso K6 Relic" }, + { "chance": 6.67, "name": "Meso P13 Relic" }, + { "chance": 6.67, "name": "Meso C8 Relic" }, + { "chance": 6.67, "name": "Meso K4 Relic" }, + { "chance": 6.67, "name": "Meso S12 Relic" }, + { "chance": 6.67, "name": "Aya" } + ], + "SolNode404": [ + { "chance": 33.33, "name": "5,000 Credits Cache", "rotation": "A" }, + { "chance": 33.33, "name": "5,000 Credits Cache", "rotation": "A" }, + { "chance": 33.33, "name": "5,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, + { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 18.88, "name": "600 Endo", "rotation": "C" }, + { "chance": 18.88, "name": "600 Endo", "rotation": "C" }, + { "chance": 18.88, "name": "600 Endo", "rotation": "C" }, + { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, + { "chance": 18.88, "name": "Neurodes", "rotation": "C" }, + { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, + { "chance": 3.67, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 3.67, "name": "Bullet Dance", "rotation": "C" }, + { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } + ], + "SolNode405": [ + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 2.05, "name": "Aya", "rotation": "A" }, + { "chance": 2.05, "name": "Aya", "rotation": "A" }, + { "chance": 2.05, "name": "Aya", "rotation": "A" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 2.05, "name": "Aya", "rotation": "B" }, + { "chance": 2.05, "name": "Aya", "rotation": "B" }, + { "chance": 2.05, "name": "Aya", "rotation": "B" }, + { "chance": 6.49, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 1.29, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Neo N23 Relic", "rotation": "C" }, + { "chance": 6.49, "name": "Aya", "rotation": "C" }, + { "chance": 1.29, "name": "Aya", "rotation": "C" } + ], + "SolNode406": [ + { "chance": 6.67, "name": "Meso P11 Relic" }, + { "chance": 6.67, "name": "Meso G5 Relic" }, + { "chance": 6.67, "name": "Meso K6 Relic" }, + { "chance": 6.67, "name": "Meso P13 Relic" }, + { "chance": 6.67, "name": "Meso C8 Relic" }, + { "chance": 6.67, "name": "Meso K4 Relic" }, + { "chance": 6.67, "name": "Meso S12 Relic" }, + { "chance": 6.67, "name": "Neo F2 Relic" }, + { "chance": 6.67, "name": "Neo T7 Relic" }, + { "chance": 6.67, "name": "Neo K5 Relic" }, + { "chance": 6.67, "name": "Neo D7 Relic" }, + { "chance": 6.67, "name": "Neo C4 Relic" }, + { "chance": 6.67, "name": "Neo L3 Relic" }, + { "chance": 6.67, "name": "Neo N23 Relic" }, + { "chance": 6.67, "name": "Aya" } + ], + "SolNode407": [ + { "chance": 6.67, "name": "Meso P11 Relic" }, + { "chance": 6.67, "name": "Meso G5 Relic" }, + { "chance": 6.67, "name": "Meso K6 Relic" }, + { "chance": 6.67, "name": "Meso P13 Relic" }, + { "chance": 6.67, "name": "Meso C8 Relic" }, + { "chance": 6.67, "name": "Meso K4 Relic" }, + { "chance": 6.67, "name": "Meso S12 Relic" }, + { "chance": 6.67, "name": "Neo F2 Relic" }, + { "chance": 6.67, "name": "Neo T7 Relic" }, + { "chance": 6.67, "name": "Neo K5 Relic" }, + { "chance": 6.67, "name": "Neo D7 Relic" }, + { "chance": 6.67, "name": "Neo C4 Relic" }, + { "chance": 6.67, "name": "Neo L3 Relic" }, + { "chance": 6.67, "name": "Neo N23 Relic" }, + { "chance": 6.67, "name": "Aya" } + ], + "SolNode408": [ + { "chance": 6.96, "name": "Meso P11 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Meso G5 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Meso K6 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Meso P13 Relic", "rotation": "A" }, + { "chance": 1.29, "name": "Meso C8 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Meso K4 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Meso S12 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Aya", "rotation": "A" }, + { "chance": 6.96, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 6.96, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 1.29, "name": "Aya", "rotation": "A" }, + { "chance": 9.09, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 9.09, "name": "Aya", "rotation": "B" }, + { "chance": 9.68, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Neo N23 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Aya", "rotation": "C" }, + { "chance": 2.82, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 2.82, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 2.82, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 2.82, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 2.82, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 2.82, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 2.82, "name": "Axi H7 Relic", "rotation": "C" }, + { "chance": 2.82, "name": "Aya", "rotation": "C" } + ], + "SolNode409": [ + { "chance": 9.09, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Aya", "rotation": "A" }, + { "chance": 12.5, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Aya", "rotation": "B" }, + { "chance": 10.84, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi H7 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi H7 Relic", "rotation": "C" }, + { "chance": 22.11, "name": "Aya", "rotation": "C" } + ], + "SolNode410": [ + { "chance": 6.25, "name": "Neo F2 Relic" }, + { "chance": 6.25, "name": "Neo T7 Relic" }, + { "chance": 6.25, "name": "Neo K5 Relic" }, + { "chance": 6.25, "name": "Neo D7 Relic" }, + { "chance": 6.25, "name": "Neo C4 Relic" }, + { "chance": 6.25, "name": "Neo C4 Relic" }, + { "chance": 6.25, "name": "Neo L3 Relic" }, + { "chance": 6.25, "name": "Axi H6 Relic" }, + { "chance": 6.25, "name": "Axi A16 Relic" }, + { "chance": 6.25, "name": "Axi G10 Relic" }, + { "chance": 6.25, "name": "Axi B6 Relic" }, + { "chance": 6.25, "name": "Axi K11 Relic" }, + { "chance": 6.25, "name": "Axi W3 Relic" }, + { "chance": 6.25, "name": "Axi H7 Relic" }, + { "chance": 6.25, "name": "Aya" }, + { "chance": 6.25, "name": "Aya" } + ], + "SolNode411": [ + { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, + { "chance": 15.18, "name": "400 Endo", "rotation": "B" }, + { "chance": 15.18, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 15.18, "name": "400X Circuits", "rotation": "B" }, + { "chance": 15.18, "name": "400X Rubedo", "rotation": "B" }, + { "chance": 15.18, "name": "300X Plastids", "rotation": "B" }, + { "chance": 25.29, "name": "600 Endo", "rotation": "C" }, + { "chance": 25.29, "name": "600 Endo", "rotation": "C" }, + { "chance": 4.42, "name": "600 Endo", "rotation": "C" }, + { "chance": 25.29, "name": "Neurodes", "rotation": "C" }, + { "chance": 4.42, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 4.42, "name": "2X Gallium", "rotation": "C" }, + { "chance": 4.42, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 4.42, "name": "Bullet Dance", "rotation": "C" }, + { "chance": 1.01, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 1.01, "name": "Xiphos Avionics Blueprint", "rotation": "C" } + ], + "SolNode412": [ + { "chance": 9.09, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Aya", "rotation": "A" }, + { "chance": 12.5, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Aya", "rotation": "B" }, + { "chance": 10.84, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 10.84, "name": "Axi H7 Relic", "rotation": "C" }, + { "chance": 0.29, "name": "Axi H7 Relic", "rotation": "C" }, + { "chance": 22.11, "name": "Aya", "rotation": "C" } + ], + "SettlementNode3": [ + { "chance": 50, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 50, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.69, "name": "Parry", "rotation": "B" }, + { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.69, "name": "Serration", "rotation": "B" }, + { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, + { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.69, "name": "Intensify", "rotation": "B" }, + { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, + { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SettlementNode2": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SettlementNode12": [ + { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } + ], + "SettlementNode10": [ + { "chance": 16.67, "name": "Tempered Blade", "rotation": "A" }, + { "chance": 16.67, "name": "Sudden Impact", "rotation": "A" }, + { "chance": 16.67, "name": "Poisonous Sting", "rotation": "A" }, + { "chance": 16.67, "name": "Glacial Edge", "rotation": "A" }, + { "chance": 16.67, "name": "Conductive Blade", "rotation": "A" }, + { "chance": 16.67, "name": "Furor", "rotation": "A" }, + { "chance": 3.76, "name": "Extend", "rotation": "B" }, + { "chance": 3.76, "name": "Superior Defenses", "rotation": "B" }, + { "chance": 3.76, "name": "Cutting Edge", "rotation": "B" }, + { "chance": 3.76, "name": "System Reroute", "rotation": "B" }, + { "chance": 3.76, "name": "Efficient Transferral", "rotation": "B" }, + { "chance": 3.76, "name": "Blazing Steel", "rotation": "B" }, + { "chance": 77.44, "name": "150 Endo", "rotation": "B" }, + { "chance": 7.52, "name": "Meteor Crash", "rotation": "C" }, + { "chance": 7.52, "name": "Nebula Bore", "rotation": "C" }, + { "chance": 7.52, "name": "Astral Slash", "rotation": "C" }, + { "chance": 9.68, "name": "400 Endo", "rotation": "C" }, + { "chance": 9.68, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 9.68, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SettlementNode11": [ + { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, + { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, + { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, + { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, + { "chance": 8.33, "name": "Ravage", "rotation": "C" }, + { "chance": 8.33, "name": "Continuity", "rotation": "C" }, + { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, + { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SettlementNode14": [ + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "Reflection", "rotation": "A" }, + { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, + { "chance": 14.29, "name": "Parry", "rotation": "A" }, + { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 10, "name": "Master Key", "rotation": "C" }, + { "chance": 10, "name": "Reflection", "rotation": "C" }, + { "chance": 10, "name": "Parry", "rotation": "C" }, + { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, + { "chance": 10, "name": "Serration", "rotation": "C" }, + { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, + { "chance": 10, "name": "Metal Auger", "rotation": "C" }, + { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, + { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, + { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } + ], + "ClanNode10": [ + { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, + { "chance": 13.92, "name": "100 Endo", "rotation": "A" }, + { "chance": 13.92, "name": "100 Endo", "rotation": "A" }, + { "chance": 13.92, "name": "100 Endo", "rotation": "A" }, + { "chance": 2.58, "name": "Smite Corrupted", "rotation": "A" }, + { "chance": 6, "name": "Harrow Systems Blueprint", "rotation": "B" }, + { "chance": 8, "name": "Expel Corrupted", "rotation": "B" }, + { "chance": 8, "name": "Cleanse Corrupted", "rotation": "B" }, + { "chance": 8, "name": "Bane Of Corrupted", "rotation": "B" }, + { "chance": 10, "name": "Lith G6 Relic", "rotation": "B" }, + { "chance": 10, "name": "Lith W3 Relic", "rotation": "B" }, + { "chance": 10, "name": "Lith S15 Relic", "rotation": "B" }, + { "chance": 10, "name": "Lith S14 Relic", "rotation": "B" }, + { "chance": 10, "name": "Lith B11 Relic", "rotation": "B" }, + { "chance": 10, "name": "Lith H9 Relic", "rotation": "B" }, + { "chance": 10, "name": "Lith R3 Relic", "rotation": "B" }, + { "chance": 15, "name": "Harrow Systems Blueprint", "rotation": "C" }, + { "chance": 15, "name": "Quickening", "rotation": "C" }, + { "chance": 10, "name": "Lith G6 Relic", "rotation": "C" }, + { "chance": 10, "name": "Lith W3 Relic", "rotation": "C" }, + { "chance": 10, "name": "Lith S15 Relic", "rotation": "C" }, + { "chance": 10, "name": "Lith S14 Relic", "rotation": "C" }, + { "chance": 10, "name": "Lith B11 Relic", "rotation": "C" }, + { "chance": 10, "name": "Lith H9 Relic", "rotation": "C" }, + { "chance": 10, "name": "Lith R3 Relic", "rotation": "C" } + ], + "SettlementNode20": [ + { "chance": 38.72, "name": "Mag Neuroptics Blueprint" }, + { "chance": 38.72, "name": "Mag Chassis Blueprint" }, + { "chance": 22.56, "name": "Mag Systems Blueprint" } + ], + "ClanNode11": [ + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, + { "chance": 7.14, "name": "Provoked", "rotation": "B" }, + { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 7.14, "name": "Serration", "rotation": "B" }, + { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, + { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, + { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, + { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, + { "chance": 11.28, "name": "Quickening", "rotation": "C" }, + { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, + { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode707": [ + { "chance": 11.11, "name": "250 Endo", "rotation": "A" }, + { "chance": 11.11, "name": "250 Endo", "rotation": "A" }, + { "chance": 11.11, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 38.72, "name": "250 Endo", "rotation": "B" }, + { "chance": 38.72, "name": "250 Endo", "rotation": "B" }, + { "chance": 22.56, "name": "Mutalist Alad V Nav Coordinate", "rotation": "B" }, + { "chance": 22.56, "name": "Forma Blueprint", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } + ], + "SolNode710": [ + { "chance": 14.29, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 14.29, "name": "200 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "200 Endo", "rotation": "A" }, + { "chance": 14.29, "name": "1000X Nano Spores", "rotation": "A" }, + { "chance": 14.29, "name": "Thief's Wit", "rotation": "A" }, + { "chance": 14.29, "name": "3X Mutagen Sample", "rotation": "A" }, + { "chance": 15.18, "name": "5,000 Credits Cache", "rotation": "B" }, + { "chance": 15.18, "name": "5,000 Credits Cache", "rotation": "B" }, + { "chance": 15.18, "name": "200 Endo", "rotation": "B" }, + { "chance": 15.18, "name": "200 Endo", "rotation": "B" }, + { "chance": 15.18, "name": "Neurodes", "rotation": "B" }, + { "chance": 4.42, "name": "2X Neurodes", "rotation": "B" }, + { "chance": 2.01, "name": "Mutalist Alad V Nav Coordinate", "rotation": "B" }, + { "chance": 4.42, "name": "Cleanse Infested", "rotation": "B" }, + { "chance": 4.42, "name": "Bane Of Infested", "rotation": "B" }, + { "chance": 4.42, "name": "Smite Infested", "rotation": "B" }, + { "chance": 4.42, "name": "Expel Infested", "rotation": "B" }, + { "chance": 19.36, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 3.76, "name": "2X Argon Crystal", "rotation": "C" }, + { "chance": 19.36, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 3.76, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 19.36, "name": "Neural Sensors", "rotation": "C" }, + { "chance": 3.76, "name": "2X Neural Sensors", "rotation": "C" }, + { "chance": 19.36, "name": "400 Endo", "rotation": "C" }, + { "chance": 3.76, "name": "400 Endo", "rotation": "C" }, + { "chance": 3.76, "name": "Enemy Sense", "rotation": "C" }, + { "chance": 3.76, "name": "Master Thief", "rotation": "C" } + ], + "SolNode711": [ + { "chance": 11.11, "name": "400 Endo", "rotation": "A" }, + { "chance": 11.11, "name": "400 Endo", "rotation": "A" }, + { "chance": 11.11, "name": "Lith G6 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith W3 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith S15 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith S14 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith B11 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith H9 Relic", "rotation": "A" }, + { "chance": 11.11, "name": "Lith R3 Relic", "rotation": "A" }, + { "chance": 12.5, "name": "Mutalist Alad V Nav Coordinate", "rotation": "B" }, + { "chance": 12.5, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 12.5, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 22.56, "name": "Octavia Neuroptics Blueprint", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode712": [ + { "chance": 33.33, "name": "Nekros Chassis Blueprint" }, + { "chance": 33.33, "name": "Nekros Neuroptics Blueprint" }, + { "chance": 33.33, "name": "Nekros Systems Blueprint" } + ], + "SolNode300": [ + { "chance": 12.91, "name": "400 Endo", "rotation": "A" }, + { "chance": 12.91, "name": "400 Endo", "rotation": "A" }, + { "chance": 12.91, "name": "400 Endo", "rotation": "A" }, + { "chance": 12.91, "name": "300X Polymer Bundle", "rotation": "A" }, + { "chance": 12.91, "name": "350X Rubedo", "rotation": "A" }, + { "chance": 12.91, "name": "300X Plastids", "rotation": "A" }, + { "chance": 22.56, "name": "Octavia Systems Blueprint", "rotation": "A" }, + { "chance": 25.29, "name": "2,500 Credits Cache", "rotation": "B" }, + { "chance": 25.29, "name": "3,000 Credits Cache", "rotation": "B" }, + { "chance": 25.29, "name": "4,000 Credits Cache", "rotation": "B" }, + { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 10.82, "name": "600 Endo", "rotation": "C" }, + { "chance": 10.82, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 10.82, "name": "Gallium", "rotation": "C" }, + { "chance": 10.82, "name": "Neurodes", "rotation": "C" }, + { "chance": 10.82, "name": "2X Gallium", "rotation": "C" }, + { "chance": 10.82, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 10.82, "name": "2X Neurodes", "rotation": "C" }, + { "chance": 10.82, "name": "Tellurium", "rotation": "C" }, + { "chance": 10.82, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 1.29, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 1.29, "name": "Xiphos Engines Blueprint", "rotation": "C" } + ], + "SolNode306": [ + { "chance": 12.18, "name": "Blood Rush", "rotation": "A" }, + { "chance": 12.18, "name": "Hydraulic Crosshairs", "rotation": "A" }, + { "chance": 12.18, "name": "Shrapnel Shot", "rotation": "A" }, + { "chance": 12.18, "name": "100 Endo", "rotation": "A" }, + { "chance": 12.18, "name": "Fast Hands", "rotation": "A" }, + { "chance": 12.18, "name": "Point Strike", "rotation": "A" }, + { "chance": 12.18, "name": "Piercing Hit", "rotation": "A" }, + { "chance": 12.18, "name": "Pistol Gambit", "rotation": "A" }, + { "chance": 1.29, "name": "Gnashing Payara", "rotation": "A" }, + { "chance": 1.29, "name": "Astral Twilight", "rotation": "A" }, + { "chance": 7.49, "name": "Focused Defense", "rotation": "B" }, + { "chance": 7.49, "name": "Catalyzer Link", "rotation": "B" }, + { "chance": 7.49, "name": "Target Cracker", "rotation": "B" }, + { "chance": 7.49, "name": "No Return", "rotation": "B" }, + { "chance": 7.49, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 7.49, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 7.49, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 7.49, "name": "North Wind", "rotation": "B" }, + { "chance": 7.49, "name": "Cryo Rounds", "rotation": "B" }, + { "chance": 7.49, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 7.49, "name": "Streamline", "rotation": "B" }, + { "chance": 7.49, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 7.49, "name": "Stormbringer", "rotation": "B" }, + { "chance": 1.29, "name": "High Noon", "rotation": "B" }, + { "chance": 1.29, "name": "Crushing Ruin", "rotation": "B" }, + { "chance": 7.37, "name": "Rime Rounds", "rotation": "C" }, + { "chance": 7.37, "name": "Scattering Inferno", "rotation": "C" }, + { "chance": 37.94, "name": "Failsafe", "rotation": "C" }, + { "chance": 37.94, "name": "Coiling Viper", "rotation": "C" }, + { "chance": 2.01, "name": "Cleaving Whirlwind", "rotation": "C" }, + { "chance": 7.37, "name": "Ivara Chassis Blueprint", "rotation": "C" } + ], + "SolNode302": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, + { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode304": [ + { "chance": 10.84, "name": "Vitality" }, + { "chance": 10.84, "name": "Fast Deflection" }, + { "chance": 11.06, "name": "Rush" }, + { "chance": 10.84, "name": "Magazine Warp" }, + { "chance": 10.84, "name": "Trick Mag" }, + { "chance": 0.34, "name": "Pressure Point" }, + { "chance": 11.06, "name": "Ammo Drum" }, + { "chance": 10.84, "name": "Fast Hands" }, + { "chance": 10.84, "name": "Quickdraw" }, + { "chance": 10.84, "name": "Health Restore (Large)" }, + { "chance": 0.34, "name": "Omni Ammo Box" }, + { "chance": 0.34, "name": "North Wind" }, + { "chance": 0.34, "name": "Shocking Touch" }, + { "chance": 0.34, "name": "Molten Impact" }, + { "chance": 0.34, "name": "Stretch" } + ], + "SolNode307": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ], + "SolNode308": [ + { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 12.42, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 12.42, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 12.42, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 8.05, "name": "Lua Lens Blueprint", "rotation": "C" }, + { "chance": 5.03, "name": "Universal Medallion", "rotation": "C" }, + { "chance": 12.42, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 12.42, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 12.42, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 12.42, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode742": [ + { "chance": 10, "name": "Vitality", "rotation": "A" }, + { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, + { "chance": 10, "name": "Trick Mag", "rotation": "A" }, + { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, + { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, + { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, + { "chance": 6.67, "name": "North Wind", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Streamline", "rotation": "B" }, + { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, + { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, + { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, + { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, + { "chance": 2.26, "name": "Ravage", "rotation": "C" }, + { "chance": 2.26, "name": "Stretch", "rotation": "C" }, + { "chance": 2.26, "name": "Handspring", "rotation": "C" }, + { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, + { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, + { "chance": 2.26, "name": "Continuity", "rotation": "C" }, + { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, + { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } + ], + "SolNode744": [ + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, + { "chance": 25, "name": "400 Endo", "rotation": "A" }, + { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, + { "chance": 6.67, "name": "Stretch", "rotation": "B" }, + { "chance": 6.67, "name": "Serration", "rotation": "B" }, + { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, + { "chance": 6.67, "name": "Flow", "rotation": "B" }, + { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, + { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, + { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, + { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, + { "chance": 4, "name": "Pistol Ammo Mutation", "rotation": "C" }, + { "chance": 4, "name": "Arrow Mutation", "rotation": "C" }, + { "chance": 4, "name": "Rifle Ammo Mutation", "rotation": "C" }, + { "chance": 4, "name": "Sniper Ammo Mutation", "rotation": "C" }, + { "chance": 4, "name": "Shotgun Ammo Mutation", "rotation": "C" }, + { "chance": 8, "name": "Axi H6 Relic", "rotation": "C" }, + { "chance": 8, "name": "Axi A16 Relic", "rotation": "C" }, + { "chance": 8, "name": "Axi G10 Relic", "rotation": "C" }, + { "chance": 8, "name": "Axi B6 Relic", "rotation": "C" }, + { "chance": 8, "name": "Axi K11 Relic", "rotation": "C" }, + { "chance": 8, "name": "Axi W3 Relic", "rotation": "C" }, + { "chance": 8, "name": "Axi H7 Relic", "rotation": "C" }, + { "chance": 12, "name": "Harrow Neuroptics Blueprint", "rotation": "C" }, + { "chance": 12, "name": "Harrow Systems Blueprint", "rotation": "C" } + ], + "SolNode745": [ + { "chance": 100, "name": "100X Kuva", "rotation": "A" }, + { "chance": 100, "name": "200X Kuva", "rotation": "B" }, + { "chance": 95, "name": "350X Kuva", "rotation": "C" }, + { "chance": 5, "name": "Universal Medallion", "rotation": "C" } + ], + "SolNode746": [ + { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, + { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, + { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, + { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, + { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, + { "chance": 10.79, "name": "600 Endo", "rotation": "C" }, + { "chance": 10.79, "name": "600 Endo", "rotation": "C" }, + { "chance": 10.79, "name": "600 Endo", "rotation": "C" }, + { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, + { "chance": 10.79, "name": "Orokin Cell", "rotation": "C" }, + { "chance": 10.79, "name": "Gallium", "rotation": "C" }, + { "chance": 10.79, "name": "Neurodes", "rotation": "C" }, + { "chance": 10.79, "name": "Cyclone Kraken", "rotation": "C" }, + { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, + { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, + { "chance": 3.67, "name": "2X Neural Sensors", "rotation": "C" }, + { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, + { "chance": 3.67, "name": "Tellurium", "rotation": "C" }, + { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, + { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } + ], + "SolNode747": [ + { "chance": 20, "name": "2,500 Credits Cache", "rotation": "A" }, + { "chance": 16.67, "name": "Harrow Neuroptics Blueprint", "rotation": "A" }, + { "chance": 13.33, "name": "Steady Hands", "rotation": "A" }, + { "chance": 13.33, "name": "Stabilizer", "rotation": "A" }, + { "chance": 13.33, "name": "Power Throw", "rotation": "A" }, + { "chance": 13.33, "name": "Stretch", "rotation": "A" }, + { "chance": 10, "name": "200 Endo", "rotation": "A" }, + { "chance": 10, "name": "Untraceable", "rotation": "B" }, + { "chance": 10, "name": "Runtime", "rotation": "B" }, + { "chance": 10, "name": "Scorch", "rotation": "B" }, + { "chance": 10, "name": "Thermite Rounds", "rotation": "B" }, + { "chance": 10, "name": "Frostbite", "rotation": "B" }, + { "chance": 10, "name": "Frigid Blast", "rotation": "B" }, + { "chance": 10, "name": "Arrow Mutation", "rotation": "B" }, + { "chance": 10, "name": "Sniper Ammo Mutation", "rotation": "B" }, + { "chance": 10, "name": "Shotgun Ammo Mutation", "rotation": "B" }, + { "chance": 10, "name": "Covert Lethality", "rotation": "B" }, + { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, + { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" }, + { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "C" }, + { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "C" }, + { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "C" }, + { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "C" }, + { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "C" }, + { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "C" }, + { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "C" } + ], + "SolNode748": [ + { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, + { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, + { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } + ] +} diff --git a/static/json/scripts/missions-drop-table-get-script.js b/static/json/scripts/missions-drop-table-get-script.js index c8957fce..e80d6020 100644 --- a/static/json/scripts/missions-drop-table-get-script.js +++ b/static/json/scripts/missions-drop-table-get-script.js @@ -1,24 +1,267 @@ // for https://www.warframe.com/ru/droptables /* eslint-disable */ (() => { - const missionNames = {"Mercury/Larunda Relay":"MercuryHUB","Venus/Vesper Relay":"VenusHUB","Earth/Strata Relay":"EarthHUB","Mars/Maroo's Bazaar":"TradeHUB1","Saturn/Kronia Relay":"SaturnHUB","Eris/Kuiper Relay":"ErisHUB","Europa/Leonov Relay":"EuropaHUB","Pluto/Orcus Relay":"PlutoHUB","Venus/Romula":"ClanNode0","Venus/Malva":"ClanNode1","Earth/Coba":"ClanNode2","Earth/Tikal":"ClanNode3","Jupiter/Sinai":"ClanNode4","Jupiter/Cameria":"ClanNode5","Europa/Larzac":"ClanNode6","Europa/Cholistan":"ClanNode7","Mars/Kadesh":"ClanNode8","Mars/Wahiba":"ClanNode9","Phobos/Memphis":"ClanNode10","Phobos/Zeugma":"ClanNode11","Saturn/Caracol":"ClanNode12","Saturn/Piscinas":"ClanNode13","Sedna/Amarna":"ClanNode14","Sedna/Sangeru":"ClanNode15","Uranus/Ur":"ClanNode16","Uranus/Assur":"ClanNode17","Eris/Akkad":"ClanNode18","Eris/Zabala":"ClanNode19","Neptune/Yursa":"ClanNode20","Neptune/Kelashin":"ClanNode21","Ceres/Seimeni":"ClanNode22","Ceres/Gabii":"ClanNode23","Pluto/Sechura":"ClanNode24","Pluto/Hieracon":"ClanNode25","Phobos/Roche":"SettlementNode1","Phobos/Skyresh":"SettlementNode2","Phobos/Stickney":"SettlementNode3","Phobos/Kepler":"SettlementNode10","Phobos/Gulliver":"SettlementNode11","Phobos/Monolith":"SettlementNode12","Phobos/Shklovsky":"SettlementNode14","Phobos/Sharpless":"SettlementNode15","Phobos/Iliad":"SettlementNode20","Neptune/Galatea":"SolNode1","Venus/Aphrodite":"SolNode2","Pluto/Acheron":"SolNode4","Neptune/Despina":"SolNode6","Uranus/Rosalind":"SolNode9","Jupiter/Thebe":"SolNode10","Mars/Tharsis":"SolNode11","Mercury/Elion":"SolNode12","Mars/Ultor":"SolNode14","Earth/Pacific":"SolNode15","Mars/Augustus":"SolNode16","Neptune/Proteus":"SolNode17","Saturn/Rhea":"SolNode18","Saturn/Enceladus":"SolNode19","Saturn/Telesto":"SolNode20","Pluto/Narcissus":"SolNode21","Venus/Tessera":"SolNode22","Venus/Cytherean":"SolNode23","Earth/Oro":"SolNode24","Jupiter/Callisto":"SolNode25","Earth/Lith":"SolNode26","Earth/E Prime":"SolNode27","Mercury/Terminus":"SolNode28","Mars/Olympus":"SolNode30","Saturn/Anthe":"SolNode31","Saturn/Tethys":"SolNode32","Uranus/Ariel":"SolNode33","Uranus/Sycorax":"SolNode34","Mars/Martialis":"SolNode36","Pluto/Minthe":"SolNode38","Earth/Everest":"SolNode39","Mars/Arval":"SolNode41","Saturn/Helene":"SolNode42","Pluto/Cerberus":"SolNode43","Mars/Ara":"SolNode45","Mars/Spear":"SolNode46","Pluto/Regna":"SolNode48","Neptune/Larissa":"SolNode49","Saturn/Numa":"SolNode50","Pluto/Hades":"SolNode51","Jupiter/Themisto":"SolNode53","Pluto/Cypress":"SolNode56","Neptune/Sao":"SolNode57","Mars/Hellas":"SolNode58","Earth/Eurasia":"SolNode59","Uranus/Caliban":"SolNode60","Venus/Ishtar":"SolNode61","Neptune/Neso":"SolNode62","Earth/Mantle":"SolNode63","Uranus/Umbriel":"SolNode64","Mars/Gradivus":"SolNode65","Venus/Unda":"SolNode66","Saturn/Dione":"SolNode67","Mars/Vallis":"SolNode68","Uranus/Ophelia":"SolNode69","Saturn/Cassini":"SolNode70","Pluto/Outer Terminus":"SolNode72","Jupiter/Ananke":"SolNode73","Jupiter/Carme":"SolNode74","Earth/Cervantes":"SolNode75","Pluto/Hydra":"SolNode76","Neptune/Triton":"SolNode78","Earth/Cambria":"SolNode79","Pluto/Palus":"SolNode81","Saturn/Calypso":"SolNode82","Uranus/Cressida":"SolNode83","Neptune/Nereid":"SolNode84","Earth/Gaia":"SolNode85","Jupiter/Ganymede":"SolNode87","Jupiter/Adrastea":"SolNode88","Earth/Mariana":"SolNode89","Saturn/Keeler":"SolNode93","Mercury/Apollodorus":"SolNode94","Saturn/Titan":"SolNode96","Jupiter/Amalthea":"SolNode97","Uranus/Desdemona":"SolNode98","Mars/War":"SolNode99","Jupiter/Elara":"SolNode100","Venus/Kiliken":"SolNode101","Pluto/Oceanum":"SolNode102","Mercury/M Prime":"SolNode103","Venus/Fossa":"SolNode104","Uranus/Titania":"SolNode105","Mars/Alator":"SolNode106","Venus/Venera":"SolNode107","Mercury/Tolstoj":"SolNode108","Venus/Linea":"SolNode109","Mars/Ares":"SolNode113","Uranus/Puck":"SolNode114","Neptune/Laomedeia":"SolNode118","Mercury/Caloris":"SolNode119","Jupiter/Carpo":"SolNode121","Uranus/Stephano":"SolNode122","Venus/V Prime":"SolNode123","Jupiter/Io":"SolNode125","Jupiter/Metis":"SolNode126","Neptune/Psamathe":"SolNode127","Venus/E Gate":"SolNode128","Venus/Orb Vallis":"SolNode129","Mercury/Lares":"SolNode130","Ceres/Pallas":"SolNode131","Ceres/Bode":"SolNode132","Ceres/Thon":"SolNode135","Ceres/Nuovo":"SolNode137","Ceres/Ludi":"SolNode138","Ceres/Lex":"SolNode139","Ceres/Kiste":"SolNode140","Ceres/Ker":"SolNode141","Ceres/Exta":"SolNode144","Ceres/Draco":"SolNode146","Ceres/Cinxia":"SolNode147","Ceres/Casta":"SolNode149","Eris/Brugia":"SolNode153","Eris/Isos":"SolNode162","Eris/Kala-azar":"SolNode164","Eris/Nimus":"SolNode166","Eris/Oestrus":"SolNode167","Eris/Saxis":"SolNode171","Eris/Xini":"SolNode172","Eris/Solium":"SolNode173","Eris/Naeglar":"SolNode175","Sedna/Kappa":"SolNode177","Sedna/Adaro":"SolNode181","Sedna/Vodyanoi":"SolNode183","Sedna/Rusalka":"SolNode184","Sedna/Berehynia":"SolNode185","Sedna/Selkie":"SolNode187","Sedna/Kelpie":"SolNode188","Sedna/Naga":"SolNode189","Sedna/Nakki":"SolNode190","Sedna/Marid":"SolNode191","Sedna/Merrow":"SolNode193","Sedna/Hydron":"SolNode195","Sedna/Charybdis":"SolNode196","Sedna/Yam":"SolNode199","Europa/Abaddon":"SolNode203","Europa/Armaros":"SolNode204","Europa/Baal":"SolNode205","Europa/Morax":"SolNode209","Europa/Naamah":"SolNode210","Europa/Ose":"SolNode211","Europa/Paimon":"SolNode212","Europa/Sorath":"SolNode214","Europa/Valac":"SolNode215","Europa/Valefor":"SolNode216","Europa/Orias":"SolNode217","Europa/Kokabiel":"SolNode220","Mercury/Boethius":"SolNode223","Mercury/Odin":"SolNode224","Mercury/Suisei":"SolNode225","Mercury/Pantheon":"SolNode226","Earth/Plains of Eidolon":"SolNode228","Deimos/Cambion Drift":"SolNode229","Lua/Plato":"SolNode300","Lua/Grimaldi":"SolNode301","Lua/Tycho":"SolNode302","Lua/Copernicus":"SolNode304","Lua/Stöfler":"SolNode305","Lua/Pavlov":"SolNode306","Lua/Zeipel":"SolNode307","Lua/Apollo":"SolNode308","Void/Teshub":"SolNode400","Void/Hepit":"SolNode401","Void/Taranis":"SolNode402","Void/Tiwaz":"SolNode403","Void/Stribog":"SolNode404","Void/Ani":"SolNode405","Void/Ukko":"SolNode406","Void/Oxomoco":"SolNode407","Void/Belenus":"SolNode408","Void/Mot":"SolNode409","Void/Aten":"SolNode410","Void/Marduk":"SolNode411","Void/Mithra":"SolNode412","undefined/Jordas Golem Assassinate":"SolNode701","undefined/Mutalist Alad V Assassinate":"SolNode705","Deimos/Horend":"SolNode706","Deimos/Hyf":"SolNode707","Deimos/Phlegyas":"SolNode708","Deimos/Dirus":"SolNode709","Deimos/Formido":"SolNode710","Deimos/Terrorem":"SolNode711","Deimos/Magnacidium":"SolNode712","Deimos/Exequias":"SolNode713","Jupiter/The Ropalolyst":"SolNode740","Kuva Fortress/Koro":"SolNode741","Kuva Fortress/Nabuk":"SolNode742","Kuva Fortress/Rotuma":"SolNode743","Kuva Fortress/Taveuni":"SolNode744","Kuva Fortress/Tamu":"SolNode745","Kuva Fortress/Dakata":"SolNode746","Kuva Fortress/Pago":"SolNode747","Kuva Fortress/Garus":"SolNode748","Venus/Montes":"SolNode902","Earth/Erpo":"SolNode903","Mars/Syrtis":"SolNode904","Jupiter/Galilea":"SolNode905","Saturn/Pandora":"SolNode906","Uranus/Caelus":"SolNode907"}; + const missionNames = { + "Mercury/Larunda Relay": "MercuryHUB", + "Venus/Vesper Relay": "VenusHUB", + "Earth/Strata Relay": "EarthHUB", + "Mars/Maroo's Bazaar": "TradeHUB1", + "Saturn/Kronia Relay": "SaturnHUB", + "Eris/Kuiper Relay": "ErisHUB", + "Europa/Leonov Relay": "EuropaHUB", + "Pluto/Orcus Relay": "PlutoHUB", + "Venus/Romula": "ClanNode0", + "Venus/Malva": "ClanNode1", + "Earth/Coba": "ClanNode2", + "Earth/Tikal": "ClanNode3", + "Jupiter/Sinai": "ClanNode4", + "Jupiter/Cameria": "ClanNode5", + "Europa/Larzac": "ClanNode6", + "Europa/Cholistan": "ClanNode7", + "Mars/Kadesh": "ClanNode8", + "Mars/Wahiba": "ClanNode9", + "Phobos/Memphis": "ClanNode10", + "Phobos/Zeugma": "ClanNode11", + "Saturn/Caracol": "ClanNode12", + "Saturn/Piscinas": "ClanNode13", + "Sedna/Amarna": "ClanNode14", + "Sedna/Sangeru": "ClanNode15", + "Uranus/Ur": "ClanNode16", + "Uranus/Assur": "ClanNode17", + "Eris/Akkad": "ClanNode18", + "Eris/Zabala": "ClanNode19", + "Neptune/Yursa": "ClanNode20", + "Neptune/Kelashin": "ClanNode21", + "Ceres/Seimeni": "ClanNode22", + "Ceres/Gabii": "ClanNode23", + "Pluto/Sechura": "ClanNode24", + "Pluto/Hieracon": "ClanNode25", + "Phobos/Roche": "SettlementNode1", + "Phobos/Skyresh": "SettlementNode2", + "Phobos/Stickney": "SettlementNode3", + "Phobos/Kepler": "SettlementNode10", + "Phobos/Gulliver": "SettlementNode11", + "Phobos/Monolith": "SettlementNode12", + "Phobos/Shklovsky": "SettlementNode14", + "Phobos/Sharpless": "SettlementNode15", + "Phobos/Iliad": "SettlementNode20", + "Neptune/Galatea": "SolNode1", + "Venus/Aphrodite": "SolNode2", + "Pluto/Acheron": "SolNode4", + "Neptune/Despina": "SolNode6", + "Uranus/Rosalind": "SolNode9", + "Jupiter/Thebe": "SolNode10", + "Mars/Tharsis": "SolNode11", + "Mercury/Elion": "SolNode12", + "Mars/Ultor": "SolNode14", + "Earth/Pacific": "SolNode15", + "Mars/Augustus": "SolNode16", + "Neptune/Proteus": "SolNode17", + "Saturn/Rhea": "SolNode18", + "Saturn/Enceladus": "SolNode19", + "Saturn/Telesto": "SolNode20", + "Pluto/Narcissus": "SolNode21", + "Venus/Tessera": "SolNode22", + "Venus/Cytherean": "SolNode23", + "Earth/Oro": "SolNode24", + "Jupiter/Callisto": "SolNode25", + "Earth/Lith": "SolNode26", + "Earth/E Prime": "SolNode27", + "Mercury/Terminus": "SolNode28", + "Mars/Olympus": "SolNode30", + "Saturn/Anthe": "SolNode31", + "Saturn/Tethys": "SolNode32", + "Uranus/Ariel": "SolNode33", + "Uranus/Sycorax": "SolNode34", + "Mars/Martialis": "SolNode36", + "Pluto/Minthe": "SolNode38", + "Earth/Everest": "SolNode39", + "Mars/Arval": "SolNode41", + "Saturn/Helene": "SolNode42", + "Pluto/Cerberus": "SolNode43", + "Mars/Ara": "SolNode45", + "Mars/Spear": "SolNode46", + "Pluto/Regna": "SolNode48", + "Neptune/Larissa": "SolNode49", + "Saturn/Numa": "SolNode50", + "Pluto/Hades": "SolNode51", + "Jupiter/Themisto": "SolNode53", + "Pluto/Cypress": "SolNode56", + "Neptune/Sao": "SolNode57", + "Mars/Hellas": "SolNode58", + "Earth/Eurasia": "SolNode59", + "Uranus/Caliban": "SolNode60", + "Venus/Ishtar": "SolNode61", + "Neptune/Neso": "SolNode62", + "Earth/Mantle": "SolNode63", + "Uranus/Umbriel": "SolNode64", + "Mars/Gradivus": "SolNode65", + "Venus/Unda": "SolNode66", + "Saturn/Dione": "SolNode67", + "Mars/Vallis": "SolNode68", + "Uranus/Ophelia": "SolNode69", + "Saturn/Cassini": "SolNode70", + "Pluto/Outer Terminus": "SolNode72", + "Jupiter/Ananke": "SolNode73", + "Jupiter/Carme": "SolNode74", + "Earth/Cervantes": "SolNode75", + "Pluto/Hydra": "SolNode76", + "Neptune/Triton": "SolNode78", + "Earth/Cambria": "SolNode79", + "Pluto/Palus": "SolNode81", + "Saturn/Calypso": "SolNode82", + "Uranus/Cressida": "SolNode83", + "Neptune/Nereid": "SolNode84", + "Earth/Gaia": "SolNode85", + "Jupiter/Ganymede": "SolNode87", + "Jupiter/Adrastea": "SolNode88", + "Earth/Mariana": "SolNode89", + "Saturn/Keeler": "SolNode93", + "Mercury/Apollodorus": "SolNode94", + "Saturn/Titan": "SolNode96", + "Jupiter/Amalthea": "SolNode97", + "Uranus/Desdemona": "SolNode98", + "Mars/War": "SolNode99", + "Jupiter/Elara": "SolNode100", + "Venus/Kiliken": "SolNode101", + "Pluto/Oceanum": "SolNode102", + "Mercury/M Prime": "SolNode103", + "Venus/Fossa": "SolNode104", + "Uranus/Titania": "SolNode105", + "Mars/Alator": "SolNode106", + "Venus/Venera": "SolNode107", + "Mercury/Tolstoj": "SolNode108", + "Venus/Linea": "SolNode109", + "Mars/Ares": "SolNode113", + "Uranus/Puck": "SolNode114", + "Neptune/Laomedeia": "SolNode118", + "Mercury/Caloris": "SolNode119", + "Jupiter/Carpo": "SolNode121", + "Uranus/Stephano": "SolNode122", + "Venus/V Prime": "SolNode123", + "Jupiter/Io": "SolNode125", + "Jupiter/Metis": "SolNode126", + "Neptune/Psamathe": "SolNode127", + "Venus/E Gate": "SolNode128", + "Venus/Orb Vallis": "SolNode129", + "Mercury/Lares": "SolNode130", + "Ceres/Pallas": "SolNode131", + "Ceres/Bode": "SolNode132", + "Ceres/Thon": "SolNode135", + "Ceres/Nuovo": "SolNode137", + "Ceres/Ludi": "SolNode138", + "Ceres/Lex": "SolNode139", + "Ceres/Kiste": "SolNode140", + "Ceres/Ker": "SolNode141", + "Ceres/Exta": "SolNode144", + "Ceres/Draco": "SolNode146", + "Ceres/Cinxia": "SolNode147", + "Ceres/Casta": "SolNode149", + "Eris/Brugia": "SolNode153", + "Eris/Isos": "SolNode162", + "Eris/Kala-azar": "SolNode164", + "Eris/Nimus": "SolNode166", + "Eris/Oestrus": "SolNode167", + "Eris/Saxis": "SolNode171", + "Eris/Xini": "SolNode172", + "Eris/Solium": "SolNode173", + "Eris/Naeglar": "SolNode175", + "Sedna/Kappa": "SolNode177", + "Sedna/Adaro": "SolNode181", + "Sedna/Vodyanoi": "SolNode183", + "Sedna/Rusalka": "SolNode184", + "Sedna/Berehynia": "SolNode185", + "Sedna/Selkie": "SolNode187", + "Sedna/Kelpie": "SolNode188", + "Sedna/Naga": "SolNode189", + "Sedna/Nakki": "SolNode190", + "Sedna/Marid": "SolNode191", + "Sedna/Merrow": "SolNode193", + "Sedna/Hydron": "SolNode195", + "Sedna/Charybdis": "SolNode196", + "Sedna/Yam": "SolNode199", + "Europa/Abaddon": "SolNode203", + "Europa/Armaros": "SolNode204", + "Europa/Baal": "SolNode205", + "Europa/Morax": "SolNode209", + "Europa/Naamah": "SolNode210", + "Europa/Ose": "SolNode211", + "Europa/Paimon": "SolNode212", + "Europa/Sorath": "SolNode214", + "Europa/Valac": "SolNode215", + "Europa/Valefor": "SolNode216", + "Europa/Orias": "SolNode217", + "Europa/Kokabiel": "SolNode220", + "Mercury/Boethius": "SolNode223", + "Mercury/Odin": "SolNode224", + "Mercury/Suisei": "SolNode225", + "Mercury/Pantheon": "SolNode226", + "Earth/Plains of Eidolon": "SolNode228", + "Deimos/Cambion Drift": "SolNode229", + "Lua/Plato": "SolNode300", + "Lua/Grimaldi": "SolNode301", + "Lua/Tycho": "SolNode302", + "Lua/Copernicus": "SolNode304", + "Lua/Stöfler": "SolNode305", + "Lua/Pavlov": "SolNode306", + "Lua/Zeipel": "SolNode307", + "Lua/Apollo": "SolNode308", + "Void/Teshub": "SolNode400", + "Void/Hepit": "SolNode401", + "Void/Taranis": "SolNode402", + "Void/Tiwaz": "SolNode403", + "Void/Stribog": "SolNode404", + "Void/Ani": "SolNode405", + "Void/Ukko": "SolNode406", + "Void/Oxomoco": "SolNode407", + "Void/Belenus": "SolNode408", + "Void/Mot": "SolNode409", + "Void/Aten": "SolNode410", + "Void/Marduk": "SolNode411", + "Void/Mithra": "SolNode412", + "undefined/Jordas Golem Assassinate": "SolNode701", + "undefined/Mutalist Alad V Assassinate": "SolNode705", + "Deimos/Horend": "SolNode706", + "Deimos/Hyf": "SolNode707", + "Deimos/Phlegyas": "SolNode708", + "Deimos/Dirus": "SolNode709", + "Deimos/Formido": "SolNode710", + "Deimos/Terrorem": "SolNode711", + "Deimos/Magnacidium": "SolNode712", + "Deimos/Exequias": "SolNode713", + "Jupiter/The Ropalolyst": "SolNode740", + "Kuva Fortress/Koro": "SolNode741", + "Kuva Fortress/Nabuk": "SolNode742", + "Kuva Fortress/Rotuma": "SolNode743", + "Kuva Fortress/Taveuni": "SolNode744", + "Kuva Fortress/Tamu": "SolNode745", + "Kuva Fortress/Dakata": "SolNode746", + "Kuva Fortress/Pago": "SolNode747", + "Kuva Fortress/Garus": "SolNode748", + "Venus/Montes": "SolNode902", + "Earth/Erpo": "SolNode903", + "Mars/Syrtis": "SolNode904", + "Jupiter/Galilea": "SolNode905", + "Saturn/Pandora": "SolNode906", + "Uranus/Caelus": "SolNode907" + }; const result = {}; let lastItem = []; let lastItemIndex; let rotation; Array.from(document.querySelectorAll("table")[0].children[0].children).forEach(element => { - if (element.classList.contains('blank-row')) { - if(lastItemIndex) result[lastItemIndex]=lastItem; + if (element.classList.contains("blank-row")) { + if (lastItemIndex) result[lastItemIndex] = lastItem; lastItem = []; lastItemIndex = undefined; rotation = undefined; - } else if (element.children[0].getAttribute('colspan') == 2) { + } else if (element.children[0].getAttribute("colspan") == 2) { if (!lastItemIndex) { const mission = element.children[0].textContent; - const formatedMission = mission.substring(0, mission.indexOf(' (')) + const formatedMission = mission.substring(0, mission.indexOf(" (")); lastItemIndex = missionNames[formatedMission]; - } else{ - rotation = element.children[0].textContent.replace('Rotation ', ''); + } else { + rotation = element.children[0].textContent.replace("Rotation ", ""); } } else { const name = element.children[0].textContent; -- 2.47.2 From 3225b71a413823cc3b83603b125425c109fa1fba Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 6 Apr 2024 17:04:26 +0200 Subject: [PATCH 068/522] version update 35.5.5 (#140) --- config.json | 6 +- static/fixed_responses/worldState.json | 3158 +++++++++++++++--------- 2 files changed, 2031 insertions(+), 1133 deletions(-) diff --git a/config.json b/config.json index 1b8a5160..df809546 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,8 @@ { "autoCreateAccount": true, - "buildLabel": "2024.02.27.13.21/nZiv7UkxWYJ-spgQRXCEAA", - "matchmakingBuildId": "8033027149409830115", - "version": "35.1.2", + "buildLabel": "2024.04.05.09.57/uqu6l4zCW+JtySlPa-9hHg", + "matchmakingBuildId": "7887592499483330302", + "version": "35.5.5", "skipStoryModeChoice": true, "skipTutorial": true, "unlockAllMissions": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 58e19713..c27407a1 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "EcKjo1UfIsGqFE9hCSvuA72N9an362sTWb4+cgxgZApxMHnzqFhqMwfl0nNTy/DzYumqtK7mnZz80wTpd/QNfFIO/rixu+I/V65PScL+9tgxQh0BbwNudqCvU+b2DDdRl5qhYedouIPBBwm6gEualhvMvDVFuJ9sJTdAfrTKN8M1WIn6NKBcSpPNPAMrKXC+mYZfejWhl9QWD5tLnMM8GXQxgunJFxORb7wEuhMexSXcB1kHwEZUeHROjGFibZhyDN/F2JIWh6im0g3j3vscQPLoUBBv1dhHWaNkNzzfXw1qloypAbLn5+YzK60MHWbsx6zEtlSyudaRDhMNXOMPhg==", + "WorldSeed": "qgeWgo/QlC1kiDj+7+UDWBujyJ7fvjZ9yf6wuq6NOgA1tM98gpOjcIskPaKQiT1OoCq0trv/+kzn81yXpkazTpXaDWNZ8Y9brUfd/mb6ueB9FrpYScbdhzQlqwfvD85jy6zR4K0JP3hSdLbGQh5DRyBJ25fJxKqY9PRwtY81UVTxCKjilJLAdMejLbpScdmm+pOrLaQj+OfCVMEYPf8AsXDEbfdAiLR6W/Q9e9gxAUSvHN2Vd3VNa4AI1nfz1jhHqi2VUPNUCeJ73tX4xRd5lOCpOAEWgxcrJQPC3dtdIkcLWjzRdXrgxN846nu5YwdS8asy373PyUy14H8CQ34Vhw==", "Version": 10, "MobileVersion": "4.15.20.0", - "BuildLabel": "2024.02.27.13.21/nZiv7UkxWYJ-spgQRXCEAA", - "Time": 1709299834, + "BuildLabel": "2024.04.05.09.57/uqu6l4zCW+JtySlPa-9hHg", + "Time": 1712415056, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -67,16 +67,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "65368b9aa7625caedf0d6715" }, - "Messages": [{ "LanguageCode": "tr", "Message": "2023 Ürpertici Dojo Yarışması [Dagath'ın Çukuru]" }], - "Prop": "https://forums.warframe.com/topic/1369565-2023-%C3%BCrpertici-dojo-yar%C4%B1%C5%9Fmas%C4%B1-dagath%C4%B1n-%C3%A7ukuru/", - "Date": { "$date": { "$numberLong": "1698073320000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_09/Warframe5930.jpg.b61e0e1cb6c4a1dfa9294f94d328779e.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "6553c26fcd5e49b3c50aa556" }, "Messages": [{ "LanguageCode": "tr", "Message": "Eksiksiz Kavat ve Kubrow Rehberi" }], @@ -95,25 +85,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "6579dae50faa971ce30d3a46" }, - "Messages": [{ "LanguageCode": "ja", "Message": "アップデート35:「壁の中の囁き」パッチノート" }], - "Prop": "https://bit.ly/4aj8sTd", - "Date": { "$date": { "$numberLong": "1702484580000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/71619183f29041bae5d62979ec39f2ee.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "657a230aa75056b794032950" }, - "Messages": [{ "LanguageCode": "es", "Message": "ACTUALIZACIÓN 35: SUSURROS EN LAS PAREDES" }], - "Prop": "https://forums.warframe.com/topic/1374551-actualizaci%C3%B3n-35-susurros-en-las-paredes/", - "Date": { "$date": { "$numberLong": "1702503120000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "62dff6238607d6b5d80876f5" }, "Messages": [{ "LanguageCode": "fr", "Message": "Une ressource indispensable, le Wiki FR Warframe !" }], @@ -144,120 +115,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "65a81a1dd0387266d60d5dc1" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Gauss Prime Access is now available!" }, - { "LanguageCode": "fr", "Message": "Prime Access Gauss Prime : disponible !" }, - { "LanguageCode": "it", "Message": "L'Accesso Gauss Prime è ora disponibile!" }, - { "LanguageCode": "de", "Message": "Gauss Prime Access ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡Prime Access de Gauss ya está disponible!" }, - { "LanguageCode": "pt", "Message": "O Prime Access do Gauss Prime já está disponível!" }, - { "LanguageCode": "ru", "Message": "Доступ Гаусса Прайм уже открыт!" }, - { "LanguageCode": "pl", "Message": "Gauss Prime Access już dostępny!" }, - { "LanguageCode": "uk", "Message": "Ґаусс-прайм уже доступний!" }, - { "LanguageCode": "tr", "Message": "Gauss Prime Access şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "Gauss Prime Accessが登場!" }, - { "LanguageCode": "zh", "Message": "Gauss Prime Access 现已登场!" }, - { "LanguageCode": "ko", "Message": "가우스 프라임 액세스를 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "Gauss Prime Access 現已登場!" } - ], - "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-GaussPrimeAccessLaunchIGN", - "Date": { "$date": { "$numberLong": "1705507260000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/22f9399fc8ab62f336674db143f2de96_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65b95722f3765f6ab20fdd9a" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Cross Platform Save is live! " }, - { "LanguageCode": "fr", "Message": "La Sauvegarde Cross-Platform est disponible ! " }, - { "LanguageCode": "it", "Message": "Il Salvataggio Multipiattaforma è disponibile! " }, - { "LanguageCode": "de", "Message": "Cross-Save ist live! " }, - { "LanguageCode": "es", "Message": "¡La progresión entre plataformas ya está disponible! " }, - { "LanguageCode": "pt", "Message": "O Salvamento de Progresso Multiplataforma já está disponível! " }, - { "LanguageCode": "ru", "Message": "Кроссплатформенное сохранение уже доступно! " }, - { "LanguageCode": "pl", "Message": "Zapis międzyplatformowy jest już dostępny! " }, - { "LanguageCode": "uk", "Message": "Міжплатформне збереження вже доступно!" }, - { "LanguageCode": "tr", "Message": "Çapraz Platform Kayıt sizlerle! " }, - { "LanguageCode": "ja", "Message": "クロスプラットフォームセーブがフル実装!" }, - { "LanguageCode": "zh", "Message": "跨平台存档现已登场! " }, - { "LanguageCode": "ko", "Message": "크로스 플랫폼 세이브가 지금 개시되었습니다! " }, - { "LanguageCode": "tc", "Message": "跨平台存檔現已登場!" } - ], - "Prop": "https://www.warframe.com/news/cross-platform-save?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-01-CrossSaveLaunchIGN", - "Date": { "$date": { "$numberLong": "1706640480000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/e79fd6318211fe640154a7eb772a8b55.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65c6618a48bcb53a4b0b1cbf" }, - "Messages": [{ "LanguageCode": "en", "Message": "Have your Dojo featured on the Starchart!" }], - "Prop": "https://forums.warframe.com/topic/1382219-star-chart-dojo-showcase-winter-2024/", - "Date": { "$date": { "$numberLong": "1707499800000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65cb843bb92f7198e2038527" }, - "Messages": [{ "LanguageCode": "fr", "Message": "[PSA] Mise à jour des forums" }], - "Prop": "https://forums.warframe.com/topic/1384280-psa-mise-%C3%A0-jour-des-forums/", - "Date": { "$date": { "$numberLong": "1707836400000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65cba74b92df73a75a0cbca6" }, - "Messages": [{ "LanguageCode": "fr", "Message": "DESIGN de Primes : Gauss Prime" }], - "Prop": "https://forums.warframe.com/topic/1384299-design-de-primes-gauss-prime/", - "Date": { "$date": { "$numberLong": "1707845400000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/8db8eb6be83bc8abb3e317c42d451bed_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65d4d5936b94ad331a0eb589" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes de mise à jour : 35.1.0" }], - "Prop": "https://forums.warframe.com/topic/1384897-murmures-dans-les-murs-mise-%C3%A0-jour-3510/", - "Date": { "$date": { "$numberLong": "1708447020000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65d4e157b5f7e4adc408e258" }, - "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Actualización 35.1.0" }], - "Prop": "https://forums.warframe.com/topic/1384941-susurros-en-las-paredes-actualizaci%C3%B3n-3510/", - "Date": { "$date": { "$numberLong": "1708450020000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65d50a3156f5ee3b0c0a38b8" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Starter Weapon Pack Available Now" }, - { "LanguageCode": "fr", "Message": "Pack d'Armes de Départ disponible" }, - { "LanguageCode": "it", "Message": "Pacchetto Starter Weapon Disponibile Ora" }, - { "LanguageCode": "de", "Message": "Starter-Waffenpaket jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "El Paquete de Iniciación de Armas ya está disponible" }, - { "LanguageCode": "pt", "Message": "O Pacote Iniciante de Arma já está disponível" }, - { "LanguageCode": "ru", "Message": "Стартовый оружейный набор уже доступен" }, - { "LanguageCode": "pl", "Message": "Pakiet Startowy Broni już dostępny" }, - { "LanguageCode": "uk", "Message": "Набір зброї початківця вже доступний" }, - { "LanguageCode": "tr", "Message": "Başlangıç Silah Paketi Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "スターター武器パックが登場" }, - { "LanguageCode": "zh", "Message": "入门武器组合包现已推出" }, - { "LanguageCode": "ko", "Message": "스타터 무기 팩을 지금 만나보세요" } - ], - "Prop": "https://www.warframe.com/starter-weapon-pack?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-StarterWeaponPackLaunchIGN", - "Date": { "$date": { "$numberLong": "1708459620000" } }, - "ImageUrl": "https://www-static.warframe.com/images/starter-pack-ios/mastead-art-desktop.jpg", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65d512fca06b4d92fa080fa5" }, "Messages": [ @@ -282,29 +139,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65d7a2ee476834ce60013b92" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Mesa Statue Collection Available Now!" }, - { "LanguageCode": "fr", "Message": "Statue de Mesa de collection, disponible maintenant !" }, - { "LanguageCode": "it", "Message": "Collezione Statua di Mesa Disponibile Ora!" }, - { "LanguageCode": "de", "Message": "Mesa Statue-Kollektion ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡La colección Estatua de Mesa ya está disponible!" }, - { "LanguageCode": "pt", "Message": "A Coleção da Estátua da Mesa já está disponível!" }, - { "LanguageCode": "pl", "Message": "Kolekcjonerska Statuetka Mesy jest już dostępna!" }, - { "LanguageCode": "tr", "Message": "Mesa Heykel Koleksiyonu Şimdi Satışta!" }, - { "LanguageCode": "ja", "Message": "Mesa フィギュアコレクションが登場!" }, - { "LanguageCode": "zh", "Message": "Mesa 雕像组合包现已推出!" }, - { "LanguageCode": "ko", "Message": "메사 스태츄 컬렉션을 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "Mesa 雕像組合包現已登場!" } - ], - "Prop": "https://store.warframe.com/products/gunslinger-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-Merch-MesaStatueLaunch", - "Date": { "$date": { "$numberLong": "1708628280000" } }, - "EventStartDate": { "$date": { "$numberLong": "1708630200000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/e8bc0056ce8dc8275d0abf85c9836368_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65d8d23b76ca4ce4e30a0e6d" }, "Messages": [{ "LanguageCode": "uk", "Message": "Початкова збірка Warframe для iOS: що всередині " }], @@ -315,374 +149,973 @@ "MobileOnly": false }, { - "_id": { "$oid": "65d9033157765057180d1a4c" }, + "_id": { "$oid": "65f312ae6af83ed55400ab5a" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:クオリティー・オフ・ライフ改善点" }], + "Prop": "https://t.co/hlk87yT4jz", + "Date": { "$date": { "$numberLong": "1710428760000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65f312fdb7af0380021026aa" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Dev Workshop:Inarosのリワーク" }], + "Prop": "https://t.co/THmVcI4tOE", + "Date": { "$date": { "$numberLong": "1710428880000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_09/workshop.png.772fb176a33d0d3f25c55a741e0ebac9.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65f340dc675c2423a0061c07" }, "Messages": [ - { "LanguageCode": "en", "Message": "Warframe Returns to PAX East" }, - { "LanguageCode": "fr", "Message": "Warframe revient à la PAX East" }, - { "LanguageCode": "it", "Message": "Warframe Torna al PAX East" }, - { "LanguageCode": "de", "Message": "Warframe kehrt zur PAX East zurück" }, - { "LanguageCode": "es", "Message": "Warframe regresa al PAX East" }, - { "LanguageCode": "pt", "Message": "O Warframe retorna à PAX East" }, - { "LanguageCode": "ru", "Message": "Warframe возвращается на PAX East" }, - { "LanguageCode": "pl", "Message": "Warframe powraca na Pax East" }, - { "LanguageCode": "uk", "Message": "Warframe повертається на «PAX East»" }, - { "LanguageCode": "tr", "Message": "Warframe, PAX East'e Geri Dönüyor" }, - { "LanguageCode": "ja", "Message": "WarframeがPAX Eastに再参加" }, - { "LanguageCode": "zh", "Message": "《Warframe》重返 PAX East" }, - { "LanguageCode": "ko", "Message": "워프레임이 PAX East로 돌아왔습니다" }, - { "LanguageCode": "tc", "Message": "Warframe 重返 PAX East" } + { "LanguageCode": "en", "Message": "Titania Prime and Gara Prime are Back!" }, + { "LanguageCode": "fr", "Message": "Titania Prime et Gara Prime sont de retour !" }, + { "LanguageCode": "it", "Message": "Titania Prime e Gara Prime sono tornate!" }, + { "LanguageCode": "de", "Message": "Titania Prime und Gara Prime sind zurück!" }, + { "LanguageCode": "es", "Message": "¡Titania Prime y Gara Prime están de regreso!" }, + { "LanguageCode": "pt", "Message": "A Titania Prime e a Gara Prime estão de volta!" }, + { "LanguageCode": "ru", "Message": "Титания Прайм и Гара Прайм возвращаются!" }, + { "LanguageCode": "pl", "Message": "Titania Prime i Gara Prime powróciły!" }, + { "LanguageCode": "uk", "Message": "Титанія-прайм і Ґара-прайм повертаються!" }, + { "LanguageCode": "tr", "Message": "Titania Prime ve Gara Prime Geri Döndü!" }, + { "LanguageCode": "ja", "Message": "Titania PrimeとGara Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Titania Prime 和 Gara Prime 现已回归!" }, + { "LanguageCode": "ko", "Message": "티타니아 프라임과 가라 프라임이 돌아왔습니다!" }, + { "LanguageCode": "tc", "Message": "Titania Prime 以及 Gara Prime 回歸了!" } ], - "Prop": "https://www.warframe.com/news/tennovip-at-pax-east-2024?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-WarframeatPaxEastIGN", - "Date": { "$date": { "$numberLong": "1708720800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1709874000000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/5a0951db27bc80990ca7c6531b87415b_1600x900.png", + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-TitaniaGaraPrimeResurgenceIGN", + "Date": { "$date": { "$numberLong": "1710440580000" } }, + "ImageUrl": "https://www-static.warframe.com/images/prime-resurgence/rotations/titania-gara/masthead-keyart-desktop.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65d9059c63a3a89f39076ccf" }, + "_id": { "$oid": "65fccf2e7989de8da70e8389" }, "Messages": [ - { "LanguageCode": "en", "Message": "TennoCon 2024 Tickets on Sale Mar 28" }, - { "LanguageCode": "fr", "Message": "Tickets TennoCon 2024 en vente le 28 mars" }, - { "LanguageCode": "it", "Message": "Biglietti TennoCon 2024 - in vendita dal 28 Marzo" }, - { "LanguageCode": "de", "Message": "TennoCon 2024 Tickets sind ab dem 28. März verfügbar" }, - { "LanguageCode": "es", "Message": "Los boletos de la TennoCon 2024 saldrán a la venta el 28 de marzo" }, - { "LanguageCode": "pt", "Message": "Os ingressos para TennoCon 2024 estarão à venda no dia 28 de março" }, - { "LanguageCode": "ru", "Message": "Билеты на TennoCon 2024 поступят в продажу 28 марта" }, - { "LanguageCode": "pl", "Message": "Sprzedaż biletów TennoCon 2024 rozpoczyna się 28 marca" }, - { "LanguageCode": "uk", "Message": "Продаж фізичних квитків на Теннокон 2024 починається 28 березня" }, - { "LanguageCode": "tr", "Message": "TennoCon 2024 Biletleri 28 Mart'ta Satışa Sunuluyor" }, - { "LanguageCode": "ja", "Message": "TennoCon 2024チケットが3月29日から販売開始" }, - { "LanguageCode": "zh", "Message": "TennoCon 2024 门票将于美东夏令时间 3 月 28 日发售" }, - { "LanguageCode": "ko", "Message": "텐노콘 2024 티켓이 북미 시각 3월 28일부터 시작됩니다" }, - { "LanguageCode": "tc", "Message": "TennoCon 2024 門票將於美東夏令時間 2024 年 3 月 28 日開始發售" } + { "LanguageCode": "en", "Message": "Your Year in Review" }, + { "LanguageCode": "fr", "Message": "Bilan de votre année" }, + { "LanguageCode": "it", "Message": "Retrospettiva del Tuo Anno" }, + { "LanguageCode": "de", "Message": "Euer Jahresrückblick" }, + { "LanguageCode": "es", "Message": "Tu resumen del año" }, + { "LanguageCode": "pt", "Message": "Sua Retrospectiva" }, + { "LanguageCode": "ru", "Message": "Обзор вашего года" }, + { "LanguageCode": "pl", "Message": "Twój przegląd roku " }, + { "LanguageCode": "uk", "Message": "Ваш підсумок року" }, + { "LanguageCode": "tr", "Message": "Yılın Değerlendirmesi" }, + { "LanguageCode": "ja", "Message": "2023年振り返り" }, + { "LanguageCode": "zh", "Message": "你的年度回顾" }, + { "LanguageCode": "ko", "Message": "한 해를 돌아보면서" }, + { "LanguageCode": "tc", "Message": "你的年度回顧" } ], - "Prop": "https://www.warframe.com/tennocon?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-TennoConTicketSalesDateAnnounceIGN", - "Date": { "$date": { "$numberLong": "1708720920000" } }, - "EventEndDate": { "$date": { "$numberLong": "1711515600000" } }, - "ImageUrl": "https://www-static.warframe.com/images/tennocon/2024/WF_TennoCon_TicketSalesAnnounce_1920x1080.png", + "Prop": "https://www.warframe.com/news/your-year-in-review?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-YourYearInReviewEmailBlast", + "Date": { "$date": { "$numberLong": "1711063260000" } }, + "EventStartDate": { "$date": { "$numberLong": "1711062000000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/84312a878aeab3b3fff5d29b7e97e8c_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65d915b339ac8e5162092b7a" }, + "_id": { "$oid": "65fda306a420b3040308b24c" }, "Messages": [ - { "LanguageCode": "en", "Message": "Dante Unbound launches in March" }, - { "LanguageCode": "fr", "Message": "Dante Libéré arrive en mars" }, - { "LanguageCode": "it", "Message": "Dante Unbound verrà rilasciato in Marzo" }, - { "LanguageCode": "de", "Message": "\"Dante entfesselt\" startet im März" }, - { "LanguageCode": "es", "Message": "«Dante Liberado» se lanzará en marzo" }, - { "LanguageCode": "pt", "Message": "A atualização ''Dante Libertado'' será lançada em março" }, - { "LanguageCode": "ru", "Message": "«Данте на свободе» выйдет в марте" }, - { "LanguageCode": "pl", "Message": "Wyzwolenie Dantego nadchodzi w marcu" }, - { "LanguageCode": "uk", "Message": "«Данте вільний» виходить у березні" }, - { "LanguageCode": "tr", "Message": "Dante Unbound Mart ayında sizlerle buluşacak" }, - { "LanguageCode": "ja", "Message": "「解き放たれしDante」が3月に実装予定" }, - { "LanguageCode": "zh", "Message": "《Dante Unbound》——将在三月推出!" }, - { "LanguageCode": "ko", "Message": "해방된 단테가 3월에 출시됩니다" }, - { "LanguageCode": "tc", "Message": "《Dante Unbound》於三月推出!" } + { "LanguageCode": "en", "Message": "11 Year Anniversary Kicks Off March 22" }, + { "LanguageCode": "fr", "Message": "Le 11e anniversaire débute le 22 mars" }, + { "LanguageCode": "it", "Message": "L'11° Anniversario inizia il 22 Marzo" }, + { "LanguageCode": "de", "Message": "Das 11-jährige Jubiläum beginnt am 22. März" }, + { "LanguageCode": "es", "Message": "El 11.º aniversario comienza el 22 de marzo" }, + { "LanguageCode": "pt", "Message": "O 11º Aniversário Começará no dia 22 de março" }, + { "LanguageCode": "pl", "Message": "Obchody 11 Rocznicy zaczynają się 22 marca" }, + { "LanguageCode": "uk", "Message": "11-та річниця розпочинається 22 березня" }, + { "LanguageCode": "tr", "Message": "11. Yıldönümü 22 Mart'ta Başlıyor" }, + { "LanguageCode": "ja", "Message": "3月23日から11周年記念がスタート" }, + { "LanguageCode": "zh", "Message": "十一周年纪念于美东夏令时间 3 月 22 日拉开帷幕" }, + { "LanguageCode": "ko", "Message": "11주년 기념 행사가 북미 시각 3월 22일 시작됩니다" }, + { "LanguageCode": "tc", "Message": "11 週年紀念活動將於 3 月 22 日拉開序幕" } ], - "Prop": "https://www.warframe.com/news/dante-unbound-launches-in-march?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-DanteUnboundMonthAnnounceIGN", - "Date": { "$date": { "$numberLong": "1708723500000" } }, - "EventEndDate": { "$date": { "$numberLong": "1709874000000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/1cfd3147281580f7a1ce8ea6b7d1d1bf_1600x900.png", + "Prop": "https://www.warframe.com/anniversary?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-11YearanniversaryWebsiteLaunch", + "Date": { "$date": { "$numberLong": "1711120020000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/e21b32dbb8813e59ddb09a3aca8347f_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65d973eb3c31d7aae0074c09" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #177 - version FR" }], - "Prop": "https://forums.warframe.com/topic/1385560-r%C3%A9sum%C3%A9-devstream-177-version-fr/", - "Date": { "$date": { "$numberLong": "1708749660000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/image.png.5f48538c274864dcf14af9879a4a97e8.png", + "_id": { "$oid": "65fda51cd90254ff0d06f718" }, + "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: Warframe 11 Year Anniversary!" }], + "Prop": "https://forums.warframe.com/topic/1387661-11-year-anniversary-twitch-drops-campaign-starts-march-25/", + "Date": { "$date": { "$numberLong": "1711122000000" } }, + "EventStartDate": { "$date": { "$numberLong": "1711378800000" } }, + "EventEndDate": { "$date": { "$numberLong": "1713193200000" } }, + "EventLiveUrl": "https://www.twitch.tv/directory/category/warframe", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65fdacfc24c51cca2b0deb41" }, + "Messages": [ + { "LanguageCode": "en", "Message": "11 Year Anniversary Pre-Orders Begin Now" }, + { "LanguageCode": "fr", "Message": "Précommandes du 11e Anniversaire" }, + { "LanguageCode": "it", "Message": "I Preordini per l'11° Anniversario Iniziano Ora" }, + { "LanguageCode": "de", "Message": "Vorbestellungen zum 11-jährigen Jubiläum beginnen jetzt" }, + { "LanguageCode": "es", "Message": "¡Las reservas del 11.º aniversario comienzan ahora!" }, + { "LanguageCode": "pt", "Message": "As pré-encomendas do 11º Aniversário começam agora" }, + { "LanguageCode": "pl", "Message": "Przedsprzedaż z okazji 11 Rocznicy rozpoczyna się już teraz" }, + { "LanguageCode": "tr", "Message": "11. Yıl Dönümü Ön Siparişleri Şimdi Başlıyor" }, + { "LanguageCode": "ja", "Message": "11周年記念グッズの予約開始" }, + { "LanguageCode": "zh", "Message": "十一周年纪念预购现已开始" }, + { "LanguageCode": "ko", "Message": "11주년 기념품 예약 주문이 지금 시작됩니다" }, + { "LanguageCode": "tc", "Message": "11 週年紀念周邊商品組合包" } + ], + "Prop": "https://www.warframe.com/news/11-year-anniversary-merch-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-Merch-11YearAnniversaryLaunch", + "Date": { "$date": { "$numberLong": "1711123080000" } }, + "EventStartDate": { "$date": { "$numberLong": "1711123200000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/08ad3149ed1b0c74abcad826a15cfbb8_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "65ddee6aa7605f6dc402bf80" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Stream & Twitch Drop Schedule" }], - "Prop": "https://forums.warframe.com/topic/1385973-community-stream-schedule-feb-27-mar-1-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-CommunityStreams-26", - "Date": { "$date": { "$numberLong": "1709043240000" } }, - "EventEndDate": { "$date": { "$numberLong": "1709341200000" } }, + "_id": { "$oid": "65fe4652b242f5023d0324c1" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Devstream 178 - Résumé FR" }], + "Prop": "https://forums.warframe.com/topic/1388240-devstream-178-r%C3%A9sum%C3%A9-fr/", + "Date": { "$date": { "$numberLong": "1711162800000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/21912ddd5481659af48b081adfd72914_1600x900.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "65ff57f3f62f439a1e06285c" }, + "Messages": [{ "LanguageCode": "ja", "Message": "Twitch Drops 11周年キャンペーン" }], + "Prop": "https://bit.ly/3IP0pB9", + "Date": { "$date": { "$numberLong": "1711232880000" } }, + "EventStartDate": { "$date": { "$numberLong": "1711339200000" } }, + "EventEndDate": { "$date": { "$numberLong": "1713193200000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_03/11YearAnniversaryKeyart1920x1080.png.58321c59e1f5232a9ffa7355dc0a1061.png", "Priority": false, "MobileOnly": false, "Community": true, "HideEndDateModifier": true }, { - "_id": { "$oid": "65de03e477ddc027f3042e8b" }, - "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops: 27 Feb - 1 Mar" }], - "Prop": "https://forums.warframe.com/topic/1385984-programa-de-streams-y-twitch-drops-27-de-febrero-1-de-marzo/", - "Date": { "$date": { "$numberLong": "1709048580000" } }, + "_id": { "$oid": "66001605e45b8039db0de430" }, + "Messages": [{ "LanguageCode": "ja", "Message": "「2023年振り返り」メールについて" }], + "Prop": "https://bit.ly/3Vz8tO2", + "Date": { "$date": { "$numberLong": "1711281480000" } }, + "EventStartDate": { "$date": { "$numberLong": "1711252800000" } }, + "EventEndDate": { "$date": { "$numberLong": "1714449600000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/7dfcf700c7fb112fe10dab9b30f5b966_1600x900.png", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "65de1446344f138e6107dd46" }, - "Messages": [{ "LanguageCode": "ja", "Message": "2月27日~3月1日の配信スケジュール" }], - "Prop": "https://bit.ly/4bTV0WY", - "Date": { "$date": { "$numberLong": "1709052840000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_02/image.png.974b9963bc7803af7f996d5e5dfed6a7.png", + "_id": { "$oid": "660052341307a5f64705a023" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Campagne de Drops du 11e Annif' : 25 mars" }], + "Prop": "https://forums.warframe.com/topic/1388363-campagne-de-drops-du-11e-annif-d%C3%A9bute-le-25-mars/", + "Date": { "$date": { "$numberLong": "1711297020000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_03/image.png.9bbd049d8f225030aaf5e35145a81f78.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6601ac4c4bcccc24e403b9da" }, + "Messages": [{ "LanguageCode": "es", "Message": "Campaña de Twitch Drops - Aniversario de Warframe" }], + "Prop": "https://forums.warframe.com/topic/1388446-campa%C3%B1a-de-twitch-drops-para-aniversario-11-comienza-el-25-de-marzo/", + "Date": { "$date": { "$numberLong": "1711385400000" } }, + "EventEndDate": { "$date": { "$numberLong": "1713193140000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "65df8ed3379f639d7d0a8e89" }, - "Messages": [{ "LanguageCode": "en", "Message": "Whispers in the Walls: Hotfix 35.1.2" }], - "Prop": "https://www.warframe.com/updates/pc/35-1-2", - "Date": { "$date": { "$numberLong": "1709149860000" } }, + "_id": { "$oid": "66043b21af7d84281c0bff97" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Dante Unbound Available Now" }, + { "LanguageCode": "fr", "Message": "Dante Libéré - maintenant disponible" }, + { "LanguageCode": "it", "Message": "Dante Liberato Disponibile Ora" }, + { "LanguageCode": "de", "Message": "'Dante entfesselt' ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "«Dante Liberado» disponible ya" }, + { "LanguageCode": "pt", "Message": "A atualização ''Libertação de Dante'' já está disponível" }, + { "LanguageCode": "ru", "Message": "Обновление «Данте на свободе» уже доступно" }, + { "LanguageCode": "pl", "Message": "Wyzwolenie Dantego jest już dostępne" }, + { "LanguageCode": "uk", "Message": "«Данте вільний» уже доступний" }, + { "LanguageCode": "tr", "Message": "Dante Unbound Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "アップデート「解き放たれしDante」が登場" }, + { "LanguageCode": "zh", "Message": "《Dante 无枷》现已推出" }, + { "LanguageCode": "ko", "Message": "해방된 단테를 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "《DANTE・解放》現已登場" } + ], + "Prop": "https://www.warframe.com/news/dante-unbound-launches-in-march?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-DanteUnboundLaunch", + "Date": { "$date": { "$numberLong": "1711552800000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/eee035bec511a2e4204546c8636cf320.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "660457fb7f35b36e040a7502" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Dante Chronicles Pack Available Now" }, + { "LanguageCode": "fr", "Message": "Disponible : Pack Chroniques de Dante" }, + { "LanguageCode": "it", "Message": "Pacchetto Cronache di Dante - Disponibile Ora" }, + { "LanguageCode": "de", "Message": "Dantes Chroniken-Paket ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "Ya está disponible el Paquete Crónicas de Dante" }, + { "LanguageCode": "pt", "Message": "O Pacote Crônicas de Dante já está disponível" }, + { "LanguageCode": "ru", "Message": "Набор «Хроники Данте» уже доступен" }, + { "LanguageCode": "pl", "Message": "Pakiet Kronik Dantego już dostępny" }, + { "LanguageCode": "uk", "Message": "Набір «Літописи Данте» вже доступний" }, + { "LanguageCode": "tr", "Message": "Dante Chronicles Paketi Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "Dante Chronicles パックが登場" }, + { "LanguageCode": "zh", "Message": "Dante 编年史组合包现已推出" }, + { "LanguageCode": "ko", "Message": "단테의 연대기 팩을 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "Dante 史記組合包現已登場" } + ], + "Prop": "https://www.warframe.com/news/dante-chronicles-pack?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-DanteUnboundSupporterSKULaunch", + "Date": { "$date": { "$numberLong": "1711560600000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/454a0d8a48220cab003e6e7fd2909490_1600x900.png", + "Priority": false, + "MobileOnly": false, + "GameOnly": true + }, + { + "_id": { "$oid": "6604737626861abb100fe5aa" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Tennogen Unbound" }, + { "LanguageCode": "fr", "Message": "TennoGen Libéré" }, + { "LanguageCode": "it", "Message": "TennoGen Unbound" }, + { "LanguageCode": "de", "Message": "TennoGen entfesselt" }, + { "LanguageCode": "es", "Message": "TennoGen Liberado" }, + { "LanguageCode": "pt", "Message": "Libertação do TennoGen" }, + { "LanguageCode": "ru", "Message": "ТэнноГен Свободный" }, + { "LanguageCode": "pl", "Message": "Wyzwolenie TennoGen" }, + { "LanguageCode": "uk", "Message": "ТенноҐен вільний" }, + { "LanguageCode": "tr", "Message": "Tennogen Unbound" }, + { "LanguageCode": "ja", "Message": "TennoGen Unbound" }, + { "LanguageCode": "zh", "Message": "Tennogen 无枷" }, + { "LanguageCode": "ko", "Message": "텐노젠 언바운드" }, + { "LanguageCode": "tc", "Message": "TennoGen 解放" } + ], + "Prop": "https://www.warframe.com/news/tennogen-unbound?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-03-TennoGen", + "Date": { "$date": { "$numberLong": "1711563180000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/7a3e896d4efb5a9d66c98bff869f8d1f_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "66048885355ac23b8103f986" }, + "Messages": [{ "LanguageCode": "es", "Message": "Actualización 35.5: Dante Liberado" }], + "Prop": "https://forums.warframe.com/topic/1388986-actualizaci%C3%B3n-355-dante-liberado/", + "Date": { "$date": { "$numberLong": "1711572960000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "6604e621d161f73f860179d6" }, + "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 35.5: 해방된 단테" }], + "Prop": "", + "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1389274-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-355-%ED%95%B4%EB%B0%A9%EB%90%9C-%EB%8B%A8%ED%85%8C/" }], + "Date": { "$date": { "$numberLong": "1711597020000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "66058aba86be2c1a7906873c" }, + "Messages": [ + { "LanguageCode": "en", "Message": "TennoCon 2024 Digital Pack Live!" }, + { "LanguageCode": "fr", "Message": "Pack Digital TennoCon 2024" }, + { "LanguageCode": "it", "Message": "Pacchetto Digitale TennoCon 2024" }, + { "LanguageCode": "de", "Message": "TennoCon 2024 Digital-Paket" }, + { "LanguageCode": "es", "Message": "Paquete Digital de TennoCon 2024" }, + { "LanguageCode": "pt", "Message": "Pacote Digital da TennoCon 2024" }, + { "LanguageCode": "ru", "Message": "Цифровой набор «TennoCon-2024»" }, + { "LanguageCode": "pl", "Message": "Pakiet Cyfrowy TennoCon 2024" }, + { "LanguageCode": "uk", "Message": "Цифровий набір «Теннокон 2024»" }, + { "LanguageCode": "tr", "Message": "TennoCon 2024 Dijital Paketi" }, + { "LanguageCode": "ja", "Message": "TennoCon 2024 デジタルパック" }, + { "LanguageCode": "zh", "Message": "TennoCon 2024 虚拟礼包" }, + { "LanguageCode": "ko", "Message": "텐노콘 2024 디지털 팩" }, + { "LanguageCode": "tc", "Message": "TennoCon 2024 數位包" } + ], + "Prop": "https://www.warframe.com/tennocon#ticketsorpacks?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-03-TennoConDigitalPackLiveIGN", + "Date": { "$date": { "$numberLong": "1711639020000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/3617190333f59f4efc2ec651ab2e4d0_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6605eca3c06de94ae801897b" }, + "Messages": [{ "LanguageCode": "es", "Message": "Dante Liberado: Revisión 35.5.1 + Revisión 35.5.2" }], + "Prop": "https://forums.warframe.com/topic/1389713-dante-liberado-revisi%C3%B3n-3551-revisi%C3%B3n-3552/", + "Date": { "$date": { "$numberLong": "1711664220000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "660aaceb9b7df0dc960f3db8" }, + "Messages": [{ "LanguageCode": "uk", "Message": " ОНОВЛЕННЯ 35.5: ДАНТЕ ВІЛЬНИЙ" }], + "Prop": "https://forums.warframe.com/topic/1390381-%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-355-%D0%B4%D0%B0%D0%BD%D1%82%D0%B5-%D0%B2%D1%96%D0%BB%D1%8C%D0%BD%D0%B8%D0%B9/?ct=1711975580", + "Date": { "$date": { "$numberLong": "1711975620000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/02ba125adc6a6ebb52f5f7adf19477a8.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "660d66e3dc66267b4a07bbe8" }, + "Messages": [{ "LanguageCode": "fr", "Message": "La Sentinelle : Actus du 1er avril" }], + "Prop": "https://www.warframe.com/fr/news/the-sentinel-04012024", + "Date": { "$date": { "$numberLong": "1712154300000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/e28cfc4c0871e2591d3743985decc7a1_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "660da1075e10c51bb8084bab" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Leap of the Lotus 2024" }, + { "LanguageCode": "fr", "Message": "Saut du Lotus 2024" }, + { "LanguageCode": "it", "Message": "Leap of the Lotus 2024" }, + { "LanguageCode": "de", "Message": "Sprung der Lotus 2024" }, + { "LanguageCode": "es", "Message": "Salto de Lotus 2024" }, + { "LanguageCode": "pt", "Message": "Salto da Lótus de 2024" }, + { "LanguageCode": "ru", "Message": "Прыжок Лотос 2024" }, + { "LanguageCode": "pl", "Message": "Wielkanocne Dary od Lotus 2024" }, + { "LanguageCode": "uk", "Message": "Стрибок Лотос 2024" }, + { "LanguageCode": "tr", "Message": "Lotus'un Sıçrayışı 2024" }, + { "LanguageCode": "ja", "Message": "「Leap of the Lotus」2024" }, + { "LanguageCode": "zh", "Message": "Lotus 的跳跃 2024" }, + { "LanguageCode": "ko", "Message": "로터스의 토끼뜀 2024" }, + { "LanguageCode": "tc", "Message": "Lotus 春意之躍 2024" } + ], + "Prop": "https://www.warframe.com/news/leap-of-the-lotus-2024?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-LeapofLotusEventLaunch", + "Date": { "$date": { "$numberLong": "1712167800000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/17303cc9014539b65b6700324789d43_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "660daef6e12a72d25c0d61d3" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Lotus’ Spring Basket Blitz Contest" }, + { "LanguageCode": "fr", "Message": "Concours de Paniers de Pâques du Lotus" }, + { "LanguageCode": "it", "Message": "Concorso Lotus’ Spring Basket Blitz" }, + { "LanguageCode": "de", "Message": "Lotus' Frühlingskorb Blitz-Wettbewerb" }, + { "LanguageCode": "es", "Message": "Concurso de Canastas de Pascua de Lotus" }, + { "LanguageCode": "pt", "Message": "Concurso de Cestas de Páscoa da Lótus" }, + { "LanguageCode": "ru", "Message": "Блиц-конкурс «Весенняя корзина Лотос — 2024»" }, + { "LanguageCode": "pl", "Message": "Konkurs Lotus na Kosz Wielkanocny" }, + { "LanguageCode": "uk", "Message": "Бліцконкурс «Весняний кошик Лотос»" }, + { "LanguageCode": "tr", "Message": "Lotus'un Bahar Sepeti Yarışması" }, + { "LanguageCode": "ja", "Message": "Lotusの春のバスケットブリッツコンテスト" }, + { "LanguageCode": "zh", "Message": "Lotus 的春季篮子突击大赛" }, + { "LanguageCode": "ko", "Message": "로터스의 봄맞이 부활절 바구니 만들기 콘테스트" }, + { "LanguageCode": "tc", "Message": "Lotus 春意滿籃閃擊比賽" } + ], + "Prop": "https://www.warframe.com/news/lotus-spring-basket-blitz-contest?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-LeapofLotusEventContest", + "Date": { "$date": { "$numberLong": "1712172600000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/5030f198b9220940d2dbb8b3c5a4ccf6_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "660eef7eb0f80ef6530828df" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Dante Libéré : 35.5.3 " }], + "Prop": "https://forums.warframe.com/topic/1391576-dante-lib%C3%A9r%C3%A9-correctif-3553/", + "Date": { "$date": { "$numberLong": "1712254740000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/0c3041fbf17ec6021b56139c19873fe4.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "661018d44f82dee22908d2bf" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Corrections LoS de Tragédie et prochaines étapes " }], + "Prop": "https://forums.warframe.com/topic/1392064-corrections-los-de-trag%C3%A9die-et-prochaines-%C3%A9tapes/", + "Date": { "$date": { "$numberLong": "1712330940000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "66103bfa13017daa4c0122e6" }, + "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Hotfix 35.5.4" }], + "Prop": "https://www.warframe.com/updates/pc/35-5-4", + "Date": { "$date": { "$numberLong": "1712339940000" } }, "Priority": true, "MobileOnly": false }, { - "_id": { "$oid": "65dfa44dc27a3db4a4006953" }, - "Messages": [{ "LanguageCode": "es", "Message": "Susurros en las Paredes: Revisión 35.1.2" }], - "Prop": "https://forums.warframe.com/topic/1386163-susurros-en-las-paredes-revisi%C3%B3n-3512/", - "Date": { "$date": { "$numberLong": "1709155320000" } }, + "_id": { "$oid": "66104b829fe27f88fb019d53" }, + "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Our Plans for Next Week!" }], + "Prop": "https://forums.warframe.com/topic/1392156-dante-unbound-our-plans-for-next-week-3555/", + "Date": { "$date": { "$numberLong": "1712343840000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "66105bccf60de68fa30647a9" }, + "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Hotfix 35.5.5" }], + "Prop": "https://www.warframe.com/updates/pc/35-5-5", + "Date": { "$date": { "$numberLong": "1712347980000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "66106faeb6a0a88c240d2357" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Dante Libéré : 35.5.4 / .5 et plans " }], + "Prop": "https://forums.warframe.com/topic/1392236-dante-lib%C3%A9r%C3%A9-correctif-3554-et-plans/", + "Date": { "$date": { "$numberLong": "1712353140000" } }, + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "6610760aeee2c8c8b4109ca0" }, + "Messages": [{ "LanguageCode": "es", "Message": "Dante Liberado: Revisión 35.5.3" }], + "Prop": "https://forums.warframe.com/topic/1392265-dante-liberado-revisi%C3%B3n-3553/", + "Date": { "$date": { "$numberLong": "1712354760000" } }, "Priority": false, "MobileOnly": false, "Community": true } ], - "Goals": [], - "Alerts": [], + "Goals": [ + { + "_id": { "$oid": "660f068b9850fe61587c94e0" }, + "Activation": { "$date": { "$numberLong": "1712329200000" } }, + "Expiry": { "$date": { "$numberLong": "1712934000000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "ClampNodeScores": true, + "Node": "EventNode18", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2022J", + "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", + "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", + "Tag": "Anniversary2022TacAlert", + "Reward": { "items": ["/Lotus/StoreItems/Upgrades/Skins/Rhino/RhinoDexSkin"] } + }, + { + "_id": { "$oid": "660f06939850fe61587c94e2" }, + "Activation": { "$date": { "$numberLong": "1712329200000" } }, + "Expiry": { "$date": { "$numberLong": "1712934000000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "ClampNodeScores": true, + "Node": "EventNode26", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2020F", + "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", + "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", + "Tag": "Anniversary2020TacAlert", + "Reward": { "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/ExcaliburDexBobbleHead"] } + }, + { + "_id": { "$oid": "660f069c9850fe61587c94e4" }, + "Activation": { "$date": { "$numberLong": "1712329200000" } }, + "Expiry": { "$date": { "$numberLong": "1712934000000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "ClampNodeScores": true, + "Node": "EventNode19", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2024ChallengeModeA", + "Desc": "/Lotus/Language/Events/Anniversary2024ChallengeMode", + "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", + "Tag": "Anniversary2024TacAlertCMA", + "Reward": { "items": ["/Lotus/StoreItems/Types/Items/MiscItems/WeaponUtilityUnlocker"] } + } + ], + "Alerts": [ + { + "_id": { "$oid": "65f33278563b9aaf49039b4e" }, + "Activation": { "$date": { "$numberLong": "1712167200000" } }, + "Expiry": { "$date": { "$numberLong": "1712599200000" } }, + "MissionInfo": { + "location": "SolNode27", + "missionType": "MT_EXTERMINATION", + "faction": "FC_GRINEER", + "difficulty": 3, + "missionReward": { "credits": 50000, "items": ["/Lotus/StoreItems/Types/Recipes/Components/OrokinCatalystBlueprint"] }, + "levelOverride": "/Lotus/Levels/Proc/Grineer/GrineerForestExterminate", + "enemySpec": "/Lotus/Types/Game/EnemySpecs/ForestGrineerExterminate", + "minEnemyLevel": 30, + "maxEnemyLevel": 35 + } + } + ], "Sorties": [ { - "_id": { "$oid": "65e0b48e0c6a6711e9f8483b" }, - "Activation": { "$date": { "$numberLong": "1709226000000" } }, - "Expiry": { "$date": { "$numberLong": "1709312400000" } }, + "_id": { "$oid": "66101c7dc0e79f4c604c1b2b" }, + "Activation": { "$date": { "$numberLong": "1712332800000" } }, + "Expiry": { "$date": { "$numberLong": "1712419200000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 49322, - "Boss": "SORTIE_BOSS_AMBULAS", + "Seed": 55193, + "Boss": "SORTIE_BOSS_VOR", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_SHIELDS", "node": "SolNode49", "tileset": "CorpusShipTileset" }, - { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode97", "tileset": "CorpusGasCityTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode51", "tileset": "CorpusOutpostTileset" } + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_SHOTGUN_ONLY", "node": "SolNode224", "tileset": "GrineerGalleonTileset" }, + { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode41", "tileset": "GrineerSettlementTileset" }, + { "missionType": "MT_ARTIFACT", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode744", "tileset": "GrineerFortressTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "65dbd0fd399617ab4d3dcab9" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, + "_id": { "$oid": "6609f57d42f3b8391aaabf07" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 96627, - "Boss": "SORTIE_BOSS_AMAR", + "Seed": 20281, + "Boss": "SORTIE_BOSS_BOREAL", "Missions": [ - { "missionType": "MT_INTEL", "node": "SolNode113" }, - { "missionType": "MT_ARTIFACT", "node": "SolNode30" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } + { "missionType": "MT_INTEL", "node": "SolNode39" }, + { "missionType": "MT_EXCAVATE", "node": "SolNode79" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "65e0b7d545104fda54e15fb1" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc5c42b073e6545b7b8" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "ArbitersSyndicate", - "Seed": 49322, - "Nodes": ["SolNode15", "SolNode128", "SolNode88", "SolNode709", "SolNode72", "SettlementNode2", "SolNode212"] + "Seed": 55193, + "Nodes": ["SolNode89", "SolNode113", "SolNode109", "SolNode204", "SolNode162", "SolNode403", "SolNode177"] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fb2" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 93695, - "Nodes": ["SolNode36", "SolNode89", "SolNode126", "SolNode67", "SolNode76", "SolNode220", "SolNode122"] - }, - { - "_id": { "$oid": "65e0b7d545104fda54e15fb3" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 90615, - "Nodes": [] - }, - { - "_id": { "$oid": "65e0b7d545104fda54e15fb4" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7bb" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "EventSyndicate", - "Seed": 36542, + "Seed": 60958, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fb5" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7ba" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 23185, + "Nodes": [] + }, + { + "_id": { "$oid": "66101fc6c42b073e6545b7b9" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 78193, + "Nodes": ["SolNode11", "SolNode63", "SolNode61", "SettlementNode11", "SolNode195", "SolNode56", "SolNode205"] + }, + { + "_id": { "$oid": "66101fc6c42b073e6545b7bc" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "KahlSyndicate", - "Seed": 97566, + "Seed": 88211, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fb6" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7bd" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "NewLokaSyndicate", - "Seed": 82638, - "Nodes": ["SolNode109", "SolNode46", "SolNode141", "SolNode203", "SolNode167", "SolNode224", "SolNode93"] + "Seed": 73155, + "Nodes": ["SolNode66", "SolNode79", "SolNode710", "SolNode226", "SolNode64", "SolNode73", "SolNode81"] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fb7" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7be" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "QuillsSyndicate", - "Seed": 97614, + "Seed": 19535, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fb8" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "PerrinSyndicate", - "Seed": 29189, - "Nodes": ["SolNode226", "SolNode113", "SolNode132", "SolNode79", "SolNode102", "SolNode166", "SolNode1"] - }, - { - "_id": { "$oid": "65e0b7d545104fda54e15fba" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7c1" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 92611, + "Seed": 93827, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fbb" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 96279, - "Nodes": [] - }, - { - "_id": { "$oid": "65e0b7d545104fda54e15fb9" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7c0" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 8362, + "Seed": 88718, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fbc" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7bf" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "PerrinSyndicate", + "Seed": 15179, + "Nodes": ["SolNode46", "SolNode2", "SolNode214", "SettlementNode15", "SolNode88", "SolNode26", "SolNode6"] + }, + { + "_id": { "$oid": "66101fc6c42b073e6545b7c3" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 13502, + "Seed": 61066, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fbf" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 32300, + "_id": { "$oid": "66101fc6c42b073e6545b7c2" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 7552, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fbd" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7c4" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 1378, + "Seed": 92948, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fbe" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7c5" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 35524, + "Seed": 38078, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fc0" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 37691, - "Nodes": [] - }, - { - "_id": { "$oid": "65e0b7d545104fda54e15fc2" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7c9" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 6421, + "Seed": 96731, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fc1" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 82871, - "Nodes": [] - }, - { - "_id": { "$oid": "65e0b7d545104fda54e15fc3" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7ca" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 43217, + "Seed": 23831, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fc4" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7cb" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "RadioLegionSyndicate", - "Seed": 79986, + "Seed": 73435, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d545104fda54e15fc5" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 77533, - "Nodes": ["SolNode85", "SolNode30", "SolNode707", "SolNode140", "SolNode177", "SolNode401", "SettlementNode12"] - }, - { - "_id": { "$oid": "65e0b7d645104fda54e15fc6" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 46290, + "_id": { "$oid": "66101fc6c42b073e6545b7c7" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 89061, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d645104fda54e15fc7" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7c6" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 83181, + "Nodes": [] + }, + { + "_id": { "$oid": "66101fc6c42b073e6545b7c8" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 79483, + "Nodes": [] + }, + { + "_id": { "$oid": "66101fc6c42b073e6545b7ce" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, "Tag": "VoxSyndicate", - "Seed": 63178, + "Seed": 77588, "Nodes": [] }, { - "_id": { "$oid": "65e0b7d645104fda54e15fc8" }, - "Activation": { "$date": { "$numberLong": "1709225941718" } }, - "Expiry": { "$date": { "$numberLong": "1709312340000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 41152, - "Nodes": ["SolNode75", "SolNode66", "SolNode139", "SolNode25", "SolNode48", "SolNode171", "SolNode407"] + "_id": { "$oid": "66101fc6c42b073e6545b7cc" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 43384, + "Nodes": ["SolNode101", "SolNode39", "SolNode132", "SettlementNode3", "SolNode412", "SolNode223", "SolNode220"] }, { - "_id": { "$oid": "65e1bdaf0000000000000002" }, - "Activation": { "$date": { "$numberLong": "1709292975280" } }, - "Expiry": { "$date": { "$numberLong": "1709301974154" } }, + "_id": { "$oid": "66101fc6c42b073e6545b7cd" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 31508, + "Nodes": [] + }, + { + "_id": { "$oid": "66101fc6c42b073e6545b7cf" }, + "Activation": { "$date": { "$numberLong": "1712332741985" } }, + "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 73952, + "Nodes": ["SolNode85", "SolNode103", "SolNode706", "SolNode22", "SolNode17", "SolNode4", "SolNode408"] + }, + { + "_id": { "$oid": "661140390000000000000002" }, + "Activation": { "$date": { "$numberLong": "1712406585962" } }, + "Expiry": { "$date": { "$numberLong": "1712415584835" } }, "Tag": "EntratiSyndicate", - "Seed": 9507, + "Seed": 53873, "Nodes": [], "Jobs": [ { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [5, 5, 5] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [11, 11, 11] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", + "masteryReq": 5, + "minEnemyLevel": 25, + "maxEnemyLevel": 30, + "endless": true, + "xpAmounts": [14, 14, 14] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [16, 16, 16, 25] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [20, 20, 20, 20, 40] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [25, 25, 25, 25, 50] + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", + "masteryReq": 5, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [2, 2, 2, 4], + "locationTag": "ChamberB", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [4, 4, 4, 5], + "locationTag": "ChamberA", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", + "masteryReq": 5, + "minEnemyLevel": 50, + "maxEnemyLevel": 60, + "xpAmounts": [5, 5, 5, 7], + "locationTag": "ChamberC", + "isVault": true + } + ] + }, + { + "_id": { "$oid": "661140390000000000000004" }, + "Activation": { "$date": { "$numberLong": "1712406585962" } }, + "Expiry": { "$date": { "$numberLong": "1712415584835" } }, + "Tag": "EntratiLabSyndicate", + "Seed": 53874, + "Nodes": [] + }, + { + "_id": { "$oid": "661140390000000000000008" }, + "Activation": { "$date": { "$numberLong": "1712406585962" } }, + "Expiry": { "$date": { "$numberLong": "1712415584835" } }, + "Tag": "CetusSyndicate", + "Seed": 53873, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [340, 340, 340] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [590, 590, 590] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [570, 570, 570, 830] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [560, 560, 560, 560, 1100] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [740, 740, 740, 740, 1460] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [780, 780, 780, 780, 1530] + } + ] + }, + { + "_id": { "$oid": "661140390000000000000028" }, + "Activation": { "$date": { "$numberLong": "1712406585962" } }, + "Expiry": { "$date": { "$numberLong": "1712415584835" } }, + "Tag": "ZarimanSyndicate", + "Seed": 53874, + "Nodes": [] + }, + { + "_id": { "$oid": "661140390000000000000024" }, + "Activation": { "$date": { "$numberLong": "1712406585962" } }, + "Expiry": { "$date": { "$numberLong": "1712415584835" } }, + "Tag": "SolarisSyndicate", + "Seed": 53873, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [380, 380, 380] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [660, 660, 660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [600, 600, 600, 880] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [620, 620, 620, 620, 1210] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [680, 680, 680, 680, 1340] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [830, 830, 830, 830, 1630] + } + ] + }, + { + "_id": { "$oid": "661163600000000000000002" }, + "Activation": { "$date": { "$numberLong": "1712415584836" } }, + "Expiry": { "$date": { "$numberLong": "1712424583710" } }, + "Tag": "EntratiSyndicate", + "Seed": 35010, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, @@ -695,36 +1128,35 @@ "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [8, 8, 8] + "xpAmounts": [10, 10, 10] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", "masteryReq": 5, "minEnemyLevel": 25, "maxEnemyLevel": 30, "endless": true, - "bonusXpMultiplier": 0.15000001, "xpAmounts": [14, 14, 14] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, "xpAmounts": [16, 16, 16, 25] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 39] + "xpAmounts": [21, 21, 21, 21, 40] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -732,7 +1164,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -741,7 +1173,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -750,7 +1182,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -761,110 +1193,36 @@ ] }, { - "_id": { "$oid": "65e1bdaf0000000000000004" }, - "Activation": { "$date": { "$numberLong": "1709292975280" } }, - "Expiry": { "$date": { "$numberLong": "1709301974154" } }, - "Tag": "EntratiLabSyndicate", - "Seed": 9508, - "Nodes": [] - }, - { - "_id": { "$oid": "65e1bdaf0000000000000024" }, - "Activation": { "$date": { "$numberLong": "1709292975280" } }, - "Expiry": { "$date": { "$numberLong": "1709301974154" } }, - "Tag": "SolarisSyndicate", - "Seed": 9507, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobAmbush", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [340, 340, 340] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [600, 600, 600] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [640, 640, 640, 940] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [600, 600, 600, 600, 1170] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [760, 760, 760, 760, 1490] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [770, 770, 770, 770, 1520] - } - ] - }, - { - "_id": { "$oid": "65e1bdaf0000000000000008" }, - "Activation": { "$date": { "$numberLong": "1709292975280" } }, - "Expiry": { "$date": { "$numberLong": "1709301974154" } }, + "_id": { "$oid": "661163600000000000000008" }, + "Activation": { "$date": { "$numberLong": "1712415584836" } }, + "Expiry": { "$date": { "$numberLong": "1712424583710" } }, "Tag": "CetusSyndicate", - "Seed": 9507, + "Seed": 35010, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [450, 450, 450] + "xpAmounts": [360, 360, 360] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [680, 680, 680] + "xpAmounts": [690, 690, 690] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 900] + "xpAmounts": [600, 600, 600, 890] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", @@ -872,18 +1230,18 @@ "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 550, 1080] + "xpAmounts": [590, 590, 590, 590, 1160] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [710, 710, 710, 710, 1400] + "xpAmounts": [720, 720, 720, 720, 1420] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -891,234 +1249,329 @@ "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1600] + "xpAmounts": [770, 770, 770, 770, 1510] } ] }, { - "_id": { "$oid": "65e1bdaf0000000000000028" }, - "Activation": { "$date": { "$numberLong": "1709292975280" } }, - "Expiry": { "$date": { "$numberLong": "1709301974154" } }, + "_id": { "$oid": "661163600000000000000004" }, + "Activation": { "$date": { "$numberLong": "1712415584836" } }, + "Expiry": { "$date": { "$numberLong": "1712424583710" } }, + "Tag": "EntratiLabSyndicate", + "Seed": 35011, + "Nodes": [] + }, + { + "_id": { "$oid": "661163600000000000000024" }, + "Activation": { "$date": { "$numberLong": "1712415584836" } }, + "Expiry": { "$date": { "$numberLong": "1712424583710" } }, + "Tag": "SolarisSyndicate", + "Seed": 35010, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [490, 490, 490] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [700, 700, 700] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [650, 650, 650, 960] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [570, 570, 570, 570, 1110] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [760, 760, 760, 760, 1490] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [800, 800, 800, 800, 1570] + } + ] + }, + { + "_id": { "$oid": "661163600000000000000028" }, + "Activation": { "$date": { "$numberLong": "1712415584836" } }, + "Expiry": { "$date": { "$numberLong": "1712424583710" } }, "Tag": "ZarimanSyndicate", - "Seed": 9508, + "Seed": 35011, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "65e1c61131a2df9c2a9fa129" }, - "Region": 19, - "Seed": 69268, - "Activation": { "$date": { "$numberLong": "1709295121625" } }, - "Expiry": { "$date": { "$numberLong": "1709301963341" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "65e1c61131a2df9c2a9fa12a" }, - "Region": 19, - "Seed": 60639, - "Activation": { "$date": { "$numberLong": "1709295121625" } }, - "Expiry": { "$date": { "$numberLong": "1709301245538" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "65e1c689b67931d0db1b3e7c" }, - "Region": 2, - "Seed": 51467, - "Activation": { "$date": { "$numberLong": "1709295241956" } }, - "Expiry": { "$date": { "$numberLong": "1709300816725" } }, - "Node": "SolNode2", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "65e1c689b67931d0db1b3e7d" }, - "Region": 4, - "Seed": 26891, - "Activation": { "$date": { "$numberLong": "1709295241956" } }, - "Expiry": { "$date": { "$numberLong": "1709300017077" } }, - "Node": "SolNode46", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "65e1c8e23ad5e1ebfc158b6e" }, - "Region": 16, - "Seed": 9108, - "Activation": { "$date": { "$numberLong": "1709295842003" } }, - "Expiry": { "$date": { "$numberLong": "1709302522078" } }, - "Node": "SettlementNode14", - "MissionType": "MT_INTEL", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "65e1c8e23ad5e1ebfc158b6f" }, - "Region": 5, - "Seed": 37206, - "Activation": { "$date": { "$numberLong": "1709295842003" } }, - "Expiry": { "$date": { "$numberLong": "1709300222307" } }, - "Node": "SolNode100", + "_id": { "$oid": "661149e569481c8e401bd673" }, + "Region": 15, + "Seed": 1152, + "Activation": { "$date": { "$numberLong": "1712409061851" } }, + "Expiry": { "$date": { "$numberLong": "1712415244418" } }, + "Node": "SolNode409", "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT2" + "Modifier": "VoidT4", + "Hard": true }, { - "_id": { "$oid": "65e1ca85b8319ef71adc9306" }, - "Region": 4, - "Seed": 48669, - "Activation": { "$date": { "$numberLong": "1709296261249" } }, - "Expiry": { "$date": { "$numberLong": "1709303440888" } }, - "Node": "SolNode113", - "MissionType": "MT_SABOTAGE", + "_id": { "$oid": "661149e569481c8e401bd675" }, + "Region": 9, + "Seed": 42534, + "Activation": { "$date": { "$numberLong": "1712409061851" } }, + "Expiry": { "$date": { "$numberLong": "1712416022250" } }, + "Node": "SolNode81", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "66114c01b36ef6d439deca47" }, + "Region": 17, + "Seed": 64608, + "Activation": { "$date": { "$numberLong": "1712409601370" } }, + "Expiry": { "$date": { "$numberLong": "1712416319778" } }, + "Node": "SolNode718", + "MissionType": "MT_ALCHEMY", + "Modifier": "VoidT6" + }, + { + "_id": { "$oid": "66114c01b36ef6d439deca48" }, + "Region": 18, + "Seed": 7111, + "Activation": { "$date": { "$numberLong": "1712409601370" } }, + "Expiry": { "$date": { "$numberLong": "1712415410386" } }, + "Node": "SolNode309", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT6" + }, + { + "_id": { "$oid": "66114e962a8de1522df675d9" }, + "Region": 7, + "Seed": 57939, + "Activation": { "$date": { "$numberLong": "1712410262119" } }, + "Expiry": { "$date": { "$numberLong": "1712417320012" } }, + "Node": "SolNode122", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "66114e962a8de1522df675da" }, + "Region": 13, + "Seed": 49926, + "Activation": { "$date": { "$numberLong": "1712410262119" } }, + "Expiry": { "$date": { "$numberLong": "1712415452182" } }, + "Node": "SolNode212", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "66114e962a8de1522df675dd" }, + "Region": 2, + "Seed": 32097, + "Activation": { "$date": { "$numberLong": "1712410262119" } }, + "Expiry": { "$date": { "$numberLong": "1712416135732" } }, + "Node": "SolNode66", + "MissionType": "MT_INTEL", "Modifier": "VoidT1" }, { - "_id": { "$oid": "65e1cac1778f27adc05b0f05" }, - "Region": 12, - "Seed": 43347, - "Activation": { "$date": { "$numberLong": "1709296321396" } }, - "Expiry": { "$date": { "$numberLong": "1709303109124" } }, - "Node": "SolNode177", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65e1cac1778f27adc05b0f06" }, - "Region": 11, - "Seed": 58652, - "Activation": { "$date": { "$numberLong": "1709296321396" } }, - "Expiry": { "$date": { "$numberLong": "1709300809804" } }, - "Node": "SolNode153", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "65e1d115ebe6a3009dfd0169" }, - "Region": 12, - "Seed": 93497, - "Activation": { "$date": { "$numberLong": "1709297941239" } }, - "Expiry": { "$date": { "$numberLong": "1709303514456" } }, - "Node": "SolNode184", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "65e1d115ebe6a3009dfd016a" }, - "Region": 15, - "Seed": 2666, - "Activation": { "$date": { "$numberLong": "1709297941239" } }, - "Expiry": { "$date": { "$numberLong": "1709302760737" } }, - "Node": "SolNode410", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "65e1d115ebe6a3009dfd016b" }, - "Region": 9, - "Seed": 97842, - "Activation": { "$date": { "$numberLong": "1709297941239" } }, - "Expiry": { "$date": { "$numberLong": "1709302477724" } }, - "Node": "SolNode102", - "MissionType": "MT_INTEL", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "65e1d18d85adc0212ca34c2e" }, - "Region": 15, - "Seed": 44417, - "Activation": { "$date": { "$numberLong": "1709298061630" } }, - "Expiry": { "$date": { "$numberLong": "1709304153727" } }, - "Node": "SolNode401", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "65e1d18d85adc0212ca34c2f" }, - "Region": 7, - "Seed": 53996, - "Activation": { "$date": { "$numberLong": "1709298061630" } }, - "Expiry": { "$date": { "$numberLong": "1709302328144" } }, - "Node": "SolNode64", + "_id": { "$oid": "66114e962a8de1522df675dc" }, + "Region": 3, + "Seed": 87537, + "Activation": { "$date": { "$numberLong": "1712410262119" } }, + "Expiry": { "$date": { "$numberLong": "1712415090262" } }, + "Node": "SolNode85", "MissionType": "MT_TERRITORY", - "Modifier": "VoidT3" + "Modifier": "VoidT1" }, { - "_id": { "$oid": "65e1d18d85adc0212ca34c30" }, - "Region": 13, - "Seed": 91560, - "Activation": { "$date": { "$numberLong": "1709298061630" } }, - "Expiry": { "$date": { "$numberLong": "1709303671883" } }, - "Node": "SolNode215", - "MissionType": "MT_INTEL", - "Modifier": "VoidT3" + "_id": { "$oid": "66115219d6fe7610efeefcef" }, + "Region": 4, + "Seed": 45240, + "Activation": { "$date": { "$numberLong": "1712411161537" } }, + "Expiry": { "$date": { "$numberLong": "1712416316458" } }, + "Node": "SolNode30", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT1", + "Hard": true }, { - "_id": { "$oid": "65e1d2b99367fd525c36a3ba" }, + "_id": { "$oid": "66115219d6fe7610efeefcf0" }, + "Region": 3, + "Seed": 22274, + "Activation": { "$date": { "$numberLong": "1712411161537" } }, + "Expiry": { "$date": { "$numberLong": "1712418206481" } }, + "Node": "SolNode15", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "661154ada7a10f21f1301bdc" }, + "Region": 11, + "Seed": 4060, + "Activation": { "$date": { "$numberLong": "1712411821288" } }, + "Expiry": { "$date": { "$numberLong": "1712415462140" } }, + "Node": "SolNode164", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "6611559d055b01afc484659a" }, + "Region": 5, + "Seed": 9492, + "Activation": { "$date": { "$numberLong": "1712412061821" } }, + "Expiry": { "$date": { "$numberLong": "1712417582665" } }, + "Node": "SolNode10", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "6611559d055b01afc484659b" }, "Region": 6, - "Seed": 68724, - "Activation": { "$date": { "$numberLong": "1709298361515" } }, - "Expiry": { "$date": { "$numberLong": "1709304239499" } }, - "Node": "SolNode93", + "Seed": 3435, + "Activation": { "$date": { "$numberLong": "1712412061821" } }, + "Expiry": { "$date": { "$numberLong": "1712417690184" } }, + "Node": "SolNode50", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "661157051fe0bbf0b8bbad63" }, + "Region": 6, + "Seed": 31522, + "Activation": { "$date": { "$numberLong": "1712412421783" } }, + "Expiry": { "$date": { "$numberLong": "1712416821369" } }, + "Node": "SolNode82", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "661157051fe0bbf0b8bbad64" }, + "Region": 5, + "Seed": 59209, + "Activation": { "$date": { "$numberLong": "1712412421783" } }, + "Expiry": { "$date": { "$numberLong": "1712417087217" } }, + "Node": "SolNode100", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "661157051fe0bbf0b8bbad65" }, + "Region": 10, + "Seed": 61793, + "Activation": { "$date": { "$numberLong": "1712412421783" } }, + "Expiry": { "$date": { "$numberLong": "1712418752747" } }, + "Node": "SolNode140", "MissionType": "MT_MOBILE_DEFENSE", "Modifier": "VoidT2", "Hard": true }, { - "_id": { "$oid": "65e1d2b99367fd525c36a3bb" }, - "Region": 16, - "Seed": 30979, - "Activation": { "$date": { "$numberLong": "1709298361515" } }, - "Expiry": { "$date": { "$numberLong": "1709302870648" } }, - "Node": "SettlementNode1", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "65e1d36e7d8510d49a2cf11d" }, - "Region": 19, - "Seed": 49817, - "Activation": { "$date": { "$numberLong": "1709298542000" } }, - "Expiry": { "$date": { "$numberLong": "1709305496482" } }, - "Node": "SolNode745", + "_id": { "$oid": "66115741de5a99155e0d8a74" }, + "Region": 8, + "Seed": 58901, + "Activation": { "$date": { "$numberLong": "1712412481973" } }, + "Expiry": { "$date": { "$numberLong": "1712418640785" } }, + "Node": "SolNode118", "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65e1d36e7d8510d49a2cf11e" }, - "Region": 19, - "Seed": 63821, - "Activation": { "$date": { "$numberLong": "1709298542000" } }, - "Expiry": { "$date": { "$numberLong": "1709305008987" } }, - "Node": "SolNode741", - "MissionType": "MT_ASSAULT", - "Modifier": "VoidT5" - }, - { - "_id": { "$oid": "65e1d5c6b23a426b6c016e05" }, - "Region": 13, - "Seed": 98298, - "Activation": { "$date": { "$numberLong": "1709299141999" } }, - "Expiry": { "$date": { "$numberLong": "1709304989196" } }, - "Node": "SolNode204", - "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT3", "Hard": true + }, + { + "_id": { "$oid": "661158e57574ca51f042bef2" }, + "Region": 17, + "Seed": 95061, + "Activation": { "$date": { "$numberLong": "1712412901129" } }, + "Expiry": { "$date": { "$numberLong": "1712418905297" } }, + "Node": "SolNode717", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT6", + "Hard": true + }, + { + "_id": { "$oid": "661158e57574ca51f042bef3" }, + "Region": 18, + "Seed": 8310, + "Activation": { "$date": { "$numberLong": "1712412901129" } }, + "Expiry": { "$date": { "$numberLong": "1712417453401" } }, + "Node": "SolNode310", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT6", + "Hard": true + }, + { + "_id": { "$oid": "661159212bf5d98dbd6cea69" }, + "Region": 19, + "Seed": 9489, + "Activation": { "$date": { "$numberLong": "1712412961391" } }, + "Expiry": { "$date": { "$numberLong": "1712417868043" } }, + "Node": "SolNode743", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "66115ce1ef6218464e91d0cd" }, + "Region": 19, + "Seed": 18624, + "Activation": { "$date": { "$numberLong": "1712413921981" } }, + "Expiry": { "$date": { "$numberLong": "1712419099840" } }, + "Node": "SolNode747", + "MissionType": "MT_INTEL", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "66115ce1ef6218464e91d0ce" }, + "Region": 19, + "Seed": 9876, + "Activation": { "$date": { "$numberLong": "1712413921981" } }, + "Expiry": { "$date": { "$numberLong": "1712420689674" } }, + "Node": "SolNode746", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT5" } ], "GlobalUpgrades": [], @@ -1126,10 +1579,23 @@ { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1735689600000" } }, + "EndDate": { "$date": { "$numberLong": "1735750800000" } }, "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1735750800000" } }, + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, "Discount": 0, "RegularOverride": 0, "PremiumOverride": 1, @@ -1149,17 +1615,30 @@ "EndDate": { "$date": { "$numberLong": "1719838800000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1735745220000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": true, "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, "BogoBuy": 0, - "BogoGet": 0 + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1702380180000" } }, + "EndDate": { "$date": { "$numberLong": "1893517200000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1672591560000" } }, + "EndDate": { "$date": { "$numberLong": "1895849220000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackC", @@ -1175,20 +1654,7 @@ "EndDate": { "$date": { "$numberLong": "1735723800000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": true, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1702380180000" } }, - "EndDate": { "$date": { "$numberLong": "1736767380000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", "ShowInMarket": true, "HideFromMarket": true, "SupporterPack": false, @@ -1197,8 +1663,8 @@ "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1672591560000" } }, - "EndDate": { "$date": { "$numberLong": "1895849220000" } } + "StartDate": { "$date": { "$numberLong": "1704187860000" } }, + "EndDate": { "$date": { "$numberLong": "1735723860000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", @@ -1226,6 +1692,19 @@ "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1895587200000" } } }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZMarketBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709308800000" } }, + "EndDate": { "$date": { "$numberLong": "1893510000000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", "ShowInMarket": true, @@ -1240,17 +1719,56 @@ "EndDate": { "$date": { "$numberLong": "1767268740000" } } }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", + "TypeName": "/Lotus/Types/StoreItems/Packages/HODMarketBundle", "ShowInMarket": true, - "HideFromMarket": true, + "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 1, + "PremiumOverride": 465, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704187860000" } }, - "EndDate": { "$date": { "$numberLong": "1735723860000" } } + "StartDate": { "$date": { "$numberLong": "1709308800000" } }, + "EndDate": { "$date": { "$numberLong": "1893510000000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TNWMarketBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 145, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709308800000" } }, + "EndDate": { "$date": { "$numberLong": "1893510000000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneInfested", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 100, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709207460000" } }, + "EndDate": { "$date": { "$numberLong": "1861962660000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TnDeimosSupporterArmourBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 110, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709308800000" } }, + "EndDate": { "$date": { "$numberLong": "1893510000000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", @@ -1262,8 +1780,284 @@ "BogoGet": 0, "PremiumOverride": 1, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704115200000" } }, - "EndDate": { "$date": { "$numberLong": "1893504000000" } } + "StartDate": { "$date": { "$numberLong": "1709206020000" } }, + "EndDate": { "$date": { "$numberLong": "1893497220000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PowerPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709206140000" } }, + "EndDate": { "$date": { "$numberLong": "1893517200000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageZarimanSupporterPackGlyph", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211120000" } }, + "EndDate": { "$date": { "$numberLong": "1861963200000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerNarmer", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 75, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211180000" } }, + "EndDate": { "$date": { "$numberLong": "1861963200000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterPistolSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 45, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211060000" } }, + "EndDate": { "$date": { "$numberLong": "1861963200000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sigils/ZarimanSupporterPackSigil", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211180000" } }, + "EndDate": { "$date": { "$numberLong": "1861963200000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerTNWNarmerSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 55, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211420000" } }, + "EndDate": { "$date": { "$numberLong": "1861966680000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 55, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211600000" } }, + "EndDate": { "$date": { "$numberLong": "1861966800000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/DeimosRevolverGlyph", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211420000" } }, + "EndDate": { "$date": { "$numberLong": "1861966620000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Sigils/NewWar2021Sigil", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211540000" } }, + "EndDate": { "$date": { "$numberLong": "1861966740000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterShotgunSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211420000" } }, + "EndDate": { "$date": { "$numberLong": "1861966620000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterWhipSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211240000" } }, + "EndDate": { "$date": { "$numberLong": "1861963200000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/NewWar2021Glyph", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211360000" } }, + "EndDate": { "$date": { "$numberLong": "1861966560000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/DeimosEphemera", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 65, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211600000" } }, + "EndDate": { "$date": { "$numberLong": "1861966800000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorC", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 50, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211660000" } }, + "EndDate": { "$date": { "$numberLong": "1861966860000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Scarves/DeimosSupporterFireFlyBlueScarf", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 95, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211360000" } }, + "EndDate": { "$date": { "$numberLong": "1861966560000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorL", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 40, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211660000" } }, + "EndDate": { "$date": { "$numberLong": "1861966920000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/2024Bundles/DanteChroniclesPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1711451700000" } }, + "EndDate": { "$date": { "$numberLong": "1893496500000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerEasterItemA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 1, + "StartDate": { "$date": { "$numberLong": "1712167200000" } }, + "EndDate": { "$date": { "$numberLong": "1713204000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1713204000000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Events/BunnyEars", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 5000, + "StartDate": { "$date": { "$numberLong": "1712167200000" } }, + "EndDate": { "$date": { "$numberLong": "1713204000000" } }, + "ProductExpiryOverride": { "$date": { "$numberLong": "1713204000000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/FootstepsEasterEggs", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 0, + "RegularOverride": 5000, + "ProductExpiryOverride": { "$date": { "$numberLong": "1713204000000" } }, + "EndDate": { "$date": { "$numberLong": "1713204000000" } }, + "StartDate": { "$date": { "$numberLong": "1712167200000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Events/PremiumBunnyEars", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1712167200000" } }, + "EndDate": { "$date": { "$numberLong": "1713204000000" } } } ], "InGameMarket": { @@ -1275,39 +2069,47 @@ "Icon": "popular", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/QorvexItemsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/SevagothDeluxeSkinBundle", - "/Lotus/StoreItems/Powersuits/Wraith/Wraith", + "/Lotus/Types/StoreItems/Packages/Tennocon2024StoreItem", + "/Lotus/Types/StoreItems/Packages/2024Bundles/DanteChroniclesPack", + "/Lotus/Types/StoreItems/Packages/SandmanBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/ZephyrDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/EssentialTennokaiModPack", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/InarosDeluxeSkinBundle", + "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/EmpyreanSentinelPowerSuit", "/Lotus/Types/StoreItems/Packages/DuvArmorBundle", - "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerItemB", - "/Lotus/StoreItems/Types/Items/ShipDecos/LisetPropNecraMechDrone", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/BirdPlush", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/FishPlush", - "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/DeerPlush", - "/Lotus/Types/StoreItems/Packages/KavatStarterKit", + "/Lotus/StoreItems/Powersuits/Sandman/Sandman", + "/Lotus/StoreItems/Upgrades/Skins/Crowns/DexVinesCrown", + "/Lotus/Types/StoreItems/Packages/EssentialTennokaiModPack", + "/Lotus/Types/StoreItems/Packages/EssentialGrimoireModPack", "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", "/Lotus/Types/StoreItems/Packages/FormaPack" ] }, + { + "CategoryName": "SEASONAL", + "Name": "/Lotus/Language/Store/SeasonalCategoryTitle", + "Icon": "seasonal", + "AddToMenu": true, + "Items": [ + "/Lotus/StoreItems/Upgrades/Skins/Events/PremiumBunnyEars", + "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsEasterEggs", + "/Lotus/StoreItems/Upgrades/Skins/Events/BunnyEars", + "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerEasterItemA" + ] + }, + { "CategoryName": "NEW", "Name": "/Lotus/Language/Menu/Store_New", "Icon": "new", "Items": [] }, + { "CategoryName": "SALE", "Name": "/Lotus/Language/Menu/Store_Sale", "Icon": "sale", "AddToMenu": true, "Items": [] }, { "CategoryName": "TENNOGEN", "Name": "/Lotus/Language/Menu/Store_Tennogen", "Icon": "tennogen", "Items": [ - "/Lotus/StoreItems/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuFacialAccessory", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWSildargScarf", - "/Lotus/StoreItems/Upgrades/Skins/Volt/SWArresterVoltHelmet", - "/Lotus/StoreItems/Upgrades/Skins/Runner/SWGaussAgitoSkin", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWTsujinasaSyandana", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRepalaScarf", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWJotunheimScarf", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRSixSariScarf", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWIcariusScarf" + "/Lotus/StoreItems/Upgrades/Skins/Wraith/SWSevagothEzrielSkin", + "/Lotus/StoreItems/Upgrades/Skins/Gyre/SWGyreKuvealMonarchSkin", + "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWEzrielSyandana", + "/Lotus/StoreItems/Upgrades/Skins/Yareli/SWBatomorphaHelmet", + "/Lotus/StoreItems/Upgrades/Skins/Liset/SWMantisVammatarSkin" ] }, { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "Items": [] }, @@ -1319,10 +2121,11 @@ "Items": [ "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", - "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", + "/Lotus/Types/StoreItems/Packages/2024Bundles/DanteChroniclesPack", "/Lotus/Types/StoreItems/Packages/SanctumPack", + "/Lotus/Types/StoreItems/Packages/Tennocon2024StoreItem", + "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", "/Lotus/Types/StoreItems/Packages/PowerPack", - "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier2StoreItem", "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier1StoreItem" ] @@ -1332,180 +2135,260 @@ }, "Invasions": [ { - "_id": { "$oid": "65ded415afb295267e01cea6" }, + "_id": { "$oid": "660f2d6d6ff82f997b9b5135" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode137", - "Count": 44045, - "Goal": 44000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 883016, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 144234, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1709103176294" } } - }, - { - "_id": { "$oid": "65df54fe5771381feaeff2e0" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode131", - "Count": 34194, - "Goal": 49000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 631777, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 371647, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1709135966561" } } - }, - { - "_id": { "$oid": "65e138f9efef3bd7f1028ef6" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode147", - "Count": 9477, - "Goal": 32000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "65d5c4f18503fca24194bf42" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 883899, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 357566, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1709259891085" } } - }, - { - "_id": { "$oid": "65def869f9181564486a5193" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode100", - "Count": 48036, + "Node": "SolNode191", + "Count": -37515, "Goal": 48000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65def869f9181564486a5193" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/KarakWraithBarrel", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 273216, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 400175, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1709161134898" } } + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "660f2d6d6ff82f997b9b5135" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalStock", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 785536, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/TwinVipersWraithLink", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 488112, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1712314434268" } } }, { - "_id": { "$oid": "65e17cf17953cc2b1b2785f5" }, + "_id": { "$oid": "660f60fd36875e3069fbf65b" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SettlementNode20", + "Count": -30015, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "660f3925f70ace1f3d14d6d2" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 629063, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 133594, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1712283901363" } } + }, + { + "_id": { "$oid": "660fb4313faf9b7b801a006d" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode74", - "Count": -1611, - "Goal": 35000, + "Node": "SolNode125", + "Count": 17941, + "Goal": 31000, "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "65def869f9181564486a5193" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 72809, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 412474, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1709277199678" } } + "ChainID": { "$oid": "660fb4313faf9b7b801a006d" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/KarakWraithBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 538970, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 174417, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1712376482472" } } }, { - "_id": { "$oid": "65e114a5b860b9aeffee4858" }, + "_id": { "$oid": "6610b27d4be875653958946c" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode68", - "Count": -42860, + "Node": "SolNode138", + "Count": -42577, "Goal": 42000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "65e114a5b860b9aeffee4858" }, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 611621, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 460613, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 900360, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1709255747241" } } + "DefenderMissionInfo": { "seed": 380782, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712376357290" } } }, { - "_id": { "$oid": "65e12ae92f1e012856ad9a1d" }, + "_id": { "$oid": "6610e9914dd0c2776dae72e2" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode84", - "Count": -48491, - "Goal": 48000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 562358, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 708093, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1709259961802" } } - }, - { - "_id": { "$oid": "65e151956111cd7d8c1a0d2e" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode62", - "Count": -37162, - "Goal": 37000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 387037, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 42802, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1709265301663" } } - }, - { - "_id": { "$oid": "65e151956111cd7d8c1a0d2f" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode127", - "Count": -9226, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode144", + "Count": -15576, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 873229, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 119787, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1709265301663" } } + "AttackerMissionInfo": { "seed": 217759, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 594975, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1712384401125" } } }, { - "_id": { "$oid": "65e175e9035790842d0f5eed" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode78", - "Count": -45684, - "Goal": 45000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "65e12ae92f1e012856ad9a1d" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 630581, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 247766, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1709274601925" } } - }, - { - "_id": { "$oid": "65e17cf17953cc2b1b2785f6" }, + "_id": { "$oid": "6610e9914dd0c2776dae72e3" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode68", - "Count": -27521, + "Node": "SolNode139", + "Count": -46803, + "Goal": 46000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 329663, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 415470, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712384401125" } } + }, + { + "_id": { "$oid": "6610e9914dd0c2776dae72e4" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode141", + "Count": -33472, + "Goal": 33000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 232621, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 826144, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712384401125" } } + }, + { + "_id": { "$oid": "6610ffd658073f0b37c0f7a8" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode146", + "Count": -41411, + "Goal": 41000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 810279, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 620880, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712390102057" } } + }, + { + "_id": { "$oid": "6610ffd658073f0b37c0f7a9" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode140", + "Count": -44304, + "Goal": 44000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 599039, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 880319, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712390102057" } } + }, + { + "_id": { "$oid": "661113c14c1be070369d4bbf" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode147", + "Count": -29824, + "Goal": 43000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 705212, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 393900, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712395201347" } } + }, + { + "_id": { "$oid": "661113c14c1be070369d4bc0" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode135", + "Count": -31741, + "Goal": 33000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 706935, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 421857, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712395201347" } } + }, + { + "_id": { "$oid": "66113b99949aca365857c0b8" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode131", + "Count": -1196, + "Goal": 33000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 170233, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 550278, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712405401878" } } + }, + { + "_id": { "$oid": "6610e739cca32da2eed8c5a4" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode216", + "Count": -34540, + "Goal": 34000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 691585, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 645447, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712390710420" } } + }, + { + "_id": { "$oid": "66111ac9da63b2dc15710454" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode209", + "Count": -25978, "Goal": 41000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "65e17cf17953cc2b1b2785f6" }, + "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 860206, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 993081, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1709282655817" } } + "AttackerMissionInfo": { "seed": 852627, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 501963, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712397001768" } } + }, + { + "_id": { "$oid": "66113df19d4656356ce1829c" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode217", + "Count": -9951, + "Goal": 38000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 499764, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 518441, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712406001563" } } + }, + { + "_id": { "$oid": "66113df19d4656356ce1829d" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode211", + "Count": -13817, + "Goal": 36000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 83277, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 776337, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1712406001563" } } } ], "HubEvents": [], @@ -1513,7 +2396,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9875369 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9922504 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1527,65 +2410,75 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } - }, - { - "_id": { "$oid": "65e138f9efef3bd7f1028ef5" }, - "Node": "SolNode137", - "Faction": "FC_CORPUS", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/CorpusShipEnemySpecs/CorpusShipSquadB", - "ExtraEnemySpec": "", - "Expiry": { "$date": { "$numberLong": "1709331917930" } } - }, - { - "_id": { "$oid": "65e17cf17953cc2b1b2785f4" }, - "Node": "SolNode100", - "Faction": "FC_GRINEER", - "EnemySpec": "/Lotus/Types/Game/EnemySpecs/GrineerSurvivalA", - "ExtraEnemySpec": "", - "Expiry": { "$date": { "$numberLong": "1709336713209" } } } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1709906400000" } }, - "Expiry": { "$date": { "$numberLong": "1710075600000" } }, - "Id": "5d1e07a0a38e4a4fdd7cefca", + "Activation": { "$date": { "$numberLong": "1712322000000" } }, + "Expiry": { "$date": { "$numberLong": "1712494800000" } }, "Character": "Baro'Ki Teel", - "Node": "SaturnHUB" + "Node": "EarthHUB", + "Manifest": [ + { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageIvaraAction", "PrimePrice": 75, "RegularPrice": 60000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/DualStat/ElectEventMeleeMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/DualStat/FireEventRifleMod", "PrimePrice": 300, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CorpusUMP/PrismaCorpusUMP", "PrimePrice": 400, "RegularPrice": 50000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/Emotes/BaroEmote", "PrimePrice": 0, "RegularPrice": 1000000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoA", "PrimePrice": 310, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoC", "PrimePrice": 175, "RegularPrice": 200000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoL", "PrimePrice": 225, "RegularPrice": 150000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/BaroPetWings", "PrimePrice": 400, "RegularPrice": 250000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrismaRazorScarf", "PrimePrice": 350, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetBlueSkySkinInaros", "PrimePrice": 375, "RegularPrice": 340000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ParazonPoster", "PrimePrice": 100, "RegularPrice": 125000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrismaLotusSigil", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisTiberon", "PrimePrice": 315, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Weapons/Staff/TnRibbonStaffSkin", "PrimePrice": 350, "RegularPrice": 275000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Dragon/ChromaAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EraHypnosisPoster", "PrimePrice": 100, "RegularPrice": 110000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2023EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/AshLevarianTiara", "PrimePrice": 550, "RegularPrice": 300000 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnOrokinRifle/GrnOrokinRifleWeapon", "PrimePrice": 675, "RegularPrice": 625000 }, + { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } + ] } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1708023600000" } }, - "Completed": false, + "Activation": { "$date": { "$numberLong": "1710439200000" } }, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheePrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMiragePrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Banshee/BansheePrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfF", "PrimePrice": 2 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVIctusPrimeSentAccessories", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeHeliosPowerSuit", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/AllNew1hSG/AllNew1hSG", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Harlequin/MiragePrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtavistPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfG", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeKogake/KogakePrimeKnuckles", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeAkbolto/PrimeAkBoltoWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BansheePrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/MiragePrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitaniaPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitaniaGaraPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVGaraPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Fairy/TitaniaPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/TitaniaPrimeSyandana", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Archwing/TitaniaPrimeArchwingSkin", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimePangolinSword/PrimePangolinSword", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeCorinth/PrimeCorinth", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Glass/GaraPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/EphemeraGaraPrime", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVCastellanPrimeKavatArmor", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeAstilla/AstillaPrimeWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeVolnus/VolnusPrimeWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TitaniaPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GaraPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionTitaniaGaraVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionTitaniaGaraVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionTitaniaGaraVaultBBronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1710442800000" } }, + "Expiry": { "$date": { "$numberLong": "1712858400000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/DualDagger/FangPrimeDagger", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeLex/PrimeLex", "PrimePrice": 1 }, @@ -1689,7 +2582,7 @@ { "Expiry": { "$date": { "$numberLong": "1706814000000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, { "Expiry": { "$date": { "$numberLong": "1708023600000" } }, "FeaturedItem": "/Lotus/StoreItems/Types/StoreItems/Packages/MegaPrimeVault/LastChanceItemC" }, { - "Expiry": { "$date": { "$numberLong": "1710442800000" } }, + "Expiry": { "$date": { "$numberLong": "1710439200000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1706814000000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack" }, @@ -1698,93 +2591,98 @@ "PreviewHiddenUntil": { "$date": { "$numberLong": "1709233200000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitaniaGaraPrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1715277600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1711648800000" } } } + { + "Expiry": { "$date": { "$numberLong": "1715277600000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1711648800000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVInarosAshPrimeDualPack" + }, + { "Expiry": { "$date": { "$numberLong": "1717696800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1714068000000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "65e1be91c003870bb76e6988" }, - "Node": "CrewBattleNode518", - "Activation": { "$date": { "$numberLong": "1709295601821" } }, - "Expiry": { "$date": { "$numberLong": "1709301001821" } }, + "_id": { "$oid": "661142a1ff85e5bb21c8a9dd" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1712409601821" } }, + "Expiry": { "$date": { "$numberLong": "1712415001821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65e1be91c003870bb76e6989" }, + "_id": { "$oid": "661142a1ff85e5bb21c8a9e1" }, + "Node": "CrewBattleNode529", + "Activation": { "$date": { "$numberLong": "1712409601832" } }, + "Expiry": { "$date": { "$numberLong": "1712415001832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "661142a1ff85e5bb21c8a9e0" }, + "Node": "CrewBattleNode525", + "Activation": { "$date": { "$numberLong": "1712409601829" } }, + "Expiry": { "$date": { "$numberLong": "1712415001829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "661142a1ff85e5bb21c8a9de" }, "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1709295601825" } }, - "Expiry": { "$date": { "$numberLong": "1709301001825" } }, + "Activation": { "$date": { "$numberLong": "1712409601825" } }, + "Expiry": { "$date": { "$numberLong": "1712415001825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65e1be91c003870bb76e698a" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1709295601827" } }, - "Expiry": { "$date": { "$numberLong": "1709301001827" } }, + "_id": { "$oid": "661142a1ff85e5bb21c8a9df" }, + "Node": "CrewBattleNode533", + "Activation": { "$date": { "$numberLong": "1712409601827" } }, + "Expiry": { "$date": { "$numberLong": "1712415001827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "65e1be91c003870bb76e698b" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1709295601829" } }, - "Expiry": { "$date": { "$numberLong": "1709301001829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "65e1be91c003870bb76e698c" }, - "Node": "CrewBattleNode531", - "Activation": { "$date": { "$numberLong": "1709295601832" } }, - "Expiry": { "$date": { "$numberLong": "1709301001832" } }, + "_id": { "$oid": "661142a1ff85e5bb21c8a9e2" }, + "Node": "CrewBattleNode553", + "Activation": { "$date": { "$numberLong": "1712409601834" } }, + "Expiry": { "$date": { "$numberLong": "1712415001834" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "65e1be91c003870bb76e698d" }, - "Node": "CrewBattleNode555", - "Activation": { "$date": { "$numberLong": "1709295601834" } }, - "Expiry": { "$date": { "$numberLong": "1709301001834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "65e1c7f15b10b16bc550d152" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1709299201821" } }, - "Expiry": { "$date": { "$numberLong": "1709304601821" } }, + "_id": { "$oid": "661150b12b9dea1c5aa0efda" }, + "Node": "CrewBattleNode522", + "Activation": { "$date": { "$numberLong": "1712413201821" } }, + "Expiry": { "$date": { "$numberLong": "1712418601821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65e1c7f15b10b16bc550d153" }, + "_id": { "$oid": "661150b12b9dea1c5aa0efdb" }, "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1709299201825" } }, - "Expiry": { "$date": { "$numberLong": "1709304601825" } }, + "Activation": { "$date": { "$numberLong": "1712413201825" } }, + "Expiry": { "$date": { "$numberLong": "1712418601825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "65e1c7f15b10b16bc550d155" }, - "Node": "CrewBattleNode521", - "Activation": { "$date": { "$numberLong": "1709299201829" } }, - "Expiry": { "$date": { "$numberLong": "1709304601829" } }, + "_id": { "$oid": "661150b12b9dea1c5aa0efdd" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1712413201829" } }, + "Expiry": { "$date": { "$numberLong": "1712418601829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "65e1c7f15b10b16bc550d154" }, - "Node": "CrewBattleNode501", - "Activation": { "$date": { "$numberLong": "1709299201827" } }, - "Expiry": { "$date": { "$numberLong": "1709304601827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "65e1c7f15b10b16bc550d156" }, + "_id": { "$oid": "661150b12b9dea1c5aa0efde" }, "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1709299201832" } }, - "Expiry": { "$date": { "$numberLong": "1709304601832" } }, + "Activation": { "$date": { "$numberLong": "1712413201832" } }, + "Expiry": { "$date": { "$numberLong": "1712418601832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "65e1c7f15b10b16bc550d157" }, - "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1709299201834" } }, - "Expiry": { "$date": { "$numberLong": "1709304601834" } }, + "_id": { "$oid": "661150b12b9dea1c5aa0efdc" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1712413201827" } }, + "Expiry": { "$date": { "$numberLong": "1712418601827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "661150b12b9dea1c5aa0efdf" }, + "Node": "CrewBattleNode550", + "Activation": { "$date": { "$numberLong": "1712413201834" } }, + "Expiry": { "$date": { "$numberLong": "1712418601834" } }, "ActiveMissionTier": "VoidT4" } ], @@ -1793,23 +2691,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/GrineerPistol/GrineerLightPistol", - "Activation": { "$date": { "$numberLong": "1709254800000" } }, - "Expiry": { "$date": { "$numberLong": "1709348400000" } }, - "Discount": 20, - "OriginalPrice": 75, - "SalePrice": 60, - "AmountTotal": 100, - "AmountSold": 22 + "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Melee/LongSword/LongSword", + "Activation": { "$date": { "$numberLong": "1712343600000" } }, + "Expiry": { "$date": { "$numberLong": "1712437200000" } }, + "Discount": 50, + "OriginalPrice": 150, + "SalePrice": 75, + "AmountTotal": 300, + "AmountSold": 59 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "65d911ddcdd4e8d30dd56cd6" }, + "_id": { "$oid": "661068a9d843605d047732d5" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1708724701832" } }, - "endDate": { "$date": { "$numberLong": "1709329501832" } }, + "startDate": { "$date": { "$numberLong": "1712351401323" } }, + "endDate": { "$date": { "$numberLong": "1712956201323" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -1817,32 +2715,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "65d911ddcdd4e8d30dd56cd9" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1708724701832" } }, - "endDate": { "$date": { "$numberLong": "1709329501832" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], - "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "65d911ddcdd4e8d30dd56cd6" }, { "$oid": "65d911ddcdd4e8d30dd56cd7" }, { "$oid": "65d911ddcdd4e8d30dd56cd8" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" - }, - { - "_id": { "$oid": "65d911ddcdd4e8d30dd56cd7" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1708724701832" } }, - "endDate": { "$date": { "$numberLong": "1709329501832" } }, - "params": [{ "n": "ScriptParamValue", "v": 20 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "65d911ddcdd4e8d30dd56cd8" }, + "_id": { "$oid": "661068a9d843605d047732d7" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1708724701832" } }, - "endDate": { "$date": { "$numberLong": "1709329501832" } }, + "startDate": { "$date": { "$numberLong": "1712351401323" } }, + "endDate": { "$date": { "$numberLong": "1712956201323" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -1850,10 +2726,32 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "65e15646ac2f1a827151b202" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, + "_id": { "$oid": "661068a9d843605d047732d6" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", + "startDate": { "$date": { "$numberLong": "1712351401323" } }, + "endDate": { "$date": { "$numberLong": "1712956201323" } }, + "params": [{ "n": "ScriptParamValue", "v": 20 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "661068a9d843605d047732d8" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1712351401323" } }, + "endDate": { "$date": { "$numberLong": "1712956201323" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], + "isGenerated": true, + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "661068a9d843605d047732d5" }, { "$oid": "661068a9d843605d047732d6" }, { "$oid": "661068a9d843605d047732d7" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + }, + { + "_id": { "$oid": "6610d7fd83453746dfe5c00a" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -1861,10 +2759,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65e15646ac2f1a827151b203" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, + "_id": { "$oid": "6610d7fd83453746dfe5c00b" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -1872,10 +2770,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65e15646ac2f1a827151b204" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeEASY", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, + "_id": { "$oid": "6610d7fd83453746dfe5c011" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesEASY", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6610d7fd83453746dfe5c00d" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -1883,21 +2792,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65e15646ac2f1a827151b206" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsMEDIUM", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "65e15646ac2f1a827151b205" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, + "_id": { "$oid": "6610d7fd83453746dfe5c00c" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_TEAMDEATHMATCH", @@ -1905,58 +2803,58 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65e15646ac2f1a827151b209" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], + "_id": { "$oid": "6610d7fd83453746dfe5c00e" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryMEDIUM", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, + "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", + "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "65e15646ac2f1a827151b208" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_SPEEDBALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "65e15646ac2f1a827151b207" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY", - "startDate": { "$date": { "$numberLong": "1709266502025" } }, - "endDate": { "$date": { "$numberLong": "1709352902025" } }, + "_id": { "$oid": "6610d7fd83453746dfe5c00f" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6610d7fd83453746dfe5c010" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsMEDIUM", + "startDate": { "$date": { "$numberLong": "1712379901876" } }, + "endDate": { "$date": { "$numberLong": "1712466301876" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_SPEEDBALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" } ], "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [81.39363698309623, 114.01275184327892, 0], + "ProjectPct": [6.9437749833890825, 36.84556214039393, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Garuda", "Baruuk", "Hildryn"] }, - { "Category": "EXC_HARD", "Choices": ["Lex", "Magistar", "Boltor", "Bronco", "CeramicDagger"] } + { "Category": "EXC_NORMAL", "Choices": ["Nekros", "Valkyr", "Oberon"] }, + { "Category": "EXC_HARD", "Choices": ["Boar", "Gammacor", "Anku", "Gorgon", "Angstrum"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "606f4288eb6a782c3652ceb0" }, "Name": "Moderate Mishaps#738", "Tier": 1, "Emblem": true, "OriginalPlatform": 0, "AllianceId": { "$oid": "56031df008c56fe8106a9982" } }, - { "_id": { "$oid": "5a0ef1922183db6f5a60d9ec" }, "Name": "Turian Sixth Fleet#341", "Tier": 2, "AllianceId": { "$oid": "59849a44be87e41dfe7a2d2c" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "54283e6107c56f0e3b1e89bd" }, "Name": "THE ONYX CHAPTER#480", "Tier": 3, "AllianceId": { "$oid": "550277d006c56fbe22e9991d" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5962fe34be87e448e5396aa2" }, "Name": "Syndicate Academy#577", "Tier": 4, "AllianceId": { "$oid": "56031df008c56fe8106a9982" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "65316da7934657f5ab0ed2a5" }, "Name": "-JERUSALIM-#350", "Tier": 1, "AllianceId": { "$oid": "61a210b6a411a244c060bd09" }, "OriginalPlatform": 0, "Emblem": true }, + { "_id": { "$oid": "6127757d57b27207ca479a05" }, "Name": "Notes from Underground#723", "Tier": 2, "AllianceId": { "$oid": "5c617675a38e4a601a657a04" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "55230f2006c56fe4557b2ac1" }, "Name": "PRIME 2 PRIME#640", "Tier": 4, "AllianceId": { "$oid": "5a22395bbe87e4b39e4af6fc" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5edcb9fbccafbc3c875f26bd" }, "Name": "The first rule#508", "Tier": 4, "Emblem": true, "OriginalPlatform": 0 }, { "_id": { "$oid": "56d8b39408c56fd89a1799ec" }, "Name": "Phantom Vanguard#714", "Tier": 5, "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5d6e8383a38e4ab3d87910b4" }, "Name": "KHAO SAN ROAD#515", "Tier": 1, "AllianceId": { "$oid": "62ca246ada801e95e10faef5" }, "Emblem": true, "OriginalPlatform": 0 } + { "_id": { "$oid": "63399bb7249b38a885073742" }, "Name": "Star field#756", "Tier": 3, "Emblem": true, "OriginalPlatform": 0 } ], "SeasonInfo": { "Activation": { "$date": { "$numberLong": "1701284400000" } }, @@ -1967,69 +2865,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001200140000000000000195" }, + "_id": { "$oid": "001200190000000000000266" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1709078400000" } }, - "Expiry": { "$date": { "$numberLong": "1709337600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithHeadshots" - }, - { - "_id": { "$oid": "001200140000000000000196" }, - "Daily": true, - "Activation": { "$date": { "$numberLong": "1709164800000" } }, - "Expiry": { "$date": { "$numberLong": "1709424000000" } }, + "Activation": { "$date": { "$numberLong": "1712188800000" } }, + "Expiry": { "$date": { "$numberLong": "1712448000000" } }, "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithMagnetic" }, { - "_id": { "$oid": "001200140000000000000197" }, + "_id": { "$oid": "001200190000000000000267" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1709251200000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithViral" + "Activation": { "$date": { "$numberLong": "1712275200000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySuspendFiveEnemies" }, { - "_id": { "$oid": "001200140000000000000186" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions14" + "_id": { "$oid": "001200190000000000000268" }, + "Daily": true, + "Activation": { "$date": { "$numberLong": "1712361600000" } }, + "Expiry": { "$date": { "$numberLong": "1712620800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySlideKills" }, { - "_id": { "$oid": "001200140000000000000187" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus14" + "_id": { "$oid": "001200190000000000000256" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions19" }, { - "_id": { "$oid": "001200140000000000000188" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies14" + "_id": { "$oid": "001200190000000000000257" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus19" }, { - "_id": { "$oid": "001200140000000000000189" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyVenusBounties" + "_id": { "$oid": "001200190000000000000258" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies19" }, { - "_id": { "$oid": "001200140000000000000190" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUseForma" + "_id": { "$oid": "001200190000000000000259" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteExterminate" }, { - "_id": { "$oid": "001200140000000000000191" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardTerminated" + "_id": { "$oid": "001200190000000000000260" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyNightAndDay" }, { - "_id": { "$oid": "001200140000000000000192" }, - "Activation": { "$date": { "$numberLong": "1708905600000" } }, - "Expiry": { "$date": { "$numberLong": "1709510400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFriendsMirrorDefense" + "_id": { "$oid": "001200190000000000000261" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteBeastSlayer" + }, + { + "_id": { "$oid": "001200190000000000000262" }, + "Activation": { "$date": { "$numberLong": "1711929600000" } }, + "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillOrCaptureRainalyst" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"sfn\":550}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"lqo1\":{\"mt\":[\"Extermination\",\"Alchemy\",\"Disruption\"],\"mv\":[\"NecramechActivation\",\"VolatileGrenades\",\"DoubleTrouble\"],\"c\":[[\"PointBlank\",\"VoidAberration\"],[\"Deflectors\",\"ShieldedFoes\"],[\"RegeneratingEnemies\",\"Voidburst\"]],\"fv\":[\"ShieldDelay\",\"OperatorLockout\",\"Knifestep\",\"Exhaustion\"]},\"lqo2\":{\"mt\":[\"Alchemy\",\"Defense\",\"Assassination\"],\"mv\":[\"AlchemicalShields\",\"HarshWords\",\"Reinforcements\"],\"c\":[[\"Voidburst\",\"PointBlank\"],[\"ShieldedFoes\",\"RegeneratingEnemies\"],[\"Deflectors\",\"VoidAberration\"]],\"fv\":[\"Starvation\",\"Gearless\",\"Exhaustion\",\"ContactDamage\"]},\"sfn\":550}" } -- 2.47.2 From 2d49006b5f89025b55de124b338b05d01ced313f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Sat, 6 Apr 2024 19:30:04 +0300 Subject: [PATCH 069/522] feat: dynamic time for worldState (#138) --- src/controllers/dynamic/worldStateController.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controllers/dynamic/worldStateController.ts b/src/controllers/dynamic/worldStateController.ts index de87a2bf..7bdc6a93 100644 --- a/src/controllers/dynamic/worldStateController.ts +++ b/src/controllers/dynamic/worldStateController.ts @@ -3,7 +3,9 @@ import config from "@/config.json"; import worldState from "@/static/fixed_responses/worldState.json"; const worldStateController: RequestHandler = (_req, res) => { - res.json(worldState); + const state = worldState; + state.Time = Math.round(Date.now() / 1000); + res.json(state); }; export { worldStateController }; -- 2.47.2 From 4665bfc9fed6888a37a707a29eb282aced5adb28 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 2 May 2024 17:56:35 +0200 Subject: [PATCH 070/522] version update 35.5.10 (#141) --- config.json | 6 +- static/fixed_responses/worldState.json | 2749 ++++++++++-------------- 2 files changed, 1106 insertions(+), 1649 deletions(-) diff --git a/config.json b/config.json index df809546..d7360dce 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,8 @@ { "autoCreateAccount": true, - "buildLabel": "2024.04.05.09.57/uqu6l4zCW+JtySlPa-9hHg", - "matchmakingBuildId": "7887592499483330302", - "version": "35.5.5", + "buildLabel": "2024.05.01.11.50/q8k9c878As3gCOYnOqkWDw", + "matchmakingBuildId": "6945333874579955227", + "version": "35.5.10", "skipStoryModeChoice": true, "skipTutorial": true, "unlockAllMissions": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index c27407a1..39cb6bb7 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "qgeWgo/QlC1kiDj+7+UDWBujyJ7fvjZ9yf6wuq6NOgA1tM98gpOjcIskPaKQiT1OoCq0trv/+kzn81yXpkazTpXaDWNZ8Y9brUfd/mb6ueB9FrpYScbdhzQlqwfvD85jy6zR4K0JP3hSdLbGQh5DRyBJ25fJxKqY9PRwtY81UVTxCKjilJLAdMejLbpScdmm+pOrLaQj+OfCVMEYPf8AsXDEbfdAiLR6W/Q9e9gxAUSvHN2Vd3VNa4AI1nfz1jhHqi2VUPNUCeJ73tX4xRd5lOCpOAEWgxcrJQPC3dtdIkcLWjzRdXrgxN846nu5YwdS8asy373PyUy14H8CQ34Vhw==", + "WorldSeed": "Eu0qQaY9z67oSx1EARBlVo0ySrSQSxQkSrP71+llT4AWYvv1MQh/smwgrZ2sg1H+/4d9ssHmiOHt7YzSekEObqltglLyZA5LJIFGOAtV7O1Q3RNvWqDpWAqqnVM+NzsjVb8m6F3VGcB1tfQBNy61hoo0+EE5+c+xi8TIUTVGUb26LTlEX6s1T8SiBBIrgMF4e8RZgqgH3s7RLpG5LU/llRs8am/qJW9FMAmsqQB0FLds4V6uYWgAKHNCttFL54AQanoBhhD0cUTt3uknOmCU8X9ULPsMRe5o1TGdFRTGh5AI35FIJu4cAeU3uJr0nHy437AsOAolbft7svZZJeBRBg==", "Version": 10, "MobileVersion": "4.15.20.0", - "BuildLabel": "2024.04.05.09.57/uqu6l4zCW+JtySlPa-9hHg", - "Time": 1712415056, + "BuildLabel": "2024.05.01.11.50/q8k9c878As3gCOYnOqkWDw", + "Time": 1714604582, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -115,30 +115,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "65d512fca06b4d92fa080fa5" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Warframe on iOS Available Now" }, - { "LanguageCode": "fr", "Message": "Warframe sur iOS : Disponible" }, - { "LanguageCode": "it", "Message": "Warframe su iOS Ora Disponibile" }, - { "LanguageCode": "de", "Message": "Warframe für iOS ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "Warframe en iOS disponible ya" }, - { "LanguageCode": "pt", "Message": "O Warframe já está disponível para iOS" }, - { "LanguageCode": "ru", "Message": "Игра Warframe для iOS станет уже доступна" }, - { "LanguageCode": "pl", "Message": "Warframe na iOS dostępny już teraz" }, - { "LanguageCode": "uk", "Message": "Warframe на iOS уже доступний" }, - { "LanguageCode": "tr", "Message": "Warframe Şimdi iOS'ta Sizlerle" }, - { "LanguageCode": "ja", "Message": "iOS版Warframeが登場" }, - { "LanguageCode": "zh", "Message": "iOS 版《Warframe》现已登场!" }, - { "LanguageCode": "ko", "Message": "워프레임을 지금 iOS에서 만나보세요" }, - { "LanguageCode": "tc", "Message": "iOS 版 Warframe 現已登場" } - ], - "Prop": "https://www.warframe.com/news/warframe-on-ios?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-02-iOSLaunchDay", - "Date": { "$date": { "$numberLong": "1708462800000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/6e010834485cd78f5dc26ebbcb329de8_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65d8d23b76ca4ce4e30a0e6d" }, "Messages": [{ "LanguageCode": "uk", "Message": "Початкова збірка Warframe для iOS: що всередині " }], @@ -168,55 +144,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "65f340dc675c2423a0061c07" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Titania Prime and Gara Prime are Back!" }, - { "LanguageCode": "fr", "Message": "Titania Prime et Gara Prime sont de retour !" }, - { "LanguageCode": "it", "Message": "Titania Prime e Gara Prime sono tornate!" }, - { "LanguageCode": "de", "Message": "Titania Prime und Gara Prime sind zurück!" }, - { "LanguageCode": "es", "Message": "¡Titania Prime y Gara Prime están de regreso!" }, - { "LanguageCode": "pt", "Message": "A Titania Prime e a Gara Prime estão de volta!" }, - { "LanguageCode": "ru", "Message": "Титания Прайм и Гара Прайм возвращаются!" }, - { "LanguageCode": "pl", "Message": "Titania Prime i Gara Prime powróciły!" }, - { "LanguageCode": "uk", "Message": "Титанія-прайм і Ґара-прайм повертаються!" }, - { "LanguageCode": "tr", "Message": "Titania Prime ve Gara Prime Geri Döndü!" }, - { "LanguageCode": "ja", "Message": "Titania PrimeとGara Primeが復帰!" }, - { "LanguageCode": "zh", "Message": "Titania Prime 和 Gara Prime 现已回归!" }, - { "LanguageCode": "ko", "Message": "티타니아 프라임과 가라 프라임이 돌아왔습니다!" }, - { "LanguageCode": "tc", "Message": "Titania Prime 以及 Gara Prime 回歸了!" } - ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-TitaniaGaraPrimeResurgenceIGN", - "Date": { "$date": { "$numberLong": "1710440580000" } }, - "ImageUrl": "https://www-static.warframe.com/images/prime-resurgence/rotations/titania-gara/masthead-keyart-desktop.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65fccf2e7989de8da70e8389" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Your Year in Review" }, - { "LanguageCode": "fr", "Message": "Bilan de votre année" }, - { "LanguageCode": "it", "Message": "Retrospettiva del Tuo Anno" }, - { "LanguageCode": "de", "Message": "Euer Jahresrückblick" }, - { "LanguageCode": "es", "Message": "Tu resumen del año" }, - { "LanguageCode": "pt", "Message": "Sua Retrospectiva" }, - { "LanguageCode": "ru", "Message": "Обзор вашего года" }, - { "LanguageCode": "pl", "Message": "Twój przegląd roku " }, - { "LanguageCode": "uk", "Message": "Ваш підсумок року" }, - { "LanguageCode": "tr", "Message": "Yılın Değerlendirmesi" }, - { "LanguageCode": "ja", "Message": "2023年振り返り" }, - { "LanguageCode": "zh", "Message": "你的年度回顾" }, - { "LanguageCode": "ko", "Message": "한 해를 돌아보면서" }, - { "LanguageCode": "tc", "Message": "你的年度回顧" } - ], - "Prop": "https://www.warframe.com/news/your-year-in-review?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-YourYearInReviewEmailBlast", - "Date": { "$date": { "$numberLong": "1711063260000" } }, - "EventStartDate": { "$date": { "$numberLong": "1711062000000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/84312a878aeab3b3fff5d29b7e97e8c_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "65fda306a420b3040308b24c" }, "Messages": [ @@ -240,144 +167,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "65fda51cd90254ff0d06f718" }, - "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: Warframe 11 Year Anniversary!" }], - "Prop": "https://forums.warframe.com/topic/1387661-11-year-anniversary-twitch-drops-campaign-starts-march-25/", - "Date": { "$date": { "$numberLong": "1711122000000" } }, - "EventStartDate": { "$date": { "$numberLong": "1711378800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1713193200000" } }, - "EventLiveUrl": "https://www.twitch.tv/directory/category/warframe", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65fdacfc24c51cca2b0deb41" }, - "Messages": [ - { "LanguageCode": "en", "Message": "11 Year Anniversary Pre-Orders Begin Now" }, - { "LanguageCode": "fr", "Message": "Précommandes du 11e Anniversaire" }, - { "LanguageCode": "it", "Message": "I Preordini per l'11° Anniversario Iniziano Ora" }, - { "LanguageCode": "de", "Message": "Vorbestellungen zum 11-jährigen Jubiläum beginnen jetzt" }, - { "LanguageCode": "es", "Message": "¡Las reservas del 11.º aniversario comienzan ahora!" }, - { "LanguageCode": "pt", "Message": "As pré-encomendas do 11º Aniversário começam agora" }, - { "LanguageCode": "pl", "Message": "Przedsprzedaż z okazji 11 Rocznicy rozpoczyna się już teraz" }, - { "LanguageCode": "tr", "Message": "11. Yıl Dönümü Ön Siparişleri Şimdi Başlıyor" }, - { "LanguageCode": "ja", "Message": "11周年記念グッズの予約開始" }, - { "LanguageCode": "zh", "Message": "十一周年纪念预购现已开始" }, - { "LanguageCode": "ko", "Message": "11주년 기념품 예약 주문이 지금 시작됩니다" }, - { "LanguageCode": "tc", "Message": "11 週年紀念周邊商品組合包" } - ], - "Prop": "https://www.warframe.com/news/11-year-anniversary-merch-collection?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-Merch-11YearAnniversaryLaunch", - "Date": { "$date": { "$numberLong": "1711123080000" } }, - "EventStartDate": { "$date": { "$numberLong": "1711123200000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/08ad3149ed1b0c74abcad826a15cfbb8_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "65fe4652b242f5023d0324c1" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Devstream 178 - Résumé FR" }], - "Prop": "https://forums.warframe.com/topic/1388240-devstream-178-r%C3%A9sum%C3%A9-fr/", - "Date": { "$date": { "$numberLong": "1711162800000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/21912ddd5481659af48b081adfd72914_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "65ff57f3f62f439a1e06285c" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Twitch Drops 11周年キャンペーン" }], - "Prop": "https://bit.ly/3IP0pB9", - "Date": { "$date": { "$numberLong": "1711232880000" } }, - "EventStartDate": { "$date": { "$numberLong": "1711339200000" } }, - "EventEndDate": { "$date": { "$numberLong": "1713193200000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_03/11YearAnniversaryKeyart1920x1080.png.58321c59e1f5232a9ffa7355dc0a1061.png", - "Priority": false, - "MobileOnly": false, - "Community": true, - "HideEndDateModifier": true - }, - { - "_id": { "$oid": "66001605e45b8039db0de430" }, - "Messages": [{ "LanguageCode": "ja", "Message": "「2023年振り返り」メールについて" }], - "Prop": "https://bit.ly/3Vz8tO2", - "Date": { "$date": { "$numberLong": "1711281480000" } }, - "EventStartDate": { "$date": { "$numberLong": "1711252800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1714449600000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/7dfcf700c7fb112fe10dab9b30f5b966_1600x900.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "660052341307a5f64705a023" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Campagne de Drops du 11e Annif' : 25 mars" }], - "Prop": "https://forums.warframe.com/topic/1388363-campagne-de-drops-du-11e-annif-d%C3%A9bute-le-25-mars/", - "Date": { "$date": { "$numberLong": "1711297020000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_03/image.png.9bbd049d8f225030aaf5e35145a81f78.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "6601ac4c4bcccc24e403b9da" }, - "Messages": [{ "LanguageCode": "es", "Message": "Campaña de Twitch Drops - Aniversario de Warframe" }], - "Prop": "https://forums.warframe.com/topic/1388446-campa%C3%B1a-de-twitch-drops-para-aniversario-11-comienza-el-25-de-marzo/", - "Date": { "$date": { "$numberLong": "1711385400000" } }, - "EventEndDate": { "$date": { "$numberLong": "1713193140000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "66043b21af7d84281c0bff97" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Dante Unbound Available Now" }, - { "LanguageCode": "fr", "Message": "Dante Libéré - maintenant disponible" }, - { "LanguageCode": "it", "Message": "Dante Liberato Disponibile Ora" }, - { "LanguageCode": "de", "Message": "'Dante entfesselt' ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "«Dante Liberado» disponible ya" }, - { "LanguageCode": "pt", "Message": "A atualização ''Libertação de Dante'' já está disponível" }, - { "LanguageCode": "ru", "Message": "Обновление «Данте на свободе» уже доступно" }, - { "LanguageCode": "pl", "Message": "Wyzwolenie Dantego jest już dostępne" }, - { "LanguageCode": "uk", "Message": "«Данте вільний» уже доступний" }, - { "LanguageCode": "tr", "Message": "Dante Unbound Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "アップデート「解き放たれしDante」が登場" }, - { "LanguageCode": "zh", "Message": "《Dante 无枷》现已推出" }, - { "LanguageCode": "ko", "Message": "해방된 단테를 지금 만나보세요" }, - { "LanguageCode": "tc", "Message": "《DANTE・解放》現已登場" } - ], - "Prop": "https://www.warframe.com/news/dante-unbound-launches-in-march?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-DanteUnboundLaunch", - "Date": { "$date": { "$numberLong": "1711552800000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/eee035bec511a2e4204546c8636cf320.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "660457fb7f35b36e040a7502" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Dante Chronicles Pack Available Now" }, - { "LanguageCode": "fr", "Message": "Disponible : Pack Chroniques de Dante" }, - { "LanguageCode": "it", "Message": "Pacchetto Cronache di Dante - Disponibile Ora" }, - { "LanguageCode": "de", "Message": "Dantes Chroniken-Paket ist jetzt verfügbar" }, - { "LanguageCode": "es", "Message": "Ya está disponible el Paquete Crónicas de Dante" }, - { "LanguageCode": "pt", "Message": "O Pacote Crônicas de Dante já está disponível" }, - { "LanguageCode": "ru", "Message": "Набор «Хроники Данте» уже доступен" }, - { "LanguageCode": "pl", "Message": "Pakiet Kronik Dantego już dostępny" }, - { "LanguageCode": "uk", "Message": "Набір «Літописи Данте» вже доступний" }, - { "LanguageCode": "tr", "Message": "Dante Chronicles Paketi Şimdi Sizlerle" }, - { "LanguageCode": "ja", "Message": "Dante Chronicles パックが登場" }, - { "LanguageCode": "zh", "Message": "Dante 编年史组合包现已推出" }, - { "LanguageCode": "ko", "Message": "단테의 연대기 팩을 지금 만나보세요" }, - { "LanguageCode": "tc", "Message": "Dante 史記組合包現已登場" } - ], - "Prop": "https://www.warframe.com/news/dante-chronicles-pack?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-03-DanteUnboundSupporterSKULaunch", - "Date": { "$date": { "$numberLong": "1711560600000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/454a0d8a48220cab003e6e7fd2909490_1600x900.png", - "Priority": false, - "MobileOnly": false, - "GameOnly": true - }, { "_id": { "$oid": "6604737626861abb100fe5aa" }, "Messages": [ @@ -444,15 +233,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "6605eca3c06de94ae801897b" }, - "Messages": [{ "LanguageCode": "es", "Message": "Dante Liberado: Revisión 35.5.1 + Revisión 35.5.2" }], - "Prop": "https://forums.warframe.com/topic/1389713-dante-liberado-revisi%C3%B3n-3551-revisi%C3%B3n-3552/", - "Date": { "$date": { "$numberLong": "1711664220000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "660aaceb9b7df0dc960f3db8" }, "Messages": [{ "LanguageCode": "uk", "Message": " ОНОВЛЕННЯ 35.5: ДАНТЕ ВІЛЬНИЙ" }], @@ -463,117 +243,226 @@ "MobileOnly": false }, { - "_id": { "$oid": "660d66e3dc66267b4a07bbe8" }, - "Messages": [{ "LanguageCode": "fr", "Message": "La Sentinelle : Actus du 1er avril" }], - "Prop": "https://www.warframe.com/fr/news/the-sentinel-04012024", - "Date": { "$date": { "$numberLong": "1712154300000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/e28cfc4c0871e2591d3743985decc7a1_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "660da1075e10c51bb8084bab" }, + "_id": { "$oid": "6618283ed73d13db82044591" }, "Messages": [ - { "LanguageCode": "en", "Message": "Leap of the Lotus 2024" }, - { "LanguageCode": "fr", "Message": "Saut du Lotus 2024" }, - { "LanguageCode": "it", "Message": "Leap of the Lotus 2024" }, - { "LanguageCode": "de", "Message": "Sprung der Lotus 2024" }, - { "LanguageCode": "es", "Message": "Salto de Lotus 2024" }, - { "LanguageCode": "pt", "Message": "Salto da Lótus de 2024" }, - { "LanguageCode": "ru", "Message": "Прыжок Лотос 2024" }, - { "LanguageCode": "pl", "Message": "Wielkanocne Dary od Lotus 2024" }, - { "LanguageCode": "uk", "Message": "Стрибок Лотос 2024" }, - { "LanguageCode": "tr", "Message": "Lotus'un Sıçrayışı 2024" }, - { "LanguageCode": "ja", "Message": "「Leap of the Lotus」2024" }, - { "LanguageCode": "zh", "Message": "Lotus 的跳跃 2024" }, - { "LanguageCode": "ko", "Message": "로터스의 토끼뜀 2024" }, - { "LanguageCode": "tc", "Message": "Lotus 春意之躍 2024" } + { "LanguageCode": "en", "Message": "Inaros Prime and Ash Prime Return!" }, + { "LanguageCode": "fr", "Message": "Inaros Prime et Ash Prime reviennent !" }, + { "LanguageCode": "it", "Message": "Tornano Inaros Prime e Ash Prime!" }, + { "LanguageCode": "de", "Message": "Inaros Prime und Ash Prime kehren zurück!" }, + { "LanguageCode": "es", "Message": "¡Vuelven Inaros Prime y Ash Prime!" }, + { "LanguageCode": "pt", "Message": "O Inaros Prime e o Ash Prime voltaram!" }, + { "LanguageCode": "ru", "Message": "Инарос Прайм и Эш Прайм возвращаются!" }, + { "LanguageCode": "pl", "Message": "Inaros Prime i Ash Prime powracają!" }, + { "LanguageCode": "uk", "Message": "Інар-прайм і Еш-прайм повернулися!" }, + { "LanguageCode": "tr", "Message": "Inaros Prime ve Ash Prime Geri Dönüyor!" }, + { "LanguageCode": "ja", "Message": "Inaros PrimeとAsh Primeが復帰!" }, + { "LanguageCode": "zh", "Message": "Inaros Prime 和 Ash Prime 回归!" }, + { "LanguageCode": "ko", "Message": "이나로스 프라임과 애쉬 프라임이 돌아옵니다!" }, + { "LanguageCode": "tc", "Message": "Inaros Prime 以及 Ash Prime 回歸!" } ], - "Prop": "https://www.warframe.com/news/leap-of-the-lotus-2024?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-LeapofLotusEventLaunch", - "Date": { "$date": { "$numberLong": "1712167800000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/17303cc9014539b65b6700324789d43_1600x900.png", + "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-PrimeResurgenceR18Launch", + "Date": { "$date": { "$numberLong": "1712858460000" } }, + "ImageUrl": "https://www-static.warframe.com/images/prime-resurgence/rotations/inaros-ash/masthead-keyart-desktop.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "660daef6e12a72d25c0d61d3" }, + "_id": { "$oid": "661d41c00cce85e1270a7441" }, "Messages": [ - { "LanguageCode": "en", "Message": "Lotus’ Spring Basket Blitz Contest" }, - { "LanguageCode": "fr", "Message": "Concours de Paniers de Pâques du Lotus" }, - { "LanguageCode": "it", "Message": "Concorso Lotus’ Spring Basket Blitz" }, - { "LanguageCode": "de", "Message": "Lotus' Frühlingskorb Blitz-Wettbewerb" }, - { "LanguageCode": "es", "Message": "Concurso de Canastas de Pascua de Lotus" }, - { "LanguageCode": "pt", "Message": "Concurso de Cestas de Páscoa da Lótus" }, - { "LanguageCode": "ru", "Message": "Блиц-конкурс «Весенняя корзина Лотос — 2024»" }, - { "LanguageCode": "pl", "Message": "Konkurs Lotus na Kosz Wielkanocny" }, - { "LanguageCode": "uk", "Message": "Бліцконкурс «Весняний кошик Лотос»" }, - { "LanguageCode": "tr", "Message": "Lotus'un Bahar Sepeti Yarışması" }, - { "LanguageCode": "ja", "Message": "Lotusの春のバスケットブリッツコンテスト" }, - { "LanguageCode": "zh", "Message": "Lotus 的春季篮子突击大赛" }, - { "LanguageCode": "ko", "Message": "로터스의 봄맞이 부활절 바구니 만들기 콘테스트" }, - { "LanguageCode": "tc", "Message": "Lotus 春意滿籃閃擊比賽" } + { "LanguageCode": "en", "Message": "TennoCon 2024 Merch Pack Available Now" }, + { "LanguageCode": "fr", "Message": "Pack de Produits Dérivés TC 2024 disponible" }, + { "LanguageCode": "it", "Message": "Pacchetto Merch TennoCon 2024" }, + { "LanguageCode": "de", "Message": "TennoCon 2024 Merch-Paket ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "Paquete de productos de TennoCon 2024" }, + { "LanguageCode": "pt", "Message": "O Pacote de Produtos da TennoCon 2024" }, + { "LanguageCode": "pl", "Message": "Pakiet Gadżetów TennoCon 2024 już dostępny" }, + { "LanguageCode": "tr", "Message": "TennoCon 2024 Ürün Paketi Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "TennoCon 2024 グッズパックが登場" }, + { "LanguageCode": "zh", "Message": "TennoCon 2024 周边商品组合包现已登场" }, + { "LanguageCode": "ko", "Message": "텐노콘 2024 굿즈 팩을 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "TennoCon 2024 周邊商品組合包現已登場" } ], - "Prop": "https://www.warframe.com/news/lotus-spring-basket-blitz-contest?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-LeapofLotusEventContest", - "Date": { "$date": { "$numberLong": "1712172600000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/5030f198b9220940d2dbb8b3c5a4ccf6_1600x900.png", + "Prop": "https://www.warframe.com/news/tennocon-2024-merch-pack?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-Merch-TennoCon2024MerchPackLaunch", + "Date": { "$date": { "$numberLong": "1713191700000" } }, + "EventStartDate": { "$date": { "$numberLong": "1713193200000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/ff834c03cdde39f5141934617aa64dd8_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "660eef7eb0f80ef6530828df" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Dante Libéré : 35.5.3 " }], - "Prop": "https://forums.warframe.com/topic/1391576-dante-lib%C3%A9r%C3%A9-correctif-3553/", - "Date": { "$date": { "$numberLong": "1712254740000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/0c3041fbf17ec6021b56139c19873fe4.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "661018d44f82dee22908d2bf" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Corrections LoS de Tragédie et prochaines étapes " }], - "Prop": "https://forums.warframe.com/topic/1392064-corrections-los-de-trag%C3%A9die-et-prochaines-%C3%A9tapes/", - "Date": { "$date": { "$numberLong": "1712330940000" } }, - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "66103bfa13017daa4c0122e6" }, - "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Hotfix 35.5.4" }], - "Prop": "https://www.warframe.com/updates/pc/35-5-4", - "Date": { "$date": { "$numberLong": "1712339940000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "66104b829fe27f88fb019d53" }, - "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Our Plans for Next Week!" }], - "Prop": "https://forums.warframe.com/topic/1392156-dante-unbound-our-plans-for-next-week-3555/", - "Date": { "$date": { "$numberLong": "1712343840000" } }, + "_id": { "$oid": "662be425d2cece7e6f0b38ee" }, + "Messages": [{ "LanguageCode": "es", "Message": "Dante Liberado: Revisión 35.5.8" }], + "Prop": "https://forums.warframe.com/topic/1395475-dante-liberado-revisi%C3%B3n-3558/", + "Date": { "$date": { "$numberLong": "1714148760000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "66105bccf60de68fa30647a9" }, - "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Hotfix 35.5.5" }], - "Prop": "https://www.warframe.com/updates/pc/35-5-5", - "Date": { "$date": { "$numberLong": "1712347980000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "66106faeb6a0a88c240d2357" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Dante Libéré : 35.5.4 / .5 et plans " }], - "Prop": "https://forums.warframe.com/topic/1392236-dante-lib%C3%A9r%C3%A9-correctif-3554-et-plans/", - "Date": { "$date": { "$numberLong": "1712353140000" } }, + "_id": { "$oid": "662bfe9e05c7b6b5d0080255" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Jade Shadows: Coming This June" }, + { "LanguageCode": "fr", "Message": "Les Ombres de Jade : à venir en juin" }, + { "LanguageCode": "it", "Message": "Ombre di Jade: In Arrivo a Giugno" }, + { "LanguageCode": "de", "Message": "Jade-Schatten: Erscheint diesen Juni" }, + { "LanguageCode": "es", "Message": "Sombras de Jade: disponible en junio" }, + { "LanguageCode": "pt", "Message": "Sombras da Jade: disponível em junho" }, + { "LanguageCode": "ru", "Message": "Обновление «Нефритовые тени»: уже в июне" }, + { "LanguageCode": "pl", "Message": "Jadeitowe Cienie: Już w czerwcu" }, + { "LanguageCode": "uk", "Message": "«Нефритові тіні» з’являться в червні" }, + { "LanguageCode": "tr", "Message": "Jade Shadows: Bu Haziran'da Sizlerle" }, + { "LanguageCode": "ja", "Message": "アップデート「翡翠の影」が6月に実装" }, + { "LanguageCode": "zh", "Message": "《Jade 之影》:将在六月推出" }, + { "LanguageCode": "ko", "Message": "옥빛의 그림자: 6월 출시 예정" }, + { "LanguageCode": "tc", "Message": "《翡翠魅影》:今年六月登場" } + ], + "Prop": "https://www.warframe.com/news/jade-shadows-coming-this-june?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-JadeShadowsMonthAnnounceIGN", + "Date": { "$date": { "$numberLong": "1714159080000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/e4e0963af77446ab93d7a3398312175_1600x900.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "6610760aeee2c8c8b4109ca0" }, - "Messages": [{ "LanguageCode": "es", "Message": "Dante Liberado: Revisión 35.5.3" }], - "Prop": "https://forums.warframe.com/topic/1392265-dante-liberado-revisi%C3%B3n-3553/", - "Date": { "$date": { "$numberLong": "1712354760000" } }, + "_id": { "$oid": "662c06f2e6ad539bd90ef2d3" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Atelier : refonte Résistances des ennemis et Statuts" }], + "Prop": "https://forums.warframe.com/topic/1395487-ateliers-des-devs-les-ombres-de-jade-refonte-r%C3%A9sistances-des-ennemis-et-statuts/", + "Date": { "$date": { "$numberLong": "1714161240000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_04/DamageRecsOnStarchartMock.jpg.23d1d2097c648d0ccb86d0ff3357d33e.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "662e487589dcad25af064900" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #179 - version FR" }], + "Prop": "https://forums.warframe.com/topic/1395694-r%C3%A9sum%C3%A9-devstream-179-version-fr/", + "Date": { "$date": { "$numberLong": "1714309140000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_04/image.png.7240c58984f0d00ba947db30065da346.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "662fe5225cecaf26be0dd3e2" }, + "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #391!" }], + "Prop": "https://forums.warframe.com/topic/1395842-community-stream-schedule-april-29-may-5-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-CommunityStreams-29", + "Date": { "$date": { "$numberLong": "1714414800000" } }, + "EventStartDate": { "$date": { "$numberLong": "1714687200000" } }, + "EventEndDate": { "$date": { "$numberLong": "1714694400000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframe/", + "ImageUrl": "https://www-static.warframe.com/uploads/dcfc4879ebdf79ffea2ef0467feda2d2.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "662fe563388aedc77305edb9" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream & Twitch Drop Schedule" }], + "Prop": "https://forums.warframe.com/topic/1395842-community-stream-schedule-april-29-may-5-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-CommunityStreams-29", + "Date": { "$date": { "$numberLong": "1714414860000" } }, + "EventEndDate": { "$date": { "$numberLong": "1714942800000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/b7bc31a4e6d505cb2f2bf33dba3c6cb4.png", + "Priority": false, + "MobileOnly": false, + "Community": true, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "662ff285d85056f8f700c8d3" }, + "Messages": [{ "LanguageCode": "ja", "Message": "4月29日~5月5日の配信スケジュール" }], + "Prop": "https://bit.ly/44mPN6p", + "Date": { "$date": { "$numberLong": "1714418160000" } }, + "EventStartDate": { "$date": { "$numberLong": "1714363200000" } }, + "EventEndDate": { "$date": { "$numberLong": "1714942800000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_04/image.png.4685509b91694cbe29a8f92098f24cc0.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "663103dc7d9348396c01e92b" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Streams et Drops : 29 avril - 5 mai" }], + "Prop": "https://forums.warframe.com/topic/1395945-horaire-des-streams-communautaires-29-avril-5-mai-2024/", + "Date": { "$date": { "$numberLong": "1714488120000" } }, + "EventStartDate": { "$date": { "$numberLong": "1714449600000" } }, + "EventEndDate": { "$date": { "$numberLong": "1714964400000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_04/image.png.4685509b91694cbe29a8f92098f24cc0.png", + "Priority": false, + "MobileOnly": false, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "663173af7512f12f080f1502" }, + "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops 29 de abril - 5 de mayo" }], + "Prop": "https://forums.warframe.com/topic/1395994-programa-de-streams-y-twitch-drops-29-de-abril-5-de-mayo/", + "Date": { "$date": { "$numberLong": "1714516800000" } }, + "EventEndDate": { "$date": { "$numberLong": "1714942800000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "6632590d151a22f5ac0d01fd" }, + "Messages": [{ "LanguageCode": "en", "Message": "Protea Prime: Hotfix 35.5.9" }], + "Prop": "https://www.warframe.com/updates/pc/35-5-9", + "Date": { "$date": { "$numberLong": "1714573740000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "663259fa3dd43164410b9af7" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj : 35.5.9 / .10" }], + "Prop": "https://forums.warframe.com/topic/1396056-dante-lib%C3%A9r%C3%A9-protea-prime-correctif-3559/", + "Date": { "$date": { "$numberLong": "1714575780000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/8213634f493ec5e3f17b926497ae6870_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "66327bb0a61da886fd0fd08e" }, + "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Hotfix 35.5.10" }], + "Prop": "https://www.warframe.com/updates/pc/35-5-10", + "Date": { "$date": { "$numberLong": "1714584420000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "66327e5b2906b749b90b91c9" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Protea Prime Access Available Now" }, + { "LanguageCode": "fr", "Message": "Le Prime Access Protea Prime est disponible" }, + { "LanguageCode": "it", "Message": "L'Accesso Protea Prime è Disponibile Ora" }, + { "LanguageCode": "de", "Message": "Protea Prime Access ist jetzt verfügbar" }, + { "LanguageCode": "es", "Message": "Prime Access de Protea ya está disponible" }, + { "LanguageCode": "pt", "Message": "O Prime Access da Protea Prime já está disponível" }, + { "LanguageCode": "ru", "Message": "Доступ Протея Прайм уже открыт" }, + { "LanguageCode": "pl", "Message": "Protea Prime Access już dostępny" }, + { "LanguageCode": "uk", "Message": "Протея-прайм уже доступна" }, + { "LanguageCode": "tr", "Message": "Protea Prime Access Şimdi Sizlerle" }, + { "LanguageCode": "ja", "Message": "Protea Prime Accessが登場" }, + { "LanguageCode": "zh", "Message": "Protea Prime Access 现已登场" }, + { "LanguageCode": "ko", "Message": "프로티아 프라임 액세스를 지금 만나보세요" }, + { "LanguageCode": "tc", "Message": "Protea Prime Access 現已登場!" } + ], + "Prop": "https://www.warframe.com/prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-05-ProteaPrimeAccessLaunchIGN", + "Date": { "$date": { "$numberLong": "1714584960000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/8213634f493ec5e3f17b926497ae6870_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "663286afd75812788a0297ee" }, + "Messages": [{ "LanguageCode": "fr", "Message": " [PSA] Fin des Ondes Vol. 5 ; Vol.6 à venir !" }], + "Prop": "https://forums.warframe.com/topic/1396126-psa-fin-des-ondes-vol-5-vol6-%C3%A0-venir/", + "Date": { "$date": { "$numberLong": "1714587240000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_05/CedoDaybreak.png.c821ac29d646c771d5ea3cb045e0cd8b.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "66328ed70f53248e480edd08" }, + "Messages": [{ "LanguageCode": "es", "Message": "Dante Liberado: Protea Prime: Revisión 35.5.9 + Revisión 35.5.10" }], + "Prop": "https://forums.warframe.com/topic/1396134-dante-liberado-protea-prime-revisi%C3%B3n-3559-revisi%C3%B3n-35510/", + "Date": { "$date": { "$numberLong": "1714585680000" } }, "Priority": false, "MobileOnly": false, "Community": true @@ -581,320 +470,279 @@ ], "Goals": [ { - "_id": { "$oid": "660f068b9850fe61587c94e0" }, - "Activation": { "$date": { "$numberLong": "1712329200000" } }, - "Expiry": { "$date": { "$numberLong": "1712934000000" } }, + "_id": { "$oid": "662ab5e1e1102375323874b2" }, + "Activation": { "$date": { "$numberLong": "1714143600000" } }, + "Expiry": { "$date": { "$numberLong": "1714748400000" } }, "Count": 0, "Goal": 1, "Success": 0, "Personal": true, "ClampNodeScores": true, - "Node": "EventNode18", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2022J", + "Node": "EventNode24", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2017C", "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", - "Tag": "Anniversary2022TacAlert", - "Reward": { "items": ["/Lotus/StoreItems/Upgrades/Skins/Rhino/RhinoDexSkin"] } - }, - { - "_id": { "$oid": "660f06939850fe61587c94e2" }, - "Activation": { "$date": { "$numberLong": "1712329200000" } }, - "Expiry": { "$date": { "$numberLong": "1712934000000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode26", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2020F", - "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", - "Tag": "Anniversary2020TacAlert", - "Reward": { "items": ["/Lotus/StoreItems/Types/Items/ShipDecos/ExcaliburDexBobbleHead"] } - }, - { - "_id": { "$oid": "660f069c9850fe61587c94e4" }, - "Activation": { "$date": { "$numberLong": "1712329200000" } }, - "Expiry": { "$date": { "$numberLong": "1712934000000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode19", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2024ChallengeModeA", - "Desc": "/Lotus/Language/Events/Anniversary2024ChallengeMode", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", - "Tag": "Anniversary2024TacAlertCMA", - "Reward": { "items": ["/Lotus/StoreItems/Types/Items/MiscItems/WeaponUtilityUnlocker"] } - } - ], - "Alerts": [ - { - "_id": { "$oid": "65f33278563b9aaf49039b4e" }, - "Activation": { "$date": { "$numberLong": "1712167200000" } }, - "Expiry": { "$date": { "$numberLong": "1712599200000" } }, - "MissionInfo": { - "location": "SolNode27", - "missionType": "MT_EXTERMINATION", - "faction": "FC_GRINEER", - "difficulty": 3, - "missionReward": { "credits": 50000, "items": ["/Lotus/StoreItems/Types/Recipes/Components/OrokinCatalystBlueprint"] }, - "levelOverride": "/Lotus/Levels/Proc/Grineer/GrineerForestExterminate", - "enemySpec": "/Lotus/Types/Game/EnemySpecs/ForestGrineerExterminate", - "minEnemyLevel": 30, - "maxEnemyLevel": 35 - } + "Tag": "Anniversary2018TacAlert", + "Reward": { "items": ["/Lotus/StoreItems/Weapons/Tenno/LongGuns/DexTheThird/DexTheThird"] } } ], + "Alerts": [], "Sorties": [ { - "_id": { "$oid": "66101c7dc0e79f4c604c1b2b" }, - "Activation": { "$date": { "$numberLong": "1712332800000" } }, - "Expiry": { "$date": { "$numberLong": "1712419200000" } }, + "_id": { "$oid": "6632637dfa3db14abf459a41" }, + "Activation": { "$date": { "$numberLong": "1714579200000" } }, + "Expiry": { "$date": { "$numberLong": "1714665600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 55193, - "Boss": "SORTIE_BOSS_VOR", + "Seed": 92365, + "Boss": "SORTIE_BOSS_HYENA", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_SHOTGUN_ONLY", "node": "SolNode224", "tileset": "GrineerGalleonTileset" }, - { "missionType": "MT_SABOTAGE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode41", "tileset": "GrineerSettlementTileset" }, - { "missionType": "MT_ARTIFACT", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode744", "tileset": "GrineerFortressTileset" } + { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", "node": "SolNode109", "tileset": "CorpusOutpostTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SHIELDS", "node": "SolNode125", "tileset": "CorpusGasCityTileset" }, + { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode127", "tileset": "CorpusShipTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "6609f57d42f3b8391aaabf07" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, + "_id": { "$oid": "662edf7d0e0914dc8ec446c1" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 20281, - "Boss": "SORTIE_BOSS_BOREAL", + "Seed": 45617, + "Boss": "SORTIE_BOSS_AMAR", "Missions": [ - { "missionType": "MT_INTEL", "node": "SolNode39" }, - { "missionType": "MT_EXCAVATE", "node": "SolNode79" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode24" } + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode113" }, + { "missionType": "MT_ARTIFACT", "node": "SolNode41" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "66101fc5c42b073e6545b7b8" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "6632592d85923ab1aa1e653b" }, + "Activation": { "$date": { "$numberLong": "1714575661601" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionIntermission10Syndicate", + "Seed": 92365, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609f89" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "ArbitersSyndicate", - "Seed": 55193, - "Nodes": ["SolNode89", "SolNode113", "SolNode109", "SolNode204", "SolNode162", "SolNode403", "SolNode177"] + "Seed": 92365, + "Nodes": ["SolNode12", "SolNode66", "SolNode26", "SettlementNode3", "SolNode10", "SolNode147", "SolNode187"] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7bb" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "EventSyndicate", - "Seed": 60958, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7ba" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 23185, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7b9" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f8a" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 78193, - "Nodes": ["SolNode11", "SolNode63", "SolNode61", "SettlementNode11", "SolNode195", "SolNode56", "SolNode205"] + "Seed": 27171, + "Nodes": ["SolNode61", "SolNode224", "SolNode131", "SolNode25", "SolNode38", "SolNode205", "SolNode93"] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7bc" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f8b" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 58968, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609f8c" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "EventSyndicate", + "Seed": 80305, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609f8d" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "KahlSyndicate", - "Seed": 88211, + "Seed": 43902, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7bd" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f8e" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "NewLokaSyndicate", - "Seed": 73155, - "Nodes": ["SolNode66", "SolNode79", "SolNode710", "SolNode226", "SolNode64", "SolNode73", "SolNode81"] + "Seed": 51299, + "Nodes": ["SolNode59", "SolNode119", "SolNode42", "SolNode209", "SolNode16", "SolNode118", "SolNode139"] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7be" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f8f" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "QuillsSyndicate", - "Seed": 19535, + "Seed": 34485, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7c1" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 93827, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7c0" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 88718, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7bf" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f90" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "PerrinSyndicate", - "Seed": 15179, - "Nodes": ["SolNode46", "SolNode2", "SolNode214", "SettlementNode15", "SolNode88", "SolNode26", "SolNode6"] + "Seed": 63693, + "Nodes": ["SolNode2", "SolNode15", "SolNode74", "SolNode709", "SolNode122", "SolNode132", "SolNode153"] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7c3" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 61066, + "_id": { "$oid": "663266c53cfe97de1f609f92" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 23824, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7c2" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f93" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 7552, + "Seed": 1669, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7c4" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f95" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 92948, + "Seed": 6973, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7c5" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 38078, + "_id": { "$oid": "663266c53cfe97de1f609f91" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 40706, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7c9" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 96731, + "_id": { "$oid": "663266c53cfe97de1f609f94" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 38747, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7ca" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 23831, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7cb" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 73435, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7c7" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 89061, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7c6" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 83181, - "Nodes": [] - }, - { - "_id": { "$oid": "66101fc6c42b073e6545b7c8" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f99" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 79483, + "Seed": 33322, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7ce" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "VoxSyndicate", - "Seed": 77588, + "_id": { "$oid": "663266c53cfe97de1f609f9a" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 50802, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7cc" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 43384, - "Nodes": ["SolNode101", "SolNode39", "SolNode132", "SettlementNode3", "SolNode412", "SolNode223", "SolNode220"] + "_id": { "$oid": "663266c53cfe97de1f609f96" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 74555, + "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7cd" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, + "_id": { "$oid": "663266c53cfe97de1f609f97" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 61557, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609f9c" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 19636, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609f9b" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 30911, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609f98" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 62113, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609f9e" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, "Tag": "VentKidsSyndicate", - "Seed": 31508, + "Seed": 14745, "Nodes": [] }, { - "_id": { "$oid": "66101fc6c42b073e6545b7cf" }, - "Activation": { "$date": { "$numberLong": "1712332741985" } }, - "Expiry": { "$date": { "$numberLong": "1712419140000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 73952, - "Nodes": ["SolNode85", "SolNode103", "SolNode706", "SolNode22", "SolNode17", "SolNode4", "SolNode408"] + "_id": { "$oid": "663266c53cfe97de1f609f9d" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 48149, + "Nodes": ["SolNode85", "SolNode14", "SolNode50", "SolNode121", "SolNode226", "SolNode166", "SolNode146"] }, { - "_id": { "$oid": "661140390000000000000002" }, - "Activation": { "$date": { "$numberLong": "1712406585962" } }, - "Expiry": { "$date": { "$numberLong": "1712415584835" } }, + "_id": { "$oid": "663266c53cfe97de1f609f9f" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "VoxSyndicate", + "Seed": 63835, + "Nodes": [] + }, + { + "_id": { "$oid": "663266c53cfe97de1f609fa0" }, + "Activation": { "$date": { "$numberLong": "1714579141153" } }, + "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 49319, + "Nodes": ["SolNode128", "SolNode46", "SettlementNode15", "SolNode27", "SolNode73", "SolNode137", "SolNode22"] + }, + { + "_id": { "$oid": "6632c1470000000000000002" }, + "Activation": { "$date": { "$numberLong": "1714602311414" } }, + "Expiry": { "$date": { "$numberLong": "1714611310287" } }, "Tag": "EntratiSyndicate", - "Seed": 53873, + "Seed": 22748, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [5, 5, 5] + "xpAmounts": [6, 6, 6] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [11, 11, 11] + "xpAmounts": [12, 12, 12] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", @@ -906,258 +754,24 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [16, 16, 16, 25] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 40] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [25, 25, 25, 25, 50] - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", - "masteryReq": 5, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [2, 2, 2, 4], - "locationTag": "ChamberB", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 50, - "xpAmounts": [4, 4, 4, 5], - "locationTag": "ChamberA", - "isVault": true - }, - { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", - "masteryReq": 5, - "minEnemyLevel": 50, - "maxEnemyLevel": 60, - "xpAmounts": [5, 5, 5, 7], - "locationTag": "ChamberC", - "isVault": true - } - ] - }, - { - "_id": { "$oid": "661140390000000000000004" }, - "Activation": { "$date": { "$numberLong": "1712406585962" } }, - "Expiry": { "$date": { "$numberLong": "1712415584835" } }, - "Tag": "EntratiLabSyndicate", - "Seed": 53874, - "Nodes": [] - }, - { - "_id": { "$oid": "661140390000000000000008" }, - "Activation": { "$date": { "$numberLong": "1712406585962" } }, - "Expiry": { "$date": { "$numberLong": "1712415584835" } }, - "Tag": "CetusSyndicate", - "Seed": 53873, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [340, 340, 340] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [590, 590, 590] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [570, 570, 570, 830] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [560, 560, 560, 560, 1100] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [740, 740, 740, 740, 1460] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [780, 780, 780, 780, 1530] - } - ] - }, - { - "_id": { "$oid": "661140390000000000000028" }, - "Activation": { "$date": { "$numberLong": "1712406585962" } }, - "Expiry": { "$date": { "$numberLong": "1712415584835" } }, - "Tag": "ZarimanSyndicate", - "Seed": 53874, - "Nodes": [] - }, - { - "_id": { "$oid": "661140390000000000000024" }, - "Activation": { "$date": { "$numberLong": "1712406585962" } }, - "Expiry": { "$date": { "$numberLong": "1712415584835" } }, - "Tag": "SolarisSyndicate", - "Seed": 53873, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [380, 380, 380] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [660, 660, 660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [600, 600, 600, 880] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [620, 620, 620, 620, 1210] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [680, 680, 680, 680, 1340] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [830, 830, 830, 830, 1630] - } - ] - }, - { - "_id": { "$oid": "661163600000000000000002" }, - "Activation": { "$date": { "$numberLong": "1712415584836" } }, - "Expiry": { "$date": { "$numberLong": "1712424583710" } }, - "Tag": "EntratiSyndicate", - "Seed": 35010, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [5, 5, 5] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 15, - "maxEnemyLevel": 25, - "xpAmounts": [10, 10, 10] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessExcavateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", - "masteryReq": 5, - "minEnemyLevel": 25, - "maxEnemyLevel": 30, - "endless": true, - "xpAmounts": [14, 14, 14] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", - "masteryReq": 2, - "minEnemyLevel": 30, - "maxEnemyLevel": 40, - "xpAmounts": [16, 16, 16, 25] - }, - { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", - "masteryReq": 3, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 40] + "xpAmounts": [18, 18, 18, 27] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [21, 21, 21, 21, 42] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -1193,385 +807,364 @@ ] }, { - "_id": { "$oid": "661163600000000000000008" }, - "Activation": { "$date": { "$numberLong": "1712415584836" } }, - "Expiry": { "$date": { "$numberLong": "1712424583710" } }, - "Tag": "CetusSyndicate", - "Seed": 35010, - "Nodes": [], - "Jobs": [ - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableCRewards", - "masteryReq": 0, - "minEnemyLevel": 5, - "maxEnemyLevel": 15, - "xpAmounts": [360, 360, 360] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableCRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [690, 690, 690] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableCRewards", - "masteryReq": 2, - "minEnemyLevel": 20, - "maxEnemyLevel": 40, - "xpAmounts": [600, 600, 600, 890] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableCRewards", - "masteryReq": 3, - "minEnemyLevel": 30, - "maxEnemyLevel": 50, - "xpAmounts": [590, 590, 590, 590, 1160] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", - "masteryReq": 5, - "minEnemyLevel": 40, - "maxEnemyLevel": 60, - "xpAmounts": [720, 720, 720, 720, 1420] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableCRewards", - "masteryReq": 10, - "minEnemyLevel": 100, - "maxEnemyLevel": 100, - "xpAmounts": [840, 840, 840, 840, 1660] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", - "masteryReq": 0, - "minEnemyLevel": 50, - "maxEnemyLevel": 70, - "xpAmounts": [770, 770, 770, 770, 1510] - } - ] - }, - { - "_id": { "$oid": "661163600000000000000004" }, - "Activation": { "$date": { "$numberLong": "1712415584836" } }, - "Expiry": { "$date": { "$numberLong": "1712424583710" } }, + "_id": { "$oid": "6632c1470000000000000004" }, + "Activation": { "$date": { "$numberLong": "1714602311414" } }, + "Expiry": { "$date": { "$numberLong": "1714611310287" } }, "Tag": "EntratiLabSyndicate", - "Seed": 35011, + "Seed": 22748, "Nodes": [] }, { - "_id": { "$oid": "661163600000000000000024" }, - "Activation": { "$date": { "$numberLong": "1712415584836" } }, - "Expiry": { "$date": { "$numberLong": "1712424583710" } }, - "Tag": "SolarisSyndicate", - "Seed": 35010, + "_id": { "$oid": "6632c1470000000000000008" }, + "Activation": { "$date": { "$numberLong": "1714602311414" } }, + "Expiry": { "$date": { "$numberLong": "1714611310287" } }, + "Tag": "CetusSyndicate", + "Seed": 22748, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [490, 490, 490] + "xpAmounts": [440, 440, 440] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [700, 700, 700] + "xpAmounts": [730, 730, 730] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusSpyJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [650, 650, 650, 960] + "xpAmounts": [600, 600, 600, 880] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [570, 570, 570, 570, 1110] + "xpAmounts": [620, 620, 620, 620, 1220] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [760, 760, 760, 760, 1490] + "xpAmounts": [690, 690, 690, 690, 1360] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusTheftJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableCRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [800, 800, 800, 800, 1570] + "xpAmounts": [820, 820, 820, 820, 1610] } ] }, { - "_id": { "$oid": "661163600000000000000028" }, - "Activation": { "$date": { "$numberLong": "1712415584836" } }, - "Expiry": { "$date": { "$numberLong": "1712424583710" } }, + "_id": { "$oid": "6632c1470000000000000025" }, + "Activation": { "$date": { "$numberLong": "1714602311414" } }, + "Expiry": { "$date": { "$numberLong": "1714611310287" } }, + "Tag": "SolarisSyndicate", + "Seed": 22748, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [420, 420, 420] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [590, 590, 590] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [670, 670, 670, 980] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [580, 580, 580, 580, 1130] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [690, 690, 690, 690, 1360] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [830, 830, 830, 830, 1620] + } + ] + }, + { + "_id": { "$oid": "6632c1470000000000000029" }, + "Activation": { "$date": { "$numberLong": "1714602311414" } }, + "Expiry": { "$date": { "$numberLong": "1714611310287" } }, "Tag": "ZarimanSyndicate", - "Seed": 35011, + "Seed": 22748, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "661149e569481c8e401bd673" }, - "Region": 15, - "Seed": 1152, - "Activation": { "$date": { "$numberLong": "1712409061851" } }, - "Expiry": { "$date": { "$numberLong": "1712415244418" } }, - "Node": "SolNode409", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "661149e569481c8e401bd675" }, - "Region": 9, - "Seed": 42534, - "Activation": { "$date": { "$numberLong": "1712409061851" } }, - "Expiry": { "$date": { "$numberLong": "1712416022250" } }, - "Node": "SolNode81", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "66114c01b36ef6d439deca47" }, - "Region": 17, - "Seed": 64608, - "Activation": { "$date": { "$numberLong": "1712409601370" } }, - "Expiry": { "$date": { "$numberLong": "1712416319778" } }, - "Node": "SolNode718", - "MissionType": "MT_ALCHEMY", - "Modifier": "VoidT6" - }, - { - "_id": { "$oid": "66114c01b36ef6d439deca48" }, - "Region": 18, - "Seed": 7111, - "Activation": { "$date": { "$numberLong": "1712409601370" } }, - "Expiry": { "$date": { "$numberLong": "1712415410386" } }, - "Node": "SolNode309", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT6" - }, - { - "_id": { "$oid": "66114e962a8de1522df675d9" }, - "Region": 7, - "Seed": 57939, - "Activation": { "$date": { "$numberLong": "1712410262119" } }, - "Expiry": { "$date": { "$numberLong": "1712417320012" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "66114e962a8de1522df675da" }, - "Region": 13, - "Seed": 49926, - "Activation": { "$date": { "$numberLong": "1712410262119" } }, - "Expiry": { "$date": { "$numberLong": "1712415452182" } }, - "Node": "SolNode212", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "66114e962a8de1522df675dd" }, - "Region": 2, - "Seed": 32097, - "Activation": { "$date": { "$numberLong": "1712410262119" } }, - "Expiry": { "$date": { "$numberLong": "1712416135732" } }, - "Node": "SolNode66", - "MissionType": "MT_INTEL", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "66114e962a8de1522df675dc" }, - "Region": 3, - "Seed": 87537, - "Activation": { "$date": { "$numberLong": "1712410262119" } }, - "Expiry": { "$date": { "$numberLong": "1712415090262" } }, - "Node": "SolNode85", - "MissionType": "MT_TERRITORY", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "66115219d6fe7610efeefcef" }, - "Region": 4, - "Seed": 45240, - "Activation": { "$date": { "$numberLong": "1712411161537" } }, - "Expiry": { "$date": { "$numberLong": "1712416316458" } }, - "Node": "SolNode30", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "66115219d6fe7610efeefcf0" }, - "Region": 3, - "Seed": 22274, - "Activation": { "$date": { "$numberLong": "1712411161537" } }, - "Expiry": { "$date": { "$numberLong": "1712418206481" } }, - "Node": "SolNode15", + "_id": { "$oid": "6632b3e1db9db93a78cbeeeb" }, + "Region": 5, + "Seed": 44087, + "Activation": { "$date": { "$numberLong": "1714598881197" } }, + "Expiry": { "$date": { "$numberLong": "1714605980271" } }, + "Node": "SolNode126", "MissionType": "MT_RESCUE", - "Modifier": "VoidT1", + "Modifier": "VoidT2", "Hard": true }, { - "_id": { "$oid": "661154ada7a10f21f1301bdc" }, + "_id": { "$oid": "6632b765b017a7c713798b78" }, + "Region": 22, + "Seed": 70662, + "Activation": { "$date": { "$numberLong": "1714599781306" } }, + "Expiry": { "$date": { "$numberLong": "1714605869597" } }, + "Node": "SolNode232", + "MissionType": "MT_VOID_CASCADE", + "Modifier": "VoidT6", + "Hard": true + }, + { + "_id": { "$oid": "6632b765b017a7c713798b79" }, "Region": 11, - "Seed": 4060, - "Activation": { "$date": { "$numberLong": "1712411821288" } }, - "Expiry": { "$date": { "$numberLong": "1712415462140" } }, - "Node": "SolNode164", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "6611559d055b01afc484659a" }, - "Region": 5, - "Seed": 9492, - "Activation": { "$date": { "$numberLong": "1712412061821" } }, - "Expiry": { "$date": { "$numberLong": "1712417582665" } }, - "Node": "SolNode10", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "6611559d055b01afc484659b" }, - "Region": 6, - "Seed": 3435, - "Activation": { "$date": { "$numberLong": "1712412061821" } }, - "Expiry": { "$date": { "$numberLong": "1712417690184" } }, - "Node": "SolNode50", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "661157051fe0bbf0b8bbad63" }, - "Region": 6, - "Seed": 31522, - "Activation": { "$date": { "$numberLong": "1712412421783" } }, - "Expiry": { "$date": { "$numberLong": "1712416821369" } }, - "Node": "SolNode82", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT2", + "Seed": 33904, + "Activation": { "$date": { "$numberLong": "1714599781306" } }, + "Expiry": { "$date": { "$numberLong": "1714606226193" } }, + "Node": "SolNode175", + "MissionType": "MT_HIVE", + "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "661157051fe0bbf0b8bbad64" }, - "Region": 5, - "Seed": 59209, - "Activation": { "$date": { "$numberLong": "1712412421783" } }, - "Expiry": { "$date": { "$numberLong": "1712417087217" } }, - "Node": "SolNode100", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "661157051fe0bbf0b8bbad65" }, - "Region": 10, - "Seed": 61793, - "Activation": { "$date": { "$numberLong": "1712412421783" } }, - "Expiry": { "$date": { "$numberLong": "1712418752747" } }, - "Node": "SolNode140", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "66115741de5a99155e0d8a74" }, - "Region": 8, - "Seed": 58901, - "Activation": { "$date": { "$numberLong": "1712412481973" } }, - "Expiry": { "$date": { "$numberLong": "1712418640785" } }, - "Node": "SolNode118", + "_id": { "$oid": "6632b765b017a7c713798b7a" }, + "Region": 12, + "Seed": 55666, + "Activation": { "$date": { "$numberLong": "1714599781306" } }, + "Expiry": { "$date": { "$numberLong": "1714606906440" } }, + "Node": "SolNode177", "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT3", + "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "661158e57574ca51f042bef2" }, - "Region": 17, - "Seed": 95061, - "Activation": { "$date": { "$numberLong": "1712412901129" } }, - "Expiry": { "$date": { "$numberLong": "1712418905297" } }, - "Node": "SolNode717", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT6", - "Hard": true - }, - { - "_id": { "$oid": "661158e57574ca51f042bef3" }, - "Region": 18, - "Seed": 8310, - "Activation": { "$date": { "$numberLong": "1712412901129" } }, - "Expiry": { "$date": { "$numberLong": "1712417453401" } }, - "Node": "SolNode310", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT6", - "Hard": true - }, - { - "_id": { "$oid": "661159212bf5d98dbd6cea69" }, + "_id": { "$oid": "6632b9458ac1818274ddda0b" }, "Region": 19, - "Seed": 9489, - "Activation": { "$date": { "$numberLong": "1712412961391" } }, - "Expiry": { "$date": { "$numberLong": "1712417868043" } }, - "Node": "SolNode743", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "66115ce1ef6218464e91d0cd" }, - "Region": 19, - "Seed": 18624, - "Activation": { "$date": { "$numberLong": "1712413921981" } }, - "Expiry": { "$date": { "$numberLong": "1712419099840" } }, + "Seed": 83973, + "Activation": { "$date": { "$numberLong": "1714600261939" } }, + "Expiry": { "$date": { "$numberLong": "1714606380527" } }, "Node": "SolNode747", "MissionType": "MT_INTEL", "Modifier": "VoidT5" }, { - "_id": { "$oid": "66115ce1ef6218464e91d0ce" }, + "_id": { "$oid": "6632b9458ac1818274ddda0c" }, "Region": 19, - "Seed": 9876, - "Activation": { "$date": { "$numberLong": "1712413921981" } }, - "Expiry": { "$date": { "$numberLong": "1712420689674" } }, + "Seed": 81928, + "Activation": { "$date": { "$numberLong": "1714600261939" } }, + "Expiry": { "$date": { "$numberLong": "1714607194452" } }, + "Node": "SolNode745", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "6632b9bdd1daa6351bad36ad" }, + "Region": 15, + "Seed": 42990, + "Activation": { "$date": { "$numberLong": "1714600381243" } }, + "Expiry": { "$date": { "$numberLong": "1714604969964" } }, + "Node": "SolNode408", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4" + }, + { + "_id": { "$oid": "6632be31c59bf05b7bbb5ee6" }, + "Region": 3, + "Seed": 97393, + "Activation": { "$date": { "$numberLong": "1714601521285" } }, + "Expiry": { "$date": { "$numberLong": "1714605336249" } }, + "Node": "SolNode79", + "MissionType": "MT_INTEL", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "6632bfd65c66b78046e562ba" }, + "Region": 10, + "Seed": 15857, + "Activation": { "$date": { "$numberLong": "1714601942125" } }, + "Expiry": { "$date": { "$numberLong": "1714606070357" } }, + "Node": "SolNode147", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "6632bfd65c66b78046e562bb" }, + "Region": 16, + "Seed": 72350, + "Activation": { "$date": { "$numberLong": "1714601942125" } }, + "Expiry": { "$date": { "$numberLong": "1714608763423" } }, + "Node": "SettlementNode12", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "6632c1792b55899a8fffb569" }, + "Region": 17, + "Seed": 74019, + "Activation": { "$date": { "$numberLong": "1714602361714" } }, + "Expiry": { "$date": { "$numberLong": "1714609384883" } }, + "Node": "SolNode717", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT6" + }, + { + "_id": { "$oid": "6632c1792b55899a8fffb56a" }, + "Region": 18, + "Seed": 60518, + "Activation": { "$date": { "$numberLong": "1714602361714" } }, + "Expiry": { "$date": { "$numberLong": "1714606980716" } }, + "Node": "SolNode309", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT6" + }, + { + "_id": { "$oid": "6632c31d33bf9e7381e1cdea" }, + "Region": 3, + "Seed": 94787, + "Activation": { "$date": { "$numberLong": "1714602781283" } }, + "Expiry": { "$date": { "$numberLong": "1714609063388" } }, + "Node": "SolNode26", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "6632c31d33bf9e7381e1cdeb" }, + "Region": 2, + "Seed": 82144, + "Activation": { "$date": { "$numberLong": "1714602781283" } }, + "Expiry": { "$date": { "$numberLong": "1714607530322" } }, + "Node": "SolNode2", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "6632c35936f278c71e43049b" }, + "Region": 19, + "Seed": 71024, + "Activation": { "$date": { "$numberLong": "1714602841444" } }, + "Expiry": { "$date": { "$numberLong": "1714609929290" } }, + "Node": "SolNode742", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "6632c35936f278c71e43049c" }, + "Region": 19, + "Seed": 56103, + "Activation": { "$date": { "$numberLong": "1714602841444" } }, + "Expiry": { "$date": { "$numberLong": "1714608628648" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "6632c35936f278c71e43049d" }, + "Region": 19, + "Seed": 99283, + "Activation": { "$date": { "$numberLong": "1714602841444" } }, + "Expiry": { "$date": { "$numberLong": "1714608056869" } }, "Node": "SolNode746", "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5" + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "6632c719e44b85d8b92e973a" }, + "Region": 15, + "Seed": 59039, + "Activation": { "$date": { "$numberLong": "1714603801620" } }, + "Expiry": { "$date": { "$numberLong": "1714607419851" } }, + "Node": "SolNode407", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "6632c719e44b85d8b92e973b" }, + "Region": 13, + "Seed": 46809, + "Activation": { "$date": { "$numberLong": "1714603801620" } }, + "Expiry": { "$date": { "$numberLong": "1714610142237" } }, + "Node": "SolNode216", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "6632c8fa9123bfc8e8fc1b34" }, + "Region": 8, + "Seed": 72126, + "Activation": { "$date": { "$numberLong": "1714604282034" } }, + "Expiry": { "$date": { "$numberLong": "1714608480109" } }, + "Node": "SolNode118", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT3" } ], "GlobalUpgrades": [], @@ -2003,61 +1596,6 @@ "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1711451700000" } }, "EndDate": { "$date": { "$numberLong": "1893496500000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerEasterItemA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 1, - "StartDate": { "$date": { "$numberLong": "1712167200000" } }, - "EndDate": { "$date": { "$numberLong": "1713204000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1713204000000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Events/BunnyEars", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 5000, - "StartDate": { "$date": { "$numberLong": "1712167200000" } }, - "EndDate": { "$date": { "$numberLong": "1713204000000" } }, - "ProductExpiryOverride": { "$date": { "$numberLong": "1713204000000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/FootstepsEasterEggs", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 0, - "RegularOverride": 5000, - "ProductExpiryOverride": { "$date": { "$numberLong": "1713204000000" } }, - "EndDate": { "$date": { "$numberLong": "1713204000000" } }, - "StartDate": { "$date": { "$numberLong": "1712167200000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Events/PremiumBunnyEars", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1712167200000" } }, - "EndDate": { "$date": { "$numberLong": "1713204000000" } } } ], "InGameMarket": { @@ -2069,37 +1607,21 @@ "Icon": "popular", "AddToMenu": true, "Items": [ - "/Lotus/Types/StoreItems/Packages/Tennocon2024StoreItem", - "/Lotus/Types/StoreItems/Packages/2024Bundles/DanteChroniclesPack", - "/Lotus/Types/StoreItems/Packages/SandmanBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/ZephyrDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/StyanaxDeluxeSkinBundle", "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/InarosDeluxeSkinBundle", - "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/EmpyreanSentinelPowerSuit", - "/Lotus/Types/StoreItems/Packages/DuvArmorBundle", - "/Lotus/StoreItems/Powersuits/Sandman/Sandman", + "/Lotus/Types/StoreItems/Packages/VoidAdornmentVIBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/StoreItems/Powersuits/Pagemaster/Pagemaster", + "/Lotus/StoreItems/Weapons/Thanotech/EntratiWristGun/EntratiWristGunWeapon", "/Lotus/StoreItems/Upgrades/Skins/Crowns/DexVinesCrown", + "/Lotus/StoreItems/Powersuits/EntratiMech/ThanoTech", "/Lotus/Types/StoreItems/Packages/EssentialTennokaiModPack", "/Lotus/Types/StoreItems/Packages/EssentialGrimoireModPack", "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst", "/Lotus/Types/StoreItems/Packages/FormaPack" ] }, - { - "CategoryName": "SEASONAL", - "Name": "/Lotus/Language/Store/SeasonalCategoryTitle", - "Icon": "seasonal", - "AddToMenu": true, - "Items": [ - "/Lotus/StoreItems/Upgrades/Skins/Events/PremiumBunnyEars", - "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsEasterEggs", - "/Lotus/StoreItems/Upgrades/Skins/Events/BunnyEars", - "/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerEasterItemA" - ] - }, - { "CategoryName": "NEW", "Name": "/Lotus/Language/Menu/Store_New", "Icon": "new", "Items": [] }, - { "CategoryName": "SALE", "Name": "/Lotus/Language/Menu/Store_Sale", "Icon": "sale", "AddToMenu": true, "Items": [] }, { "CategoryName": "TENNOGEN", "Name": "/Lotus/Language/Menu/Store_Tennogen", @@ -2112,6 +1634,7 @@ "/Lotus/StoreItems/Upgrades/Skins/Liset/SWMantisVammatarSkin" ] }, + { "CategoryName": "SALE", "Name": "/Lotus/Language/Menu/Store_Sale", "Icon": "sale", "AddToMenu": true, "Items": [] }, { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "Items": [] }, { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] }, { @@ -2119,15 +1642,15 @@ "Name": "/Lotus/Language/Store/Store_PremiumBundles", "Icon": "premiumbundles", "Items": [ - "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier3StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess2AccessoryStoreItem", - "/Lotus/Types/StoreItems/Packages/2024Bundles/DanteChroniclesPack", - "/Lotus/Types/StoreItems/Packages/SanctumPack", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier2StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier1StoreItem", + "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", "/Lotus/Types/StoreItems/Packages/Tennocon2024StoreItem", - "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", + "/Lotus/Types/StoreItems/Packages/SanctumPack", + "/Lotus/Types/StoreItems/Packages/2024Bundles/DanteChroniclesPack", "/Lotus/Types/StoreItems/Packages/PowerPack", - "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier2StoreItem", - "/Lotus/Types/StoreItems/Packages/PrimeAccess2Tier1StoreItem" + "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack" ] } ] @@ -2135,260 +1658,260 @@ }, "Invasions": [ { - "_id": { "$oid": "660f2d6d6ff82f997b9b5135" }, - "Faction": "FC_CORPUS", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode191", - "Count": -37515, - "Goal": 48000, - "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "660f2d6d6ff82f997b9b5135" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalStock", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 785536, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/TwinVipersWraithLink", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 488112, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1712314434268" } } - }, - { - "_id": { "$oid": "660f60fd36875e3069fbf65b" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SettlementNode20", - "Count": -30015, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "660f3925f70ace1f3d14d6d2" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 629063, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 133594, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1712283901363" } } - }, - { - "_id": { "$oid": "660fb4313faf9b7b801a006d" }, + "_id": { "$oid": "662e6219e800ab43984a6d53" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode125", - "Count": 17941, + "Node": "SolNode217", + "Count": 40670, + "Goal": 48000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "66268aadeb7d3a5b1bbcfba2" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeBlade", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 800137, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 287178, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1714316370906" } } + }, + { + "_id": { "$oid": "66309115f6b851f7adc61b76" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode203", + "Count": -21746, "Goal": 31000, "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "660fb4313faf9b7b801a006d" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/KarakWraithBarrel", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 538970, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 174417, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1712376482472" } } + "ChainID": { "$oid": "66268aadeb7d3a5b1bbcfba2" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 900420, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 18634, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1714459714271" } } }, { - "_id": { "$oid": "6610b27d4be875653958946c" }, + "_id": { "$oid": "662d4b3200c3c1fad813cc9f" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode100", + "Count": 11580, + "Goal": 46000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "662d4b3200c3c1fad813cc9f" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 844954, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 133693, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1714330057095" } } + }, + { + "_id": { "$oid": "6631653143f4cc7059abcbf5" }, + "Faction": "FC_CORPUS", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode135", + "Count": -49200, + "Goal": 49000, + "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "662e4e2d08ef7fe4cd77d180" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 635635, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/LatronWraithBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 255135, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1714514241718" } } + }, + { + "_id": { "$oid": "663117d9449c4bb3d9a80d0f" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode138", - "Count": -42577, - "Goal": 42000, + "Node": "SolNode99", + "Count": -30029, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "6630e31d2a68d489e1d39091" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 441126, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 129299, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1714493401206" } } + }, + { + "_id": { "$oid": "6631d935b0c888311ed55a2e" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode4", + "Count": -45838, + "Goal": 45000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "ChainID": { "$oid": "6631b28939774a80617f807f" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 460613, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 380782, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712376357290" } } + "AttackerMissionInfo": { "seed": 171004, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 726976, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714542901615" } } }, { - "_id": { "$oid": "6610e9914dd0c2776dae72e2" }, + "_id": { "$oid": "6631d935b0c888311ed55a2f" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode144", - "Count": -15576, + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode72", + "Count": -35380, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 958637, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 500462, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714542901615" } } + }, + { + "_id": { "$oid": "6631f5554b44d3554afc4471" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode21", + "Count": -35604, + "Goal": 35000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 684087, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 911869, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714550101426" } } + }, + { + "_id": { "$oid": "66320b99a21e969ea6954098" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode56", + "Count": -30359, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 727782, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 312302, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714555801552" } } + }, + { + "_id": { "$oid": "66321ad51c0826ed00d5b648" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode43", + "Count": -32561, + "Goal": 32000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 437542, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, + "DefenderMissionInfo": { "seed": 797526, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714559701914" } } + }, + { + "_id": { "$oid": "6632324590b9929e3a3b58a9" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode81", + "Count": -33273, + "Goal": 33000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": true, + "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 898435, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 558573, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714565701723" } } + }, + { + "_id": { "$oid": "66324505089ff47d2753cf80" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_CORPUS", + "Node": "SolNode51", + "Count": -8225, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, + "ChainID": { "$oid": "6631b28939774a80617f807f" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 217759, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 594975, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1712384401125" } } - }, - { - "_id": { "$oid": "6610e9914dd0c2776dae72e3" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode139", - "Count": -46803, - "Goal": 46000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 329663, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 415470, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712384401125" } } - }, - { - "_id": { "$oid": "6610e9914dd0c2776dae72e4" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode141", - "Count": -33472, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 232621, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 826144, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712384401125" } } - }, - { - "_id": { "$oid": "6610ffd658073f0b37c0f7a8" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode146", - "Count": -41411, - "Goal": 41000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 810279, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 620880, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712390102057" } } - }, - { - "_id": { "$oid": "6610ffd658073f0b37c0f7a9" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode140", - "Count": -44304, - "Goal": 44000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 599039, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 880319, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712390102057" } } - }, - { - "_id": { "$oid": "661113c14c1be070369d4bbf" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode147", - "Count": -29824, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 705212, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 393900, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712395201347" } } - }, - { - "_id": { "$oid": "661113c14c1be070369d4bc0" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode135", - "Count": -31741, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 706935, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 421857, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712395201347" } } - }, - { - "_id": { "$oid": "66113b99949aca365857c0b8" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode131", - "Count": -1196, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "6610b27d4be875653958946c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 170233, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 550278, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712405401878" } } - }, - { - "_id": { "$oid": "6610e739cca32da2eed8c5a4" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode216", - "Count": -34540, - "Goal": 34000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 691585, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 645447, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712390710420" } } - }, - { - "_id": { "$oid": "66111ac9da63b2dc15710454" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode209", - "Count": -25978, - "Goal": 41000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 852627, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 745344, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 501963, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712397001768" } } + "DefenderMissionInfo": { "seed": 661912, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1714570501288" } } }, { - "_id": { "$oid": "66113df19d4656356ce1829c" }, + "_id": { "$oid": "663299658e0f10f33681815c" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode217", - "Count": -9951, - "Goal": 38000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode36", + "Count": -7289, + "Goal": 45000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, + "ChainID": { "$oid": "663299658e0f10f33681815c" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 499764, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 518441, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712406001563" } } + "AttackerMissionInfo": { "seed": 687118, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 100342, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714596396298" } } }, { - "_id": { "$oid": "66113df19d4656356ce1829d" }, + "_id": { "$oid": "6632c13d039bf6d83152c50b" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode211", - "Count": -13817, - "Goal": 36000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode99", + "Count": -581, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": false, + "ChainID": { "$oid": "663299658e0f10f33681815c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 871201, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 261021, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1714602301478" } } + }, + { + "_id": { "$oid": "6632c13d039bf6d83152c50c" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode113", + "Count": -72, + "Goal": 32000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "6610e739cca32da2eed8c5a4" }, + "ChainID": { "$oid": "663299658e0f10f33681815c" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 83277, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 776337, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1712406001563" } } + "AttackerMissionInfo": { "seed": 817725, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 876011, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714602301478" } } + }, + { + "_id": { "$oid": "6632c13d039bf6d83152c50d" }, + "Faction": "FC_INFESTATION", + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode68", + "Count": -61, + "Goal": 37000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "663299658e0f10f33681815c" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 509263, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 871562, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1714602301478" } } } ], "HubEvents": [], @@ -2396,7 +1919,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9922504 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9960212 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -2415,70 +1938,42 @@ "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1712322000000" } }, - "Expiry": { "$date": { "$numberLong": "1712494800000" } }, + "Activation": { "$date": { "$numberLong": "1714741200000" } }, + "Expiry": { "$date": { "$numberLong": "1714914000000" } }, "Character": "Baro'Ki Teel", - "Node": "EarthHUB", - "Manifest": [ - { "ItemType": "/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageIvaraAction", "PrimePrice": 75, "RegularPrice": 60000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/DualStat/ElectEventMeleeMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/Expert/WeaponMeleeFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/DualStat/FireEventRifleMod", "PrimePrice": 300, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/Expert/WeaponClipMaxModExpert", "PrimePrice": 280, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Mods/Shotgun/Expert/WeaponShotgunFactionDamageGrineerExpert", "PrimePrice": 350, "RegularPrice": 140000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Corpus/LongGuns/CorpusUMP/PrismaCorpusUMP", "PrimePrice": 400, "RegularPrice": 50000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/Emotes/BaroEmote", "PrimePrice": 0, "RegularPrice": 1000000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoA", "PrimePrice": 310, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoC", "PrimePrice": 175, "RegularPrice": 200000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoL", "PrimePrice": 225, "RegularPrice": 150000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sentinels/Wings/BaroPetWings", "PrimePrice": 400, "RegularPrice": 250000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrismaRazorScarf", "PrimePrice": 350, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetBlueSkySkinInaros", "PrimePrice": 375, "RegularPrice": 340000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/ParazonPoster", "PrimePrice": 100, "RegularPrice": 125000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrismaLotusSigil", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/VoidTrader/ElixisTiberon", "PrimePrice": 315, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Weapons/Staff/TnRibbonStaffSkin", "PrimePrice": 350, "RegularPrice": 275000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Dragon/ChromaAlternateSkin", "PrimePrice": 550, "RegularPrice": 100000 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/EraHypnosisPoster", "PrimePrice": 100, "RegularPrice": 110000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Clan/CNY2023EmblemItem", "PrimePrice": 55, "RegularPrice": 45000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/AshLevarianTiara", "PrimePrice": 550, "RegularPrice": 300000 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnOrokinRifle/GrnOrokinRifleWeapon", "PrimePrice": 675, "RegularPrice": 625000 }, - { "ItemType": "/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint", "PrimePrice": 100, "RegularPrice": 25000 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/FootstepsMaple", "PrimePrice": 15, "RegularPrice": 1000 } - ] + "Node": "SaturnHUB" } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1710439200000" } }, + "Activation": { "$date": { "$numberLong": "1712858400000" } }, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitaniaPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTitaniaGaraPrimeDualPack", "PrimePrice": 10 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVGaraPrimeSinglePack", "PrimePrice": 6 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Fairy/TitaniaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/TitaniaPrimeSyandana", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Archwing/TitaniaPrimeArchwingSkin", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimePangolinSword/PrimePangolinSword", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeCorinth/PrimeCorinth", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Glass/GaraPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Effects/EphemeraGaraPrime", "PrimePrice": 2 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVCastellanPrimeKavatArmor", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeAstilla/AstillaPrimeWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeVolnus/VolnusPrimeWeapon", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TitaniaPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/GaraPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionTitaniaGaraVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionTitaniaGaraVaultBBronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionTitaniaGaraVaultABronze", "RegularPrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionTitaniaGaraVaultBBronze", "RegularPrice": 1 } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVInarosPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVInarosAshPrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAshPrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Sandman/InarosPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMittahkPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeInarosSyandana", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimePanthera/PrimePanthera", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeKaryst/PrimeKrisDagger", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Ninja/AshPrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVUndaPrimeSentAccessories", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/YamakoPrimeScarf", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeCarrierPowerSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeVectis/PrimeVectisRifle", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/InarosPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/AshPrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionInarosAshVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionInarosAshVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionInarosAshVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionInarosAshVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionInarosAshVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionInarosAshVaultBBronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1712858400000" } }, + "Expiry": { "$date": { "$numberLong": "1715277600000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/DualDagger/FangPrimeDagger", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeLex/PrimeLex", "PrimePrice": 1 }, @@ -2596,118 +2091,80 @@ "PreviewHiddenUntil": { "$date": { "$numberLong": "1711648800000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVInarosAshPrimeDualPack" }, - { "Expiry": { "$date": { "$numberLong": "1717696800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1714068000000" } } } + { + "Expiry": { "$date": { "$numberLong": "1717696800000" } }, + "PreviewHiddenUntil": { "$date": { "$numberLong": "1714068000000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" + } ] } ], "VoidStorms": [ { - "_id": { "$oid": "661142a1ff85e5bb21c8a9dd" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1712409601821" } }, - "Expiry": { "$date": { "$numberLong": "1712415001821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "661142a1ff85e5bb21c8a9e1" }, - "Node": "CrewBattleNode529", - "Activation": { "$date": { "$numberLong": "1712409601832" } }, - "Expiry": { "$date": { "$numberLong": "1712415001832" } }, + "_id": { "$oid": "6632b201d92e097d980be781" }, + "Node": "CrewBattleNode536", + "Activation": { "$date": { "$numberLong": "1714602001832" } }, + "Expiry": { "$date": { "$numberLong": "1714607401832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "661142a1ff85e5bb21c8a9e0" }, - "Node": "CrewBattleNode525", - "Activation": { "$date": { "$numberLong": "1712409601829" } }, - "Expiry": { "$date": { "$numberLong": "1712415001829" } }, + "_id": { "$oid": "6632b201d92e097d980be77d" }, + "Node": "CrewBattleNode509", + "Activation": { "$date": { "$numberLong": "1714602001821" } }, + "Expiry": { "$date": { "$numberLong": "1714607401821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "6632b201d92e097d980be77f" }, + "Node": "CrewBattleNode534", + "Activation": { "$date": { "$numberLong": "1714602001827" } }, + "Expiry": { "$date": { "$numberLong": "1714607401827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "6632b201d92e097d980be780" }, + "Node": "CrewBattleNode524", + "Activation": { "$date": { "$numberLong": "1714602001829" } }, + "Expiry": { "$date": { "$numberLong": "1714607401829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "661142a1ff85e5bb21c8a9de" }, + "_id": { "$oid": "6632b201d92e097d980be77e" }, "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1712409601825" } }, - "Expiry": { "$date": { "$numberLong": "1712415001825" } }, + "Activation": { "$date": { "$numberLong": "1714602001825" } }, + "Expiry": { "$date": { "$numberLong": "1714607401825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "661142a1ff85e5bb21c8a9df" }, - "Node": "CrewBattleNode533", - "Activation": { "$date": { "$numberLong": "1712409601827" } }, - "Expiry": { "$date": { "$numberLong": "1712415001827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "661142a1ff85e5bb21c8a9e2" }, - "Node": "CrewBattleNode553", - "Activation": { "$date": { "$numberLong": "1712409601834" } }, - "Expiry": { "$date": { "$numberLong": "1712415001834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "661150b12b9dea1c5aa0efda" }, - "Node": "CrewBattleNode522", - "Activation": { "$date": { "$numberLong": "1712413201821" } }, - "Expiry": { "$date": { "$numberLong": "1712418601821" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "661150b12b9dea1c5aa0efdb" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1712413201825" } }, - "Expiry": { "$date": { "$numberLong": "1712418601825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "661150b12b9dea1c5aa0efdd" }, - "Node": "CrewBattleNode516", - "Activation": { "$date": { "$numberLong": "1712413201829" } }, - "Expiry": { "$date": { "$numberLong": "1712418601829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "661150b12b9dea1c5aa0efde" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1712413201832" } }, - "Expiry": { "$date": { "$numberLong": "1712418601832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "661150b12b9dea1c5aa0efdc" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1712413201827" } }, - "Expiry": { "$date": { "$numberLong": "1712418601827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "661150b12b9dea1c5aa0efdf" }, - "Node": "CrewBattleNode550", - "Activation": { "$date": { "$numberLong": "1712413201834" } }, - "Expiry": { "$date": { "$numberLong": "1712418601834" } }, + "_id": { "$oid": "6632b201d92e097d980be782" }, + "Node": "CrewBattleNode538", + "Activation": { "$date": { "$numberLong": "1714602001834" } }, + "Expiry": { "$date": { "$numberLong": "1714607401834" } }, "ActiveMissionTier": "VoidT4" } ], - "PrimeAccessAvailability": { "State": "PRIME2" }, + "PrimeAccessAvailability": { "State": "PRIME1" }, "PrimeVaultAvailabilities": [false, false, false, false, false], "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Melee/LongSword/LongSword", - "Activation": { "$date": { "$numberLong": "1712343600000" } }, - "Expiry": { "$date": { "$numberLong": "1712437200000" } }, - "Discount": 50, + "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnSpark/GrnSparkRifle", + "Activation": { "$date": { "$numberLong": "1714590000000" } }, + "Expiry": { "$date": { "$numberLong": "1714683600000" } }, + "Discount": 20, "OriginalPrice": 150, - "SalePrice": 75, + "SalePrice": 120, "AmountTotal": 300, - "AmountSold": 59 + "AmountSold": 7 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "661068a9d843605d047732d5" }, + "_id": { "$oid": "662c1a82b8c098235e2441c6" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1712351401323" } }, - "endDate": { "$date": { "$numberLong": "1712956201323" } }, + "startDate": { "$date": { "$numberLong": "1714166402124" } }, + "endDate": { "$date": { "$numberLong": "1714771202124" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2715,10 +2172,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "661068a9d843605d047732d7" }, + "_id": { "$oid": "662c1a82b8c098235e2441c8" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1712351401323" } }, - "endDate": { "$date": { "$numberLong": "1712956201323" } }, + "startDate": { "$date": { "$numberLong": "1714166402124" } }, + "endDate": { "$date": { "$numberLong": "1714771202124" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2726,10 +2183,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "661068a9d843605d047732d6" }, + "_id": { "$oid": "662c1a82b8c098235e2441c7" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1712351401323" } }, - "endDate": { "$date": { "$numberLong": "1712956201323" } }, + "startDate": { "$date": { "$numberLong": "1714166402124" } }, + "endDate": { "$date": { "$numberLong": "1714771202124" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2737,32 +2194,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "661068a9d843605d047732d8" }, + "_id": { "$oid": "662c1a82b8c098235e2441c9" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1712351401323" } }, - "endDate": { "$date": { "$numberLong": "1712956201323" } }, + "startDate": { "$date": { "$numberLong": "1714166402124" } }, + "endDate": { "$date": { "$numberLong": "1714771202124" } }, "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "661068a9d843605d047732d5" }, { "$oid": "661068a9d843605d047732d6" }, { "$oid": "661068a9d843605d047732d7" }], + "subChallenges": [{ "$oid": "662c1a82b8c098235e2441c6" }, { "$oid": "662c1a82b8c098235e2441c7" }, { "$oid": "662c1a82b8c098235e2441c8" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "6610d7fd83453746dfe5c00a" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6610d7fd83453746dfe5c00b" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, + "_id": { "$oid": "6631dde5dcb4ea049fe4e6b3" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2770,65 +2216,76 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6610d7fd83453746dfe5c011" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesEASY", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, + "_id": { "$oid": "6631dde5dcb4ea049fe4e6b4" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6631dde5dcb4ea049fe4e6b6" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6631dde5dcb4ea049fe4e6b5" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6631dde5dcb4ea049fe4e6b7" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6631dde5dcb4ea049fe4e6b9" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], + "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6610d7fd83453746dfe5c00d" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6610d7fd83453746dfe5c00c" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, + "_id": { "$oid": "6631dde5dcb4ea049fe4e6b8" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerHARD", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6610d7fd83453746dfe5c00e" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryMEDIUM", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, - "params": [{ "n": "ScriptParamValue", "v": 4 }], - "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6610d7fd83453746dfe5c00f" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6610d7fd83453746dfe5c010" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsMEDIUM", - "startDate": { "$date": { "$numberLong": "1712379901876" } }, - "endDate": { "$date": { "$numberLong": "1712466301876" } }, + "_id": { "$oid": "6631dde5dcb4ea049fe4e6ba" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsMEDIUM", + "startDate": { "$date": { "$numberLong": "1714544101684" } }, + "endDate": { "$date": { "$numberLong": "1714630501684" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", @@ -2839,13 +2296,13 @@ "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [6.9437749833890825, 36.84556214039393, 0], + "ProjectPct": [40.26388611295677, 68.54612379406962, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Nekros", "Valkyr", "Oberon"] }, - { "Category": "EXC_HARD", "Choices": ["Boar", "Gammacor", "Anku", "Gorgon", "Angstrum"] } + { "Category": "EXC_NORMAL", "Choices": ["Nidus", "Octavia", "Harrow"] }, + { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ @@ -2858,76 +2315,76 @@ ], "SeasonInfo": { "Activation": { "$date": { "$numberLong": "1701284400000" } }, - "Expiry": { "$date": { "$numberLong": "1719187200000" } }, + "Expiry": { "$date": { "$numberLong": "1715785200000" } }, "AffiliationTag": "RadioLegionIntermission9Syndicate", "Season": 11, "Phase": 0, "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001200190000000000000266" }, + "_id": { "$oid": "001200230000000000000319" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1712188800000" } }, - "Expiry": { "$date": { "$numberLong": "1712448000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithMagnetic" + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714608000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithPrimary" }, { - "_id": { "$oid": "001200190000000000000267" }, + "_id": { "$oid": "001200230000000000000320" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1712275200000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySuspendFiveEnemies" + "Activation": { "$date": { "$numberLong": "1714435200000" } }, + "Expiry": { "$date": { "$numberLong": "1714694400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCompleteMissionMelee" }, { - "_id": { "$oid": "001200190000000000000268" }, + "_id": { "$oid": "001200230000000000000321" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1712361600000" } }, - "Expiry": { "$date": { "$numberLong": "1712620800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySlideKills" + "Activation": { "$date": { "$numberLong": "1714521600000" } }, + "Expiry": { "$date": { "$numberLong": "1714780800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyPickUpMods" }, { - "_id": { "$oid": "001200190000000000000256" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions19" + "_id": { "$oid": "001200230000000000000312" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions23" }, { - "_id": { "$oid": "001200190000000000000257" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus19" + "_id": { "$oid": "001200230000000000000313" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus23" }, { - "_id": { "$oid": "001200190000000000000258" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies19" + "_id": { "$oid": "001200230000000000000314" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies23" }, { - "_id": { "$oid": "001200190000000000000259" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteExterminate" + "_id": { "$oid": "001200230000000000000315" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCatchRareVenusFish" }, { - "_id": { "$oid": "001200190000000000000260" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyNightAndDay" + "_id": { "$oid": "001200230000000000000316" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyOpenLockers" }, { - "_id": { "$oid": "001200190000000000000261" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteBeastSlayer" + "_id": { "$oid": "001200230000000000000317" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillExploiterOrb" }, { - "_id": { "$oid": "001200190000000000000262" }, - "Activation": { "$date": { "$numberLong": "1711929600000" } }, - "Expiry": { "$date": { "$numberLong": "1712534400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillOrCaptureRainalyst" + "_id": { "$oid": "001200230000000000000318" }, + "Activation": { "$date": { "$numberLong": "1714348800000" } }, + "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillEnemies" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"lqo1\":{\"mt\":[\"Extermination\",\"Alchemy\",\"Disruption\"],\"mv\":[\"NecramechActivation\",\"VolatileGrenades\",\"DoubleTrouble\"],\"c\":[[\"PointBlank\",\"VoidAberration\"],[\"Deflectors\",\"ShieldedFoes\"],[\"RegeneratingEnemies\",\"Voidburst\"]],\"fv\":[\"ShieldDelay\",\"OperatorLockout\",\"Knifestep\",\"Exhaustion\"]},\"lqo2\":{\"mt\":[\"Alchemy\",\"Defense\",\"Assassination\"],\"mv\":[\"AlchemicalShields\",\"HarshWords\",\"Reinforcements\"],\"c\":[[\"Voidburst\",\"PointBlank\"],[\"ShieldedFoes\",\"RegeneratingEnemies\"],[\"Deflectors\",\"VoidAberration\"]],\"fv\":[\"Starvation\",\"Gearless\",\"Exhaustion\",\"ContactDamage\"]},\"sfn\":550}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"lqo4\":{\"mt\":[\"Survival\",\"Defense\",\"Assassination\"],\"mv\":[\"NecramechLockout\",\"LostInTranslation\",\"InfiniteTide\"],\"c\":[[\"RegeneratingEnemies\",\"VoidAberration\"],[\"ShieldedFoes\",\"Deflectors\"],[\"PointBlank\",\"Voidburst\"]],\"fv\":[\"Armorless\",\"TimeDilation\",\"OperatorLockout\",\"Starvation\"]},\"lqo5\":{\"mt\":[\"Extermination\",\"Disruption\",\"Alchemy\"],\"mv\":[\"GrowingIncursion\",\"FragileNodes\",\"VolatileGrenades\"],\"c\":[[\"AcceleratedEnemies\",\"EMPBlackHole\"],[\"ExplosiveCrawlers\",\"ShieldedFoes\"],[\"AntiMaterialWeapons\",\"RegeneratingEnemies\"]],\"fv\":[\"ContactDamage\",\"Knifestep\",\"AbilityLockout\",\"Exhaustion\"]},\"sfn\":555}" } -- 2.47.2 From e561df1af3a807792417750aeea24d4147b7e4af Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 2 May 2024 23:37:51 +0200 Subject: [PATCH 071/522] Also apply infiniteResources on inventoryController response (#144) --- src/controllers/api/inventoryController.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index bb0f1473..090e7d51 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -34,6 +34,13 @@ const inventoryController: RequestHandler = async (request: Request, response: R const inventoryResponse = toInventoryResponse(inventoryJSON); + if (config.infiniteResources) { + inventoryResponse.RegularCredits = 999999999; + inventoryResponse.TradesRemaining = 999999999; + inventoryResponse.PremiumCreditsFree = 999999999; + inventoryResponse.PremiumCredits = 999999999; + } + if (config.unlockAllMissions) inventoryResponse.Missions = allMissions; if (config.unlockAllQuests) inventoryResponse.QuestKeys = allQuestKeys; -- 2.47.2 From 2c909dcbb87f9d8b4c8a5e58d0c48e1dc08cbb65 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 2 May 2024 23:38:32 +0200 Subject: [PATCH 072/522] feat: getGuild.php (#143) --- src/controllers/api/getGuildController.ts | 7 +++++++ src/routes/api.ts | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 src/controllers/api/getGuildController.ts diff --git a/src/controllers/api/getGuildController.ts b/src/controllers/api/getGuildController.ts new file mode 100644 index 00000000..99cfb3f0 --- /dev/null +++ b/src/controllers/api/getGuildController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const getGuildController: RequestHandler = (_req, res) => { + res.json({}); +}; + +export { getGuildController }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 1d550502..84bff947 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -41,6 +41,7 @@ import { shipDecorationsController } from "@/src/controllers/api/shipDecorations import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; import { setActiveShipController } from "@/src/controllers/api/setActiveShipController"; import { updateThemeController } from "../controllers/api/updateThemeController"; +import { getGuildController } from "@/src/controllers/api/getGuildController"; const apiRouter = express.Router(); @@ -67,6 +68,7 @@ apiRouter.get("/deleteSession.php", deleteSessionController); apiRouter.get("/logout.php", logoutController); apiRouter.get("/setBootLocation.php", setBootLocationController); apiRouter.get("/setActiveShip.php", setActiveShipController); +apiRouter.get("/getGuild.php", getGuildController); // post // eslint-disable-next-line @typescript-eslint/no-misused-promises -- 2.47.2 From 336376248792aa6db632d172e90b48c63cca80a2 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 2 May 2024 23:41:45 +0200 Subject: [PATCH 073/522] chore: aggregateSessions return an empty result (#142) --- static/fixed_responses/aggregateSessions.json | 102 ------------------ 1 file changed, 102 deletions(-) diff --git a/static/fixed_responses/aggregateSessions.json b/static/fixed_responses/aggregateSessions.json index 2ddee41b..05b15312 100644 --- a/static/fixed_responses/aggregateSessions.json +++ b/static/fixed_responses/aggregateSessions.json @@ -1,106 +1,4 @@ { "Results": [ - { "gameModeId": 3228, "count": 12 }, - { "gameModeId": 2022236, "count": 1 }, - { "gameModeId": 1109004, "count": 1 }, - { "gameModeId": 2004450, "count": 1 }, - { "gameModeId": 2129, "count": 4 }, - { "gameModeId": 8763, "count": 1 }, - { "gameModeId": 12183, "count": 1 }, - { "gameModeId": 11167, "count": 1 }, - { "gameModeId": 17710, "count": 1 }, - { "gameModeId": 22237, "count": 1 }, - { "gameModeId": 3509, "count": 1 }, - { "gameModeId": 13006, "count": 1 }, - { "gameModeId": 20801, "count": 2 }, - { "gameModeId": 204014, "count": 1 }, - { "gameModeId": 2061, "count": 1 }, - { "gameModeId": 303025, "count": 1 }, - { "gameModeId": 702001, "count": 12 }, - { "gameModeId": 2305121, "count": 1 }, - { "gameModeId": 1704046, "count": 1 }, - { "gameModeId": 17229, "count": 12 }, - { "gameModeId": 717000, "count": 15 }, - { "gameModeId": 9536, "count": 1 }, - { "gameModeId": 15409, "count": 1 }, - { "gameModeId": 722000, "count": 20 }, - { "gameModeId": 22232, "count": 2 }, - { "gameModeId": 2023, "count": 2 }, - { "gameModeId": 1704008, "count": 1 }, - { "gameModeId": 6042, "count": 1 }, - { "gameModeId": 2305053, "count": 1 }, - { "gameModeId": 2022238, "count": 2 }, - { "gameModeId": 1708001, "count": 1 }, - { "gameModeId": 5004, "count": 1 }, - { "gameModeId": 605088, "count": 1 }, - { "gameModeId": 6032, "count": 1 }, - { "gameModeId": 2022, "count": 2 }, - { "gameModeId": 1216214, "count": 1 }, - { "gameModeId": 3903, "count": 1 }, - { "gameModeId": 6096, "count": 1 }, - { "gameModeId": 2003079, "count": 1 }, - { "gameModeId": 1105121, "count": 1 }, - { "gameModeId": 616020, "count": 1 }, - { "gameModeId": 1204235, "count": 1 }, - { "gameModeId": 9024, "count": 2 }, - { "gameModeId": 703004, "count": 16 }, - { "gameModeId": 706000, "count": 2 }, - { "gameModeId": 201223, "count": 1 }, - { "gameModeId": 1404068, "count": 2 }, - { "gameModeId": 22231, "count": 1 }, - { "gameModeId": 2111019, "count": 1 }, - { "gameModeId": 1407064, "count": 1 }, - { "gameModeId": 701000, "count": 2 }, - { "gameModeId": 703000, "count": 2 }, - { "gameModeId": 1703039, "count": 1 }, - { "gameModeId": 5005, "count": 1 }, - { "gameModeId": 2001094, "count": 1 }, - { "gameModeId": 22236, "count": 2 }, - { "gameModeId": 703003, "count": 1 }, - { "gameModeId": 98000, "count": 30 }, - { "gameModeId": 1419748, "count": 1 }, - { "gameModeId": 21555, "count": 1 }, - { "gameModeId": 22238, "count": 1 }, - { "gameModeId": 1704113, "count": 1 }, - { "gameModeId": 9025, "count": 2 }, - { "gameModeId": 1318307, "count": 1 }, - { "gameModeId": 303034, "count": 1 }, - { "gameModeId": 15401, "count": 1 }, - { "gameModeId": 4904, "count": 1 }, - { "gameModeId": 2305126, "count": 1 }, - { "gameModeId": 2002123, "count": 1 }, - { "gameModeId": 9004, "count": 1 }, - { "gameModeId": 1702109, "count": 1 }, - { "gameModeId": 15408, "count": 1 }, - { "gameModeId": 6013, "count": 1 }, - { "gameModeId": 17706, "count": 2 }, - { "gameModeId": 2005053, "count": 1 }, - { "gameModeId": 1805125, "count": 2 }, - { "gameModeId": 15402, "count": 1 }, - { "gameModeId": 101, "count": 3 }, - { "gameModeId": 2010144, "count": 1 }, - { "gameModeId": 3027, "count": 1 }, - { "gameModeId": 2001, "count": 1 }, - { "gameModeId": 12191, "count": 1 }, - { "gameModeId": 1112189, "count": 1 }, - { "gameModeId": 4450, "count": 1 }, - { "gameModeId": 2011019, "count": 1 }, - { "gameModeId": 12195, "count": 1 }, - { "gameModeId": 8525, "count": 1 }, - { "gameModeId": 12014, "count": 1 }, - { "gameModeId": 12189, "count": 1 }, - { "gameModeId": 10147, "count": 1 }, - { "gameModeId": 11175, "count": 1 }, - { "gameModeId": 1703089, "count": 1 }, - { "gameModeId": 2104, "count": 1 }, - { "gameModeId": 2015409, "count": 1 }, - { "gameModeId": 4058, "count": 1 }, - { "gameModeId": 1416015, "count": 2 }, - { "gameModeId": 1201108, "count": 1 }, - { "gameModeId": 704001, "count": 6 }, - { "gameModeId": 2022230, "count": 1 }, - { "gameModeId": 5100, "count": 1 }, - { "gameModeId": 1703026, "count": 1 }, - { "gameModeId": 1415400, "count": 1 } ] } -- 2.47.2 From 0abd531b7982af25f32be11d3d959bbe2919e010 Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 3 May 2024 15:37:43 +0200 Subject: [PATCH 074/522] feat: Process generic updates (#148) --- .../api/genericUpdateController.ts | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index f77e366f..ab8b8446 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -1,28 +1,12 @@ import { updateGeneric } from "@/src/services/inventoryService"; -import { IGenericUpdate } from "@/src/types/genericUpdate"; import { RequestHandler } from "express"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; -// TODO: Nightwave evidence submission support is the only thing missing. -// TODO: this was added by someone without testing. It may not work. // eslint-disable-next-line @typescript-eslint/no-misused-promises -const genericUpdateController: RequestHandler = async (_request, response) => { - // const accountId = request.query.accountId as string; - - // const [body] = String(request.body).split("\n"); - - // let reply = {}; - // try { - // const update = JSON.parse(body) as IGenericUpdate; - // if (typeof update !== "object") { - // throw new Error("Invalid data format"); - // } - - // reply = await updateGeneric(update, accountId); - // } catch (err) { - // console.error("Error parsing JSON data:", err); - // } - - response.json({}); +const genericUpdateController: RequestHandler = async (request, response) => { + const accountId = request.query.accountId as string; + const update = getJSONfromString(request.body.toString()); + response.json(await updateGeneric(update, accountId)); }; export { genericUpdateController }; -- 2.47.2 From d402cd8cebbf6efb3acd58a6e6fbdc5c8e4e02b5 Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 3 May 2024 20:59:32 +0200 Subject: [PATCH 075/522] Fix prettier workflow (#145) Co-authored-by: Sainan --- .github/workflows/prettier.yml | 8 ++++---- src/controllers/api/genericUpdateController.ts | 2 +- static/fixed_responses/aggregateSessions.json | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 85fcd1fa..a2458fd8 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -1,10 +1,10 @@ name: Prettier -on: - pull_request: - branches: [main] +on: [push] jobs: format: runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Checkout uses: actions/checkout@v4.1.2 @@ -13,7 +13,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v4.0.2 with: - node-version: "18.x" + node-version: "20.x" - run: npm ci - run: npm run prettier - name: Commit changes diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index ab8b8446..4e96ac6e 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -6,7 +6,7 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers"; const genericUpdateController: RequestHandler = async (request, response) => { const accountId = request.query.accountId as string; const update = getJSONfromString(request.body.toString()); - response.json(await updateGeneric(update, accountId)); + response.json(await updateGeneric(update, accountId)); }; export { genericUpdateController }; diff --git a/static/fixed_responses/aggregateSessions.json b/static/fixed_responses/aggregateSessions.json index 05b15312..1d1e7e52 100644 --- a/static/fixed_responses/aggregateSessions.json +++ b/static/fixed_responses/aggregateSessions.json @@ -1,4 +1,3 @@ { - "Results": [ - ] + "Results": [] } -- 2.47.2 From 19d4b4e265f9d039785ca55c1068fd380949f4cd Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 3 May 2024 21:03:11 +0200 Subject: [PATCH 076/522] feat: Update shipDecorations.json (#150) --- static/fixed_responses/shipDecorations.json | 1024 ++++++++++++++++++- 1 file changed, 1008 insertions(+), 16 deletions(-) diff --git a/static/fixed_responses/shipDecorations.json b/static/fixed_responses/shipDecorations.json index 82baf31b..07136cad 100644 --- a/static/fixed_responses/shipDecorations.json +++ b/static/fixed_responses/shipDecorations.json @@ -1,18 +1,1010 @@ [ - { - "ItemCount": 1, - "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Warframes/WarframeAFItem" - }, - { - "ItemCount": 1, - "ItemType": "/Lotus/Types/Items/ShipDecos/KavatBust" - }, - { - "ItemCount": 1, - "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTiger" - }, - { - "ItemCount": 1, - "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/PrideCommunityDisplay" - } + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/7thAnniversaryPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/8thAnniversaryPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteControlBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteDuellistBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteHeavyBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteRogueBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteStrikerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AladVBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AlbrechtPortrait" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AmbulasBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArbitersHexisSyndicateOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArbitersRewardStatue" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Arcade" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloFemaleFollowerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloHealingLamp" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloMaleFollowerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AshBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AshPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AtlasBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AtlasPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BansheeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BansheePrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationG" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationH" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroPedestal" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroPlanter" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukAltBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukPattern" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukPrimePattern" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BekranZaftBucketBroom" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BombastineBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BoredTennoPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothCommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothCommonFishBTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothRareBootTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothRareFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothUncommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothUncommonFishBTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamAHeavyBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamARifleBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamASkateBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamAZanukaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBDisruptorBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBHyenaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBRaptorBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBRiotMoaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCDeceptionBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCHackerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCMoaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCStealthBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDBusterABobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDBusterBBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDBusterCBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDOspreyBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CNY2021Poster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CalibanBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CephalonSudaSyndicateOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingG" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChromaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChromaPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ClemBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Community10YearDasterDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Community10YearRoyalPratDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveHeartOroOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveOroMoonOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveOroOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveOroSunOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemAlloyDrum" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemArgonPegmatite" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemCellArray" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemCircuitryLockbox" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemFerriteDeposit" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemGalliumDeposit" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemMorphicsStabilizer" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemNeuropticMass" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemPlastidCarapace" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemPolymerCase" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemRoboticsLockbox" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemRubedoFormation" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemSalvage" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemSensorArray" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemSporeCulture" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefG" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefH" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefI" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefJ" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefK" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropGreedCoinBlack" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropGreedCoinBlue" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropGreedCoinGold" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropHandShrine" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DarvoBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayCommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayCommonFishBTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayCommonFishCTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayUncommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayUncommonFishBTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/DaughterTokenShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/DeimosHalloweenShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FatherTokenShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyHybridRareA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyHybridUncommonA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyHybridUncommonB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedRareA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedUncommonA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyOrokinLegendaryA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyOrokinRareA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyOrokinUncommonA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/GrandmotherTokenShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropEntratiLamp" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedCrate" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedCystC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedCystD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedPlantA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedPlantC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedPlantE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropOrokinBeamBase" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropOrokinBlock" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropOrokinFloorLight" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/MotherTokenShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/OtakTokenShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/SonTokenShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DominusThraxStatueDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DomsFinalDrink" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxBarrelLarge" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxBarrelSmall" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxContainerA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxContainerB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxContainerC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterHangingPot" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterHangingPotB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterHangingPotC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DominitiusThraxThrone" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxAbacusSmallA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxBirdBath" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxCemeteryMonumentA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxChairB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxChairC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxHayBaleSmall" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxIntPropStoolA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxIntPropTableA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxPodium" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxScaleA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxSingleBedA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxStandingChangeScreen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxTable2mB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DuviriDragonDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/NightwaveDuviriHeroDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/PuzzleSphinxOwl" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DuviriBookQuestReward" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DuviriCommunityPortrait" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EliteAlertShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmberBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmberPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmberVermillionBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmpyreanPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabChairA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabChairB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabChaiseLounge" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightChandelierA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightChandelierB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightChandelierD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightWallCandleA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLoveSeat" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabMachineB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabMachineD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabMachineJ" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabOttoman" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabStool" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabVesselEyeDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/PagemasterOwl" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxCombinedBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxDayBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxNightBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxPrimeDayBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxPrimeNightBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EraHypnosisPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ErraBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/CitrineComboCrystalShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/NeonPrideWings" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/TickerValentineWings" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFChargerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFEngineerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFGruntBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFHealerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFHeavyBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFHellionBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloof" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofBeach" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofMorning" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofRainbow" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofRucksack" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFSniperBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFTankBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburArchwingBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburDexBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburJadeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburObsidianAzuraBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburObsidianBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburOpalBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburPrismaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburProtoBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburUmbraBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExplorationPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FlappyZephyrPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/MaduraiPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/NaramonPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/UnairuPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/VazarinPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/ZenurikPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrameFighterPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostHarkaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostSnowdayBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Gamification2019Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaraBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaraPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GarudaPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GarvLatroxPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaussBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaussPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaussTowerOfAltraDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GlassmakerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GlyphPictureFrame" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrendelBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrendelOrokinDishSet" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrendelPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrimoireAltar" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsBeastMasterBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsChargerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsEngineerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsGruntBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsHealerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsHeavyBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsHellionBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsSniperBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsTankBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerExcavationBossBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerHyekkaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineAlt2DesertBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineAltArcticBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineAltDesertBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineArcticBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineDesertBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerNightwatchMarineBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HarrowBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HarrowPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HarrowQuestKeyOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HeartOfDeimosAlbumCoverPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HildrynPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HydroidBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HydroidPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosCoffin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosSarcophagusBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IndexAutograph" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InfestationPrimeShipMaggot" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InfestationShipMaggot" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ItzalArchwingBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IvaraBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IvaraObsidianBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IvaraPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JackONaughtBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JackalBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KavatBust" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KelaDeThaymBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KhoraBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KhoraPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KineticSiphonTrapLiset" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBust" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowKavatLowPolyPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KuvaMetaBallOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LavosDeviceDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/IvaraLeverianPovisRecordsDecoration" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralCycle" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralFenrus" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralMezzik" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralShyur" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralVonnel" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LimboBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LimboPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropAntenna" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropBallasSwordSheath" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusJug" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusPigmentBasketLarge" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusPigmentBasketSmall" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusStallSignA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusStallSignB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusStallSignC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusVegBasketA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusVegBasketB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusVegBasketC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDrone" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneBaro" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneBeachcomber" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorFive" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorFour" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorOne" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorThree" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorTwo" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneDuviri" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneInfested" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneTenno" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneTwitch" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneYareli" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCooler" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCorpusBasilisk" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCorpusHarpi" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCorpusWeaver" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropDotDMandolin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropEidolonShard" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropFishingBoot" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGlassTreasureBox" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGradientMandolin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerCrewship" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerCutter" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerFlak" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerTaktis" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGyrePulseDecoration" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropHardDrive" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropHologram" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropLotusMandolin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMandolin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMandolinGrineer" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMandolinSentient" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMultiport" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropNarmerMandolin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropNecraMechDrone" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropNoraNightShip" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOldLocker" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOperatorHoodDisplayBlack" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOperatorHoodDisplayDefault" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOperatorHoodDisplayGrey" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOroOperatorSwitch" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOroSigilMarker" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOroSpotlight" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOrokinMaggot" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstArtisanBulbs" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstBirdCage" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstBlubberPileB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstHaulingBalloonD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstLanternGround" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRodentCage" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugBaro" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugBlue" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugGreen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugOrange" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugRed" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugYellow" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstStoneFish" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropPillar" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropReactor" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSUPosters" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSentientCore" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinDuviri" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinDuviriErsatz" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinPrime" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinTwitch" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinZariman" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinZarimanVoid" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSimarisOfferings" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSimarisResearch" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropStep" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropStyanaxSpearShieldDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueADeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueBDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueCDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueDDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetTickerSign" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LoidPortrait" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LokiBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LokiPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LokiVervBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MacheteManicBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MagBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MagPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MagnoliaTree" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank00Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank01Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank02Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank03Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank04Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank05Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank06Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank07Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank08Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank09Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank10Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank11Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank12Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank13Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank14Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank15Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank16Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank17Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank18Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank19Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank20Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank21Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank22Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank23Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank24Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank25Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank26Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank27Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank28Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank29Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank30Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank31Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank32Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank33Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank34Trophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MesaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MesaPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MirageBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MiragePrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MummyQuestVessel" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NekrosBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NekrosPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewLokaSyndicateOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropBallasStaff" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinBench" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinGarbageBin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinMattress" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinPillow" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinStool" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinTable" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropFamilyPortrait" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarBag" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarCube" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarFoodRack" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarPlantA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarPlantB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarPlantC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarTechTablet" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NezhaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NezhaEtchingsTablets" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NezhaPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NidusBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NidusPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NightLegendaryFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NightRareFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NightRareFishBTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Nightwave/GlassmakerShipDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraNightBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraSeasonFourOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraSeasonThreeOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraSeasonTwoOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraWolfOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NovaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NovaPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NyxBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NyxPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OberonBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OberonPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OctaviaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OctaviaPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OculystStatue" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalMadurai" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalNaramon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalUnairu" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalVazarin" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalZenurik" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrame" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameBaro" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameG" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameH" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameI" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrokinFelisBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstHaiLukBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstHokBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstKonzuBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstronHeadStatue" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OwlOrdisStatue" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ParazonPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PedistalPrime" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PerrinSequenceSyndicateOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyCeresBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyDeimosBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyDerelictBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyDuviriBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyEarthBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyErisBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyEuropaBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyJupiterBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyKuvaFortressBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyLuaBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyMarsBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyMercuryBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyNeptuneBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyPhobosBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyPlutoBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophySaturnBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophySednaBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyUranusBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyVenusBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyVoidBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyZarimanBronze" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/BirdPlush" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/DeerPlush" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedCritterCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedCritterRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedCritterUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedKdriveCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedKdriveRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedKdriveUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMaggotCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMaggotRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMaggotUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMergooCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMergooRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMergooUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedNexiferaCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedNexiferaRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedNexiferaUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedPredatorCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedPredatorRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedPredatorUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedZongroCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedZongroRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedZongroUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyMoonMonsterCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushySunMonsterCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/FishPlush" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/GaussPrimePlush" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Plushy2021QTCC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Plushy2022QTCC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyArthur" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBeachKavat" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBolarolaCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBolarolaRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBolarolaUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCarnivalKubrow" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCondrocCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCondrocRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCondrocUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyDesertSkate" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyHorrasqueCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyHorrasqueRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyHorrasqueUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKoala" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKuakaCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKuakaRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKuakaUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonRareDirty" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLotus" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMergooCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMergooRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMergooUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMorningKavat" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyOrdis" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersUncommonDirty" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyRucksackKubrow" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushySawgawCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushySawgawRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushySawgawUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyStoverCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyStoverRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyStoverUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumper" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumperLarge" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumperMedium" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumperMediumDirty" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTicker" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTiger" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVampireKavatCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVampireKavatRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVampireKavatUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkCommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkQTCC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkRare" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkUncommon" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PopcornBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Pride2023Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RedVeilSyndicateOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RelayEmberBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RelayHydroidBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemAlloyPlate" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemArgonCrystal" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemCetusWispTwitch" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemCircuits" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemControlModule" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemFerrite" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemGallium" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemIradite" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemMorphics" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemNanoSpore" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemNeuralSensor" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemNeurodes" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemOrokinCell" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemPlastids" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemPolymerBundle" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemRubedo" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemSalvage" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemVitusEssence" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RevenantPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoDexBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoJadeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SargusRukBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SarynBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SarynPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ScarletSpearAsteroidsDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ScarletSpearPlanetDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SentientMeleeWarriorBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SentientWarriorBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ShawzinPlayableBase" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/StalkerBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SteelMeridianSyndicateOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/StyanaxDeluxeSpearDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TNWKahlBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TNWTeshinBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TNWVesoBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCard2021Tennotober" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCard2022Tennotober" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCard2023Tennotober" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardAsh" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardAtlas" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardCaliban" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardCitrine" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardDagath" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardDante" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardGauss" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardGrendel" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardGyre" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardIvara" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardLavos" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardNezha" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardNova" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardSevagoth" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardStyanax" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConG" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConH" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConI" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConJ" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennotober" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardVoruna" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardYareli" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TeaSet" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021BallasPortrait" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBaseTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBestInShowTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBestPetTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBestWorkmanshipTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayFunniestTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021MerchDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBaseTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBestInShowTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBestPetTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBestWorkmanshipTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayFunniestTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022MerchDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022OrokinPortrait" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2023SoundtrackADisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoGhostTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoMoonTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoMountainTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoShadowTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoStormTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2017Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018PlanterA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018PlanterB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018PlanterC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2019Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2019SimarisDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2020Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2020SimarisDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2023Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2023SoundtrackBDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2024Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TeshinBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TeshinBust" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ThanoMechStatue" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TheLotusBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TitaniaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TitaniaPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TrinityBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TrinityPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TylRegorBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/UmbraDaxPortrait" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/UmbraPedestal" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ValkyrBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ValkyrPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VaubanBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VaubanPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VentKidBoardBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/ClemTennobaumDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/Conquera2023CommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusBothUncommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusCoolCommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusCoolUncommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusWarmCommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusWarmCommonFishBTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusWarmUncommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CrewmanBootTrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/OrokinBothLegendaryFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/OrokinBothRareFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/OrokinCoolRareFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/Pride2024Display" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/PrideCommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUBookAOpen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUContainerCrate" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUCoolantPodA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUFoodBox" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUFoodCans" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUFoodSet" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUSupplyCartA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUSupplyCartB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUSupplyRack" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUToolBox" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUToolBoxLarge" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTruckSmall" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisBothCommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisCoolCommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisCoolUncommonFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterG" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisWarmRareFishATrophy" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/StyanaxCommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintLotusDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintOperatorDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintTeshinDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintUmbraDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TheNewWarKahlCommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TheNewWarTeshinCommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TheNewWarVesoCommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/ValaParvosCommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidBooster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterG" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterH" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterI" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterJ" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterK" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterL" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterM" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterN" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterO" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterP" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VenusBountyTrap" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/YareliCommunityDisplay" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/ArachnoidCamperAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/ArachnoidCamperTerraAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/CrewmanAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/GrineerAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/RopalolystAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/TeralystAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/TeralystBigAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/TeralystRainAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Warframes/ArchwingAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Warframes/WarframeAFItem" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoidPlumeAOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoidPlumeBOrnament" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoltBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoltPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VorBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavat" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatGold" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatWhite" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WispPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WitWSupporterPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WolfBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WraithQuestRewardDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WukongBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WukongPrimeBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WyrmiusPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliAltCoverPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliComicCoverPoster" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliEffectDeco" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliMerulinaBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliQuestComic" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxCeilingLightA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxCineCabinTableA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxGlobeLightOrb" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxGlobeLightOrbJustOrb" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxGlowStickLightA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxHydroPlantStationA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxHydroponicsDoor" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxLunaroCourtBannerLargeA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxLunaroCourtBannerMediumA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxParkSignMapA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPortraitFrame" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPortraitFrameAlbrecht" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPortraitFrameFemale" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpBannerFloorA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpBannerFloorB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpBarrelPlastic" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAa" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAb" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAc" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAd" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAe" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAf" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAg" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAh" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAi" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateLargeA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateLargeAOpen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateLargeAOpenTop" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumAOpen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumAOpenTop" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumBOpen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumBOpenTop" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumCOpen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumCOpenTop" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumDEmpty" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateSmallB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumAOpen" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumAOpenTop" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateTankMediumA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateTankMediumB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCubeStationary" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpDrinkDispenser" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpEngineGeneratorA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpEngineGeneratorALight" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFloatingGlobe" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFloatingGlobeBase" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFloorSealPadA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodCanA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodCanB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodDrinkA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodDrinkB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodDrinkC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodKnifeA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodPouchA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodSpoonA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodTrayA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA60A" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA60B" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA90A" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA90B" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchASingle" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB20A" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB60A" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB60B" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB90A" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB90B" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureChairA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureClassRoomDeskA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerLongA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerLongB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerShortA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerShortB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureTableA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerLongA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerSmallA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerSmallB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerTallA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerTallB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpGarbageBinB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHallwayCenterDivideA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHallwayCenterDivideAPannelA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHangingPlanets" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHangingPlanetsB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenBoiler" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceD" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceE" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceF" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscTrayA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMixer" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenPanA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenSaladSpinner" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenSterilizer" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpLabSetA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpLabSetB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpLabSetC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpPlanterClipOnSmlA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpPlanterClipOnSmlAFoliageB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpShoes" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpStatuePlinthA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpToolBoxStandingNew" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpWoodPanelWallSingleA16mA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpWoodPanelWallSingleEndCapA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpWoodPanelWallSingleEndCapB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueChildHeroicA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueChildHeroicB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueFemaleHeroicA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicDrummerA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicKneelA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueOrokinB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatuePlatformA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxTrophyA" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxTrophyB" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxTrophyC" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZealoidPrelateBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZephyrBobbleHead" }, + { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZephyrPrimeBobbleHead" } ] -- 2.47.2 From eb1f472d4c32c5e86f005e0c2cc7929a23b1f656 Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 3 May 2024 21:04:01 +0200 Subject: [PATCH 077/522] feat: unlockAllScans (#151) --- config.json | 1 + src/controllers/stats/viewController.ts | 9 +- src/types/statTypes.ts | 63 + static/fixed_responses/allScans.json | 14946 ++++++++++++++++++++++ 4 files changed, 15018 insertions(+), 1 deletion(-) create mode 100644 src/types/statTypes.ts create mode 100644 static/fixed_responses/allScans.json diff --git a/config.json b/config.json index d7360dce..7ba523b9 100644 --- a/config.json +++ b/config.json @@ -5,6 +5,7 @@ "version": "35.5.10", "skipStoryModeChoice": true, "skipTutorial": true, + "unlockAllScans": true, "unlockAllMissions": true, "unlockAllQuests": true, "infiniteResources": true, diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index e63d3b1a..482e3fde 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -1,8 +1,15 @@ import { RequestHandler } from "express"; +import { IStatsView } from "@/src/types/statTypes"; +import config from "@/config.json"; import view from "@/static/fixed_responses/view.json"; +import allScans from "@/static/fixed_responses/allScans.json"; const viewController: RequestHandler = (_req, res) => { - res.json(view); + let responseJson: IStatsView = view; + if (config.unlockAllScans) { + responseJson.Scans = allScans; + } + res.json(responseJson); }; export { viewController }; diff --git a/src/types/statTypes.ts b/src/types/statTypes.ts new file mode 100644 index 00000000..cd5b19d9 --- /dev/null +++ b/src/types/statTypes.ts @@ -0,0 +1,63 @@ +export interface IStatsView { + CiphersSolved?: number; + CiphersFailed?: number; + CipherTime?: number; + Weapons?: IWeapon[]; + Enemies?: IEnemy[]; + MeleeKills?: number; + MissionsCompleted?: number; + MissionsQuit?: number; + MissionsFailed?: number; + TimePlayedSec?: number; + PickupCount?: number; + Tutorial?: { [key: string]: ITutorial }; + Abilities?: IAbility[]; + Rating?: number; + Income?: number; + Rank?: number; + PlayerLevel?: number; + Scans?: IScan[]; + Missions?: IMission[]; + Deaths?: number; + HealCount?: number; + ReviveCount?: number; +} + +export interface IAbility { + used: number; + type: string; +} + +export interface IEnemy { + executions?: number; + headshots?: number; + kills?: number; + type: string; + assists?: number; + deaths?: number; +} + +export interface IMission { + highScore: number; + type: string; +} + +export interface IScan { + scans: number; + type: string; +} + +export interface ITutorial { + stage: number; +} + +export interface IWeapon { + equipTime?: number; + hits?: number; + kills?: number; + xp?: number; + assists?: number; + type: string; + headshots?: number; + fired?: number; +} diff --git a/static/fixed_responses/allScans.json b/static/fixed_responses/allScans.json new file mode 100644 index 00000000..94f2bf32 --- /dev/null +++ b/static/fixed_responses/allScans.json @@ -0,0 +1,14946 @@ +[ + { + "scans": 9999, + "type": "/Lotus/Types/Lore/LoreFragmentScanDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/EidolonFragmentScanDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Kubrow/KubrowDen" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/NightCommonPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/NightUnCommonPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/MediumLootCrateGrnA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/DayCommonPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/GftPlantRuksClawMaturePlant" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Orokin/Props/CollectibleSeriesOne" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/GrnExplodingBarrel" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/FighterFragmentScanDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexGDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/RunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/CrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/NoxiousCrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantChromaAvatarDerelict" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantChromaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/SongFragmentScanDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Scouts/ScoutAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Characters/Sentient/Hunhow/HunhowPieces/HunhowHipsWreckageQuest" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/HeavyFemaleGrineerAvatarDesert" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Dragon/DragonPeltAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/PistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionBeastmasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionHealerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionGruntAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionSniperDecoyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/ZenPitcherPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Catbrow/CatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/AncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Khora/Kavat/KhoraKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Grineer/Props/Computers/GrnPanelADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/ShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/GlassFragmentScanDecoA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/GlassFragmentScanDecoB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/GlassFragmentScanDecoC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/GlassFragmentScanDecoD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/GlassFragmentScanDecoE" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Tenno/Props/TitaniaCodexEntryADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/ZenCobraLotusPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/DayUnCommonPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/KnaveLokiDecoyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Tenno/Props/TitaniaCodexEntryBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/NightRarePlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/MediumLootCrateGrnB" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Tenno/Props/TitaniaCodexEntryCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/DayRarePlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/MossGroundCoverAPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Items/Plants/WildGingerBPlant" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBDisruptorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBHyenaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBRiotMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCDeceptionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCSimplifiedHackerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCStealthAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDBusterAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDBusterBAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDBusterCAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamARifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamASkateAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamASkateBAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamAZanukaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientVomvalystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/ChemStrike/ChemStrikeNoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/Props/Computers/PanelADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/LeapingRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/CorpusLootCrateCommon" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/InfestedHiveMode/InfestedTumorObjectiveSpawnedDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarF" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionJetpackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHeavyFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/DecoyCatbrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/UmbraScorchScanDecoA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/UmbraScorchScanDecoB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/UmbraScorchScanDecoC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/QuestSpawnedFragments/UmbraSwordScanDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EvisceratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/SlowBombBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAlarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonJetpackMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonPredatorAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonSkiffPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerDropship/GrineerDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerSkiff/GrineerSkiffShieldUnmannedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerSkiff/GrineerSkiffUnmannedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Eidolon/Resources/FruitTree" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Eidolon/Resources/FruitTreeB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Eidolon/Resources/IraditeContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonFemaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonMaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonMaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/ToxicAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedDrones/CellCarrierDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedDrones/InfestedAttackDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/NaniteCloudBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/SuicideRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Grineer/BrokenLight" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/FerriteContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/PolymerBundleContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/Emplacements/GrnEmplcmntStndng/GrineerEmplacementStanding" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/OrokinExplodingBarrel" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/SuperMoaBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/ShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/SuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/DeployableSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/EliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/HeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/OrokinLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/RubedoContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/Emplacements/GrnDeployableCover/GrineerDeployableCover" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/ForestDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulDrillAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonFemaleForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/NullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionJetpackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionBeastmasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionGruntAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionHealerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/HeavyFemaleGrineerAvatarDesert" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CatMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/MacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/IncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CombatCatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EviseratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EviseratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/StickyRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/IncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/ExplodingBarrel" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/ExplodingBarrelFrozen" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/RifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/CorpusLootCrateUncommon" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/AlloyPlateContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHealingAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BeastMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/PistonSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/VomvalystLure/EidolonVomLureAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Eidolon/EventMixerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Sentinels/SentinelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/SteelMeridianAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Aerolyst/SentientAerolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Brachiolyst/SentientBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/HealingAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/HealingAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedDrones/PoisonDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/JuggernautAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SquadLinkScannerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Symbilyst/SentientSymbilystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientMeleeTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientTrooperNoPowersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerMeleeStaffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressCatMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressMacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressPistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GhostTower/VoidNegationTower/VoidNegationTowerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/BossLechKrilAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/GrineerRoyalGuard/GrineerRoyalGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/OrokinCellContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/GrnSuperMegaExplodingBarrel" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/MorphicsContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/Structural/CurvedGlassDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/AutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/SecurityCameraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/PlastidsContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLichFemaleAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/Structural/CurvedGlassInteriorDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLichAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/CorpusBreakableVent" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerMeleeStaffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/HeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerCorpusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerWorkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/CreatureAvatars/SandRayAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Grineer/DoorSensorDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/Emplacements/GrnDeployableCover/AridGrnDeployableCover" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/HeavyFemaleGrineerAvatarDesertLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/SalvageContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/SentientArtifactMode/SentientArtifactDecoB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DemoDevourerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionMinigunBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulExpiredAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/EventForestDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/CircuitsContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/KubrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/CorpusEliteShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/MacheteWomanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/ChemStrike/ChemStrikeNoxAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Orokin/Props/OroCoverPropSphereACapADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinMoaBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleLancerLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/ArgonCrystalContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/ControlModuleContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/OrokinMobileDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/SargasRuk/Avatars/SargasRukAvatarNew" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/SurveillanceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleSpacemanLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/OrokinSabotageConsoleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/CrpMegaExplodingBarrel" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RiotBipedControlAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/DiscDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/LeechDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/DeployableSpacemanWardenAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MicroHyenaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/SniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/EliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/RareCorpusLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/SuperMoaBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/VacDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpGasCityDoorPowerSupplyTopDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/NanoSporesContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/DiseasedAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/LightningAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpBarrelADynamicDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasBaseFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpExplodingBarrel" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerMacheteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpExplodingBarrelGas" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/DiseasedAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/RusherAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/AutoTurretHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/LeapingRunnerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GraspingCrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/SentientArtifactMode/SentientArtifactDecoA" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/SentientArtifactMode/SentientArtifactDecoC" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/SentientArtifactMode/SentientArtifactDecoD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DemoExpiredAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionNoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/CaptainVorBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Kubrow/KubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RiotBipedPreventionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/SpecialEvents/ArmoredJackal/ArmoredJackalAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/AmmoCrateDynamic" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserDiscBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RiotBipedDispersionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/ShockwaveBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaFireAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/ShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/DeployableSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Ambulas/BossAmbulasRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GrenadeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/SpawningAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FlameLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLarvlingAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseCorePipeAvatarGrineer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpLaserRailParkourCrossBar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasNullifyFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserCannonBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/MediumLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/MeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseCorePipeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Stalker/SentientStalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/MineDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingTesla" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/RoyalJester/RoyalJesterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHeavyFemaleLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinDroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientTeralystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientTeralystRainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAutoRocketTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonCaptureTarget" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonJetpackMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonMortarBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Eidolon/GrineerResourceTheftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GamemodeLockers/EidolonStorageLockerCache" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/DerelictOrokinLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/DroneAvatars/DroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/MineDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/NullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/DiscDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/DeployableSpacemanWardenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/SniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/QuadrupedVIPAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingDetector" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingShield" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/AncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/GrineerGalleon/GrineerSpyVaultF/ConveyorBarrelExplode" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Gamemodes/WardenGrineerHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Gamemodes/WardenGrineerHeavyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EvisceratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/HeavyFemaleGrineerAvatarDesertLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/ExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHealingAncientLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/UltraRareCorpusLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinShieldDroneLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/OrokinDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinMoaBipedLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/CarrierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/SeaLabManicBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/SeaLabManicGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/TylRegor/TylRegorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinNullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/PayloadATVAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpAnchorPointDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpGasCityDoorPowerSupplySide9mDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDiscDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasEliteFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerWorkerAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/CatbrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/RareGrineerLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EvisceratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MiniBoss/QuadRobotMiniBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MiniBoss/ShieldDroneMiniBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingLaser" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/GrineerAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerFortSabAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/MediumLootCrateGrnFortA" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/Emplacements/GrnEmplcmntStndng/GrineerFortressEmplacementStanding" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/CrawlerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpWelderBotMover" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Grineer/Props/Computers/GrnPanelABlackDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/GrineerAutoFlameTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/GrineerAutoRocketTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Grineer/GrineerShrapnelMine" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GrineerBreakableVent" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/MediumLootCrateGrnFortB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EvisceratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerHeavyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/ToxicAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/NaniteCloudBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/SlowBombBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/NeuralSensorContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerCorpusGasImmuneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpCleanbotMover" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/Structural/Vents/DestroyableVent" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamSniperReplicaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/CorpusCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeCarrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeSatyrAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserCannonBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasScientistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSuperMoaBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/GasCityFragmentScanDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerMacheteAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/Emplacements/GrnDeployableCover/SeaLabGrnDeployableCover" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/ShockwaveBipedHackedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/MonkeyKing/HairAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/ShieldDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/VacDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/ShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/NeurodesContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpExplodingBarrelRadiation" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpGasCityDoorPowerSupplySide5mDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Corpus/Emplacement/CrpDeployableCover/CrpDeployableCover" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/MeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Characters/Guild/QuadrapedPrototype/QuadrapedPrototypeDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/QuadRobotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemFullAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemGrenadeHeadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/InfestedGrenadeDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GhostTower/GhostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpDestructableGeneratorDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/GasRepairBotMover" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/SpawningAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/ResourceContainers/GalliumContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/RifleSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/Vip/SniperBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/OroRoboFishADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishCorpusGDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishSolarisDDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusHeavyEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusLaserCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusLaserCannonBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/OrokinKubrow/OrokinKubrowStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Venus/Resources/SVFoliageFungusSmallContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Venus/Resources/VenusTreeContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexDDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Brawler/SummonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewFlameAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/Railjack/GrineerPointOfInterestLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionAncientTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionBoilerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionJuggernautAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionQuadrupedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/InfestedMaggotSpawnPodTwoStageDisruption" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperMedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Eidolon/Resources/GrokdrulContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Eidolon/Resources/Nistlebrush" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAutoMortarTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEviseratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEviseratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonHeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonIncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperTerraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCoolantAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidMicroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusHeavyEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusCombatSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vehicle/WheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/DoubleBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/PayloadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerWorkerAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCaptainHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewEliteRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewEvisceratorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/SentientDevourer/Prefabs/SentientDevourerLootCrateCommon" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewEvisceratorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/Sentient/Attachments/BuffStationGem" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSBoardingDemoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSBoardingMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSBoardingShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCaptainHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewFlameAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/SentientFragmentVomvalystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewEliteRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCaptainHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewEvisceratorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewFlameAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/GrineerDestroyer/GrineerGunnerEmplacement" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/AdmiralPoisonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingShield" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingTesla" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowArmadillo/SnowArmadilloCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowArmadillo/SnowArmadilloStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowBird/SnowBirdCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowBird/SnowBirdCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowBird/SnowBirdStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowCritter/SnowCritterCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowCritter/SnowCritterStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowPredator/SnowPredatorCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowPredator/SnowPredatorCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowPredator/SnowPredatorStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowPredator/SnowPredatorToxicScatDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Venus/Resources/CoolantContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingDetector" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Restoratives/Deployables/LisetTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/AdmiralIceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewEliteRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnBoardingShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/Railjack/GrineerPointOfInterestUncommonLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusSniperBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusPilotBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaSatyrAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaSatyrBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamOspreyBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/GasHazardDetonatorLarge" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/Props/CrpTrainDrone" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDefenseDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/Events/OrbEventGlyphEight" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GamemodeLockers/VenusStorageLockerCache" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/ForestRodent/ForestRodentStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/VorTwo/VorTwoBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingLaser" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/DroneAvatars/DroneAttackAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/AdmiralFireAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/CarabusPoisonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCaptainRollingTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/RailJack/GrnCrewDeployableCover" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexEDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Mimics/MimicGalliumDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Mimics/SentientTrooperMimicAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Mimics/MimicRubedoDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLarvlingFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Ropalolyst/SentientRopalolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RailgunBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseAvatarMoving" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/LegendaryKubrow/LegendaryKubrowCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/LegendaryKubrow/LegendaryKubrowCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/LegendaryKubrow/LegendaryKubrowStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Venus/Resources/SVFoliageFungusLargeContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadSentinelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBeastMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionRoyalGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressCombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEviseratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/BipedRobotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAutoTurretStaticAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/GrnOceanDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/Decorations/MiningMachineObjective" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/Venus/VenusDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vehicle/WheelCarDropshipParkedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGuardSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGuardTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Commanders/Avatars/VenusCommanderAquaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Commanders/Avatars/VenusCommanderOrangeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Ambulas/VenusAmbulasAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaHotrodAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GrineerBreakableFan" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/CartTurretEnergyBallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vehicle/LoboWheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GamemodeLockers/VenusStorageLockerCacheIndoors" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/CartTurretLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDroneAttackAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/GasHazardDetonator" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaAstroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShockwaveBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusSniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/PuzzleOrokinLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EvisceratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusCarrierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Venus/DynamicExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidHungerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Stalker/StalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Ambulas/AmbulasDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Ambulas/AmbulasHackingDroneAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantAllyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperLargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishA" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishF" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishH" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishI" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulDevourerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/LeechDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusOverrideAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShieldDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserDiscBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasNullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSuperMoaBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/AladVPet/AladVPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/AladV/AladBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/RareOrokinLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientTeralystBigAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/PussBlobDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Aristocrats/Avatars/AristocratManagerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Aristocrats/Avatars/MiniMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanEliteAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDualCannonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaGlaxionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyMineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyOxiumAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/GuidedDummyBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/QuadRobotAvatarNEW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaDetectorAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMachinistHammerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDeraAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaGlaxionAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerCorpusAvatarSmall" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMachinistHammerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/PurgatoryGhostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/PurgatoryWarriorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaDetectorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/OdaliskQuest/OdaliskQuestSpecterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentDDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentEDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentFDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentGDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentHDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentIDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanTechAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaBurnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/ReinforcementBeacon/VenusReinforceBeaconDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveEliteBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/OroRoboFishCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishCorpusADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishCorpusCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishCorpusEV1Deco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishSolarisBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishSolarisCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShieldDroneAvatarLead" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/KelaRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/KelaDeThaym/KelaDeThaymAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentJDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/RareGrineerForestLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MiniBoss/TurretQuadMiniBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/InfestedAladV/InfestedAladBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/CorpusReliefFragments/CorpusReliefLoreFragmentKDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GrenadeAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Eidolon/SuppliesSabotageDecoration" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/FairyQuestLokiAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/FairyQuestPaladinAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/FairyQuestSarynAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowRodent/SnowRodentCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowRodent/SnowRodentStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnBoardingMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerChargerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/CoreDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressCombatCatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/Emplacements/GrnDeployableCoverQueen/QueenGrnDeployableCover" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Natural/Foliage/SvMushroomFruitSheathedDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowCritter/SnowCritterCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowRodent/SnowRodentCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/EelFish" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/OstronSeaBird/OstronSeaBirdStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantRhinoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/HekBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/HekDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/PropDrones/PropDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/PropDrones/StrikeDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionHyenaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionLaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionRiotMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Fx/Levels/Orokin/Moon/OMResidualVoidSphereIconDecoSphere" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/Buttons/ButtonOrokin" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/NoxiousCrawlerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveEliteBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/AladVPet/ZanukaHunterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantVoltAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantFrostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackMarineCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantMagAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaLaserAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaTeslaAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyShieldAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanNullifierAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaShieldAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantTrinityAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/QuadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBerserkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantNovaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoMortarAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantEmberAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/SentientDevourer/Prefabs/SentientDevourerLootCrateUncommon" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GraspingCrawlerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SurvivalKuvaExtractorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantYinYangAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipPowerSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GrineerLandmine" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackHeavyMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightWatchShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchCatMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchFlamebladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchGrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchHeavyGunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchManicAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchPowerfistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchPowerfistAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/LightningAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/FrogLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantLokiAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaGunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantExcaliburAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantSarynAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemGunHeadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemMeleeHeadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/InfestedGrenadeStumpDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/TheBusinessLoreFragmentDDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/Events/OrbEventGlyphSeven" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/WeaveMutalist/DecodeSpawnAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/WeaveMutalist/WeaveMutalistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantGunslingerAvatarRelayBoss" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/Events/OrbEventGlyphFourteen" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/SmokefingerLoreFragmentEDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Purify/InfestedConsole" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Purify/Purifier" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerFortAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnBoardingDemoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipGruntAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatarOrokinLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatarOrokin" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/JohnProdman/JohnProdmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Foliage/InfGorgaricusSacDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/BoneBlade/BoneBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Ashen/AshenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/HealingAncientMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/InfestedAttackDroneMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/QuadrupedMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/RunnerMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/ExterminateHiveDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/ExterminateHiveDecoShellProxy" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/LootContainers/InfestedCommonCrateContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/LootContainers/OrokinCommonCrateContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/Resources/InfMapricoTree/InfMapricoTreeDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/Resources/OrbStone/OrbStoneContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/DoorKeyDevice" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedPredator/InfestedPredatorStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/InfestedMicroplanet/InfestedLandmine" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/AncientShellAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/Femur/InfestedFemurAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Ashen/AshenBigAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/DiseasedAncientMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/LeapingSuicideRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/NechroTech/NechroTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/InfestedMicroPlanet/DoorKeyDeviceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/LootContainers/InfestedRareCrateContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/CellCarrierDroneMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Drones/Tendril/InfestedTendrilDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Dropship/InfestedBigDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/JuggernautMicroPlanetCasualAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/PurifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/PurifyMollusk" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/ShrineDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/KeyPiecesEidolonCache" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/KeyPiecesMainTumorDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/CommonInfestedPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/AncientTankMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskShapeshifterCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/FemurAssassinateTargetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/InfestedMicroPlanet/DynamicExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedMergoo/InfestedMergooStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/KeyPiecesTumorDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/HighlandInfKDriveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/HealingAncientMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Fx/Levels/InfestedMicroplanet/WyrmBattle/WyrmDestructibleDecoInfested" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/KeyPiecesVenusCache" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/DiseasedAncientMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/CommonInfestedCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedMaggot/InfestedMaggotScatDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedMaggot/InfestedMaggotStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Fx/Levels/InfestedMicroplanet/WyrmBattle/WyrmDestructibleDecoEntrati" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/UncommonInfestedCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Fx/Levels/InfestedMicroplanet/WyrmBattle/WyrmDestructibleDecoEntratiVault" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskTetherCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedMaggot/InfestedMaggotCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/CommonInfestedMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedCritter/InfestedCritterCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedCritter/InfestedCritterScatDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedCritter/InfestedCritterStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedMaggot/InfestedMaggotCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedMergoo/InfestedMergooCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedMergoo/InfestedMergooCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedPredator/InfestedPredatorCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedPredator/InfestedPredatorToxicScatDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/UncommonInfestedMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/CommonInfestedMergooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/RareInfestedMergooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedPredator/InfestedPredatorCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/UncommonInfestedPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/SwampInfKDriveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/RareInfestedPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/RareInfestedCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Fx/Levels/InfestedMicroplanet/WyrmBattle/WyrmDestructibleDecoInfestedVault" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/InfestedCommonADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/InfestedCommonCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskStopmotionCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskBlindCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/HybridUncommonBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/InfestedCommonBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/InfestedCommonDDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/OrokinUncommonADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyMineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/InfestedUncommonADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/GrottoInfKDriveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/RareInfestedMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/InfestedCritter/InfestedCritterCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/OrokinRareADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDualCannonAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/UncommonInfestedMergooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaIceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDiscAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/TitaniaShrineDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidMoltenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidWraithAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackHeavyMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonGrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveBipedLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/Events/OrbEventGlyphFive" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/TickerLoreFragmentDDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoSwarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Gamemodes/CorruptedWardenAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDiscDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/UltraRareOrokinLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/EelLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/SquidLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaElecAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasBaseFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusHunterShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/QuadrupedMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDroneFreezeCloudAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/InfestedCommonEDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Ashen/AshenEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/InfestedAttackDroneMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterSplitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/HybridRareADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/InfestedRareADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/RunnerMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterTopSplitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/AncientTankMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/HybridUncommonADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/StrikerAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/AreaCasterAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/CrawlerMinionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ControlAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/HeavyAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Operator/UmbraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingLaser" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingShield" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyEliteDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingDetector" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingTesla" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/RogueAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/DuellistAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterAvatarEximus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/RusherAvatarMist" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/FluidSacDevice" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/InfestedMistDeviceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Condrix/SentientCondrixAvatarMechEvent" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/RepeaterDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Ortholyst/SentientOrtholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/CommonUndazoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Dolicholyst/SentientDolicholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/JuggernautAvatarBoss" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EvisceratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/Events/OrbEventGlyphEleven" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Commanders/Avatars/VenusCommanderGreenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedColonistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedColonistAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/InfestedMaggotSpawnPodTwoStage" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilEnemyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRailgunBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterSplitAvatarEximus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusAutoRocketTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/OrokinKubrow/OrokinKubrowCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/SnowArmadillo/SnowArmadilloCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerTreasurerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnBoardingShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/Railjack/Objects/VolatileReactorVentHazardLarge" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaSatyrAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/Pets/LawyerDogPetThrallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/Pets/LawyerDogPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/Pets/LawyerDogPetCloneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsStaffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/Railjack/CorpusPointOfInterestLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPeCloneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpSpecOpsRangedAvatarOne" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsArachnoidAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsFireMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsIceMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpSpecOpsRangedAvatarThree" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/Railjack/CorpusPointOfInterestUncommonLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneBoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneBoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpSpecOpsRiotBipedControlAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceBoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceBoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpAdmiralFlyingAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantFairyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantNyxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneBoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/Railjack/OrokinPOILootCrateUncommon" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/Railjack/OrokinPOILootCrateCommon" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Guild/GasCityRemaster/Props/CrpAnchorPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoBoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoBoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoBoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Turrets/CorpusCargoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Brawler/SummonAvatarNpc" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/Venus/VenusSmallDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/BoneBlade/BoneBladeBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/InfestedSpawnPod" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/LootContainers/OrokinVaultCrateContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusCombatSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/LittleDuckLoreFragmentBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBlowtorchSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/BoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/BoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/BoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusHunterShipEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/SpecialEvents/ArtificerSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/OverrideJammingDrone2Avatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/MoltSuicideRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/OrokinKubrow/OrokinKubrowCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Eidolon/EidolonLephantisAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/InfestedBaitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/BirdOfPrey/BirdOfPreyStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Eidolon/Objects/InfestedPlains/InfestedDropPodSpawnPod" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceBoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpAdmiralFreezeTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/VampireKavat/VampireKavatStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Archwing/StealthJetPack/DistractionDroneWaterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/UltraRareGrineerLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerDropship/GrineerBigDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGhoulAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/RareInfestedNexiferaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantMagicianAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBansheeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantNecroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/LittleDuckLoreFragmentCDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FemaleGrineerTutorialAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShieldLancerAvatarTutorial" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFlameLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressHeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/Zariman/ZarLootCrateCommonA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/Zariman/ZarLootCrateCommonB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/Zariman/ZarLootCrateUncommon" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/Zariman/DoorConsole" + }, + { + "scans": 9999, + "type": "/Lotus/Fx/Gameplay/Corruption/CorruptionVoidDepositDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/DuviriMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressMacheteWomanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Zariman/Avatars/VoidAngelAvatarEndless" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/Barracks" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/ScrapContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/ZarimanBreakableHatchDoorA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Zariman/Avatars/CrpInterrupterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/DuviriRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Zariman/Avatars/VoidAngelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/ZarimanMobileDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaTeslaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Zariman/Avatars/GrnAntiWarframeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBlowtorchSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Zariman/Attachments/GrnAntiWarframeMineDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEviseratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/BirdOfPrey/BirdOfPreyCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/BirdOfPrey/BirdOfPreyCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/ForestRodent/ForestRodentCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/ForestRodent/ForestRodentCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/OstronSeaBird/OstronSeaBirdCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/OstronSeaBird/OstronSeaBirdCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/VampireKavat/VampireKavatCallPointBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfStalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Nightwave/CephalonMaze/GlassmakerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Grineer/Structural/FomorianMothership/FomShipForceFieldDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/SongFragmentPickupDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/LootContainers/OrokinRareCrateContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/LootContainers/OrokinSimpleCrateContainer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerHeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressPistonSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerBlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerEliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerEliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerForestDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerMacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerPistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonAmarAvatarPNW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/Narmer/NarmerLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexPickupDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Gameplay/OroFusexPickupBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/PedestalMachineDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/CoreDefenseBombAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineTwoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrpSpaceDroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Drones/SwarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/CrpPodAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/FlakShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/LaserShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SwarmShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Race/CrpSpaceMine" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/CorpusLootCrateCommonArchwing" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/CorpusLootCrateUncommonArchwing" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerMacheteWomanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonBorealAvatarPNW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Drone/PazuulNarmerPropDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Fairy/FlightAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskMadnessCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/Thanotech/ThanoTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/MaskedFish" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishJ" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishCorpusFDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishCorpusStyleADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/RobofishSolarisADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishE" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishB" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/OstronFishG" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/SpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/WaterMineDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerIncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerWardenGrineerHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerDemoExpiredAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerFlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Deacon/NarmerDeaconCombatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/EnvDangers/GrineerOcean/SharkMover" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Wildlife/OrokinLegendaryADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonHackableDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerBossLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerEidolonAlarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerFlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerGrineerBigDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerGrineerDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerMacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerPistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerThumperLargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GamemodeLockers/NarmerStorageLockerCache" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/SolarisVenus/Wildlife/OroRoboFishBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineThreeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Race/OrbiterMediumAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Race/OrbiterSmallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Race/SupplyShip" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Ostron/Wildlife/FatHeadFish" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/PowerRift/PowerRiftDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/Zariman/ZarLootCrateRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamMoaSatyrAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAttackDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerDeployableSpacemanWardenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Dragon/DragonPeltPrimeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerCorpusCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerRifleSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShieldDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDeraAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShockwaveBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/DefenseAvatarChipper" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerBaseFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMineDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifyFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDualCannonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaGlaxionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonNiraAvatarNewPNW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerArachnoidMicroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerCameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerDiscDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShipMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShipMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerSpecOpsArachnoidAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/LoboNarmerWheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/NarmerVenusDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/NarmerVenusSmallDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/NarmerWheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Turrets/NarmerCartTurretLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShipMoaGlaxionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Turrets/NarmerCartTurretEnergyBallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Grineer/Emplacements/GrnEmplcmntStndng/GrineerEmplacementStandingKahl" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ShadowDuellistAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ShadowStrikerAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlAllyNpcAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlDeployableFlyingSpacemanVariableAllyNpcNoFlightAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptunePlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Turrets/ObeliskTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/RailJack/RJCrewAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/CorpusDestroyer/CorpusDestroyerEmptyAvatarVariantA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressIncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corrupted/Avatars/CorruptedBeastMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corrupted/Avatars/CorruptedCombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerDeployableSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifyFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerVacDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerTechDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerDeployableFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerCarrierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerGuardSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerLeechDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/QuadLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/LevelObjects/GamemodeLockers/NarmerVenusStorageLockerCache" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientVoidTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/BardQuest/BardQuestSentientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/BardQuest/HunhowBardBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusDropshipTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Teshin/TeshinWarWithinAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Sentient/Fighters/SpaceFighterSntAssaultAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Sentient/Fighters/SpaceFighterSntCoilAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/EntratiTechDormantLandscapeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/CorpusDestroyer/CorpusDestroyerAvatarVariantD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/CorpusDestroyer/CorpusDestroyerEmptyAvatarVariantB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterPlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/CorpusRamSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSPlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSPlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/CrpSecurityNode" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Gamemodes/CorruptedWardenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerGuardTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/SolarisRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/CamperBroodMicroDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/CorpusDestroyer/CorpusDestroyerAvatarVariantB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/CorpusIceSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoPlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoPlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/CorpusDestroyer/CorpusDestroyerAvatarVariantC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerChargerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/SmokefingerLoreFragmentDDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/EudicoLoreFragmentBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Lore/Fragments/SolarisFragments/EudicoLoreFragmentEDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerGrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerCarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/Femur/InfestedFemurEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/Undazoa/UndazoaCallPointADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/Undazoa/UndazoaScatDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Conservation/Deimos/Undazoa/UndazoaStartGameplayObject" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/CommonInfestedNexiferaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/RareUndazoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/UncommonUndazoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterTopSplitAvatarEximus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/UncommonInfestedNexiferaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/BoneBlade/BoneBladeEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/JuggernautMicroPlanetCasualEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetMaRooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/SpawningAncientAvatarMiniboss" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/InfestedMicroPlanet/GrineerRifleSurvivorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/InfestedMicroPlanet/GrineerShotgunSurvivorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/MinigunBombardGrineerLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/JuggernautMicroPlanetEscortAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/FluidSacTumor" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskRepellentCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterAvatarVIP" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterSplitAvatarVIP" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterTopSplitAvatarVIP" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/KeyPiecesOrokinCache" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskTeleportCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/InfestedDeadColonistSpawnPod" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/Thanotech/ThanoTechDormantAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/AncientTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/InfestedJetpackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/InfestedJetpackReformDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/InfestedJetpackReformDecoNoHead" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarE" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantGunslingerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/J3Golem/JuniorGolemSpaceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Infested/CarrierLightningSpaceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Infested/CarrierSpaceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Infested/InfestedAttackDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Infestation/InfestedMicroplanet/Gameplay/EntratiObeliskAntibodyCrystal" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/DeployableSpacemanResearcherAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/NechroTech/NechroTechLandscapeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/Thanotech/ThanoTechLandscapeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/CorpusSurvivorsShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrpSpaceDroneAttackAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/FlakShipAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineThreeAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/GrineerSpaceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/LaserDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/GrineerPursuitSpaceShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/GrineerSpaceMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/ShieldSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Turrets/GrineerPursuitTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineTwoAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/LaserShipAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/StasisDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Pods/CombatPodAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/GrineerSpaceMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileSkiffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/LaserDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileShieldSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileShieldSkiffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/ShieldSkiffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/GrineerSpaceDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamPilotGhostBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusPilotAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamOspreyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerFlameLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerPistonSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusOverrideAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseMDArchwingAvatarCorpus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/DefenseAvatarMale" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlEidolonJetpackMarineAllyNpcNoFlightAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptunePlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/CorpusCameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaPacerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamPilotGhostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusPilotAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusOverrideAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDiscAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerBaseFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDualCannonAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/SpaceFighterLaserHunterShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasMeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRifleSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/HexisAllyAvatarDefense" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SpaceFighterChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SpaceFighterLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SpaceFighterPlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/CorpusDestroyer/CorpusDestroyerAvatarVariantA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/GrineerMissilePlatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/LastWishDefense/DoubleDefenseAvatarBlue" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/LastWishDefense/DoubleDefenseAvatarRed" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerVacDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerDefectorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilAllyAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/TheNewWar2021/Part2/CrpWeakExplodingBarrelGas" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerCrewmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/Vip/GhoulDrillVipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/Vip/GhoulDrillVipDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Eidolon/DynamicGhoulHuntExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/GhoulRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/Vip/GhoulSawmanVipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriUndercroftMeleeAvatarEasy" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriAshigaruAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriAshigaruAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxHeavyUndercroftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Shadows/Avatars/DuviriShadowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/SideActivities/Encounters/CombatPatrol/DuviriThraxMeleeGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/SideActivities/Encounters/Shepherding/CattleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Kavat/DuviriConservationCatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamOspreyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/JohnProdman/JohnProdmanAnniversaryAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/ClemAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/KuvaDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRollingDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMineDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/SideActivities/Encounters/CombatTrappedChest/DuviriThraxMeleeGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Mounted/DuviriMountedDaxHorseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/PaxDuviricus/BetrayalShade/PaxBetrayalShadeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/UndercroftDuviriOrokinCarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamMoaAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarDarvo" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/TheNewWar2021/Part2/CrpWeakExplodingBarrel" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightWatchShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfGangsterAlertAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/ChampionDrones/EngineerRollingDroneTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicGrineerAvatarScaled" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/EventDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerChargerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/ChampionDrones/ChampionDroneBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/ChampionPowersuits/EmpTrap" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaGlaxionAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Syndicate/CacheHunt/CacheHuntRescueAvatarFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Entrati/Lab/Gameplay/LabVials/ORKxLabVialHazardADeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Entrati/Lab/Gameplay/LabVials/ORKxLabVialHazardADynamicDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Entrati/Lab/Gameplay/LabVials/ORKxLabVialHazardARegenDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Entrati/Lab/Gameplay/LabVials/ORKxLabVialHazardBDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Entrati/Lab/Gameplay/LabVials/ORKxLabVialHazardBRegenDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/NecramechMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/NecramechRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/ArmTurret/MITWOctopedeArmTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/MITWOctopedeArmAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/MITWOctopedeArmRatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/RepairDrone/RepairDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/EntratiLootCrateCommon" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/EntratiLootCrateUncommon" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/MITWLootCrate" + }, + { + "scans": 9999, + "type": "/Lotus/Objects/Entrati/Lab/Gameplay/Destructible/LootCrates/ORKxLabVialAHealthHangingDeco" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/HandBomber/HandBomberAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/NecramechMeleeLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Slinky/MITWSlinkyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Triangle/MITWSupportTriangleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/EntratiDefense/LoopDefenseAvatarEar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/HandBomber/HandBomberLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/NecramechRangedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Slinky/MITWSlinkyLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/MITWOctopedeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/EntratiLab/Quest/HumanLoidCombatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Entrati/Doppelganger/EntratiDoppelgangerRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechVoidRig/NecramechVoidRigAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/EntratiLootCrateRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Triangle/MITWSupportTriangleLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Entrati/Doppelganger/EntratiDoppelgangerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusOverrideAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/EntratiDefense/LoopDefenseAvatarEye" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechVoidRig/NecramechVoidRigLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Zariman/Avatars/EtherealVoidAngelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/EntratiLootCrateUltraRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PickUps/LootContainers/EntratiLootCrateVault" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/AlchemyNecramechMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/AlchemyNecramechMeleeAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/AlchemyNecramechRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/AlchemyNecramechRangedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/BipedRobotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/AutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/RifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantAllyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/SentientBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedAvatars/ZombieAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/BaseSyndicateAllyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/RunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/DroneAvatars/DroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/CrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/HeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/GrineerAutoTurretBase" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/AncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/GreyStrainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/LightningCrawlerMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/BaseLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/NullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingLaser" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/ShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusArenaAllyBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/BaseDuviriAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/MITWOctopedeArmAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/BaseSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/PegasusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/BaseForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/BaseOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/BaseSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/BaseSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/BaseSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/BaseSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/BaseVampireKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Kubrow/KubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/DiscDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingDetector" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionGruntAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaGunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/BaseBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/ShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingLaser" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/SecurityCameraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnBoardingBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SpaceFighterLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/JuggernautAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/BaseOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/MeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/IncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerSkiff/UnmannedSkiff/FlyingVehicleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/NightwatchGrineerMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SpaceFighterChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SpaceFighterPlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/BasicHubAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RiotBipedBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingShield" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusChampionSkateBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/CatbrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaSatyrAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDualCannonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/DeployableSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarWalkingTesla" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/MacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/PistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/BaseAdmiralAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerOstronMalePassiveMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Aerolyst/SentientAerolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Brachiolyst/SentientBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/InfestedHiveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/TurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/BaseInfestedMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/BaseInfestedPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyMineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/EliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vehicle/WheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusChampionBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/DuviriMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Flying/FlyingDragonBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EviseratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/HeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Gamemodes/WardenGrineerHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperCannonTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterSplitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/MITWOctopedePackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/NechroTech/NechroTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Symbilyst/SentientSymbilystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterBrutalistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterDredgerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterOutriderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterRagerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/GrineerSpaceMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilEnemyAvatarCorrupted" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/LastWishDefense/DoubleDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/KubrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Sentinels/SentinelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/CorpusCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaGlaxionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerDiscDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/ShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/SniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Commanders/Avatars/VenusCommanderBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipBaseSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corrupted/Avatars/CorruptedGrineerBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/DuviriRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriAshigaruAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GfsSecurityCameraBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/HealingAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/NaniteCloudBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/JuggernautAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Ashen/AshenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLichAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/ArmTurret/MITWOctopedeArmTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Ortholyst/SentientOrtholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientMeleeTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterPlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Ships/GrineerRamSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DarvoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SolarisHubAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SteelMeridianAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlDeployableFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/SpaceInvaders/SpaceInvaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Infestation/PodMinionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusOverrideAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/MineDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/VacDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/Venus/VenusSmallDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasBaseFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasNullifyFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAttackDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/BoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/BoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/BoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/OverrideJammingDrone2Avatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/CartTurretEnergyBallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidMicroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CorpusChampionBusterBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/PaxDuviricus/PaxDuviricusDungeonEncounterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/MinigunBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/ChemStrike/ChemStrikeNoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EvisceratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerDropship/GrineerDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfGangsterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfStalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/SpawningAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/AncientTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/NecramechMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/NecramechRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/ExplosiveArm/MITWOctopedeExplosiveArmAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonAmarAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/NarmerKonzuAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Vip/Erra/ErraSentientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Turrets/CorpusSpaceTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Turrets/RailjackTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyDefenseAllies/PerrinColonistAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/EventDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/PayloadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/CatbrowShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/BaseInfestedCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/InfKDriveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/BaseInfestedMergooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/BaseInfestedNexiferaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/BaseUndazoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/BaseDuviriRabbitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseSummonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlDeployableFlyingSpacemanVariableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlEidolonJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlRescueMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Brawler/SummonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Dragon/DragonPeltAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamPilotGhostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RiotBipedControlAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/LeechDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/SuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/Venus/VenusDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/DeployableSpacemanWardenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/PurgatoryWarriorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/Pets/LawyerDogPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShipMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShipMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShipMoaDualCannonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShipMoaGlaxionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/JackalBossTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/CivilianAvatarCaptureEvent" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/SpecialEvents/ArtificerSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDefenseDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Hoverboard/CrpHoverboardUnmannedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusArenaAllyBaseAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusArenaAllyBaseAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusChampionDroneBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusChampionHyenaBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/AuraRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BeastMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerHuntsmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackHeavyMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchPowerfistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionMinigunBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulExpiredAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerFlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerMacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerPistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerThumperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnBoardingDemoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnBoardingMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnBoardingShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCaptainHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCaptainRollingTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewEliteRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewEvisceratorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnCrewFlameAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfSentientStalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperShotgunTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionBeastmasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionHealerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionJetpackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Ashen/AshenBigAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterTopSplitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/MITWOctopedeArmLeftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Arid/NarmerAridRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Deacon/NarmerDeaconPatrolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Drone/NarmerPropDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerMinigunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonNiraAvatarNew" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/NechroTech/FriendlyNechroTechBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/Thanotech/ThanoTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinDroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHeavyFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinMoaBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sector/SectorTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientEidolonGhostCasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientTeralystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Swarmalyst/SentientSwarmalystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientMeleeTrooperNoPowersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterBrutalistEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterDredgerEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterOutriderEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/SpaceFighterRagerEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Turrets/GrineerPursuitTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Stalker/StalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/HexisAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilAllyAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/FrogLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerCorpusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseMDArchwingAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/ExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/EntratiDefense/LoopDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/KubrowShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Race/OrbiterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Owl/BaseDuviriOwlAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Wolf/DuviriWolfAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlDeployableFlyingSpacemanVariableAllyNpcAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlEidolonJetpackMarineAllyNpcAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/AutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Archwing/StealthJetPack/DistractionDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Infestation/PodMinionAvatarPrime" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Yareli/BoardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusShockAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineerCloakAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineerPistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/AladVPet/AladVPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusPilotBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusSniperBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaSatyrBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/SuperMoaBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaDetectorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaTeslaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMachinistHammerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyOxiumAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionHyenaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionLaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionRiotMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/ShieldDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusDropshipTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDiscDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasEliteFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSuperMoaBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusOverrideAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamMoaSatyrAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAttackDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerBaseFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerDeployableFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifyFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDualCannonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaGlaxionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerVacDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/NewWar/Avatars/SentMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/NewWar/Avatars/SentMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/NewWar/Avatars/SentMoaDualCannonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/NewWar/Avatars/SentOspreyShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MicroHyenaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/QuadRobotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/QuadRobotAvatarNEW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpAdmiralBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsArachnoidAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsIceMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingDetector" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingShield" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/ModularSpacemanAvatarSkatingTesla" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/AutoTurretHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/CartTurretLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/VenusSecurityCameraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vehicle/LoboWheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vehicle/WheelCarDropshipParkedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/CorpusCameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusAutoRocketTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusCarrierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDroneFreezeCloudAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusHeavyEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusLaserCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusLaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusCombatSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGuardSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGuardTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGunnerSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeEliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveEliteBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Ambulas/BossAmbulasRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperTerraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidHungerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusArenaAllyBaseAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusChampionBipedRobotBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusChampionRiotBipedRobotBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corrupted/Avatars/CorruptedGrineerFlamebladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corrupted/Avatars/CorruptedGrineerLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/DuviriThraxMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriMeleeAvatarEasy" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriRifleAvatarEasy" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Flying/DragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Mounted/DuviriMountedDaxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/PaxDuviricus/BetrayalShade/PaxBetrayalShadeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Shadows/Avatars/DuviriShadowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Entrati/Doppelganger/EntratiDoppelgangerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatarOrokin" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CatMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CombatCatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerMeleeStaffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackMarineCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightWatchShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/StickyRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/HeavyFemaleGrineerAvatarDesert" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DemoExpiredAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionNoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAlarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEviseratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerDropship/GrineerBigDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerSkiff/GrineerSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerSkiff/GrineerSkiffUnmannedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EvisceratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/HeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/HeavyFemaleGrineerAvatarDesert" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressAuraRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEviseratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressMacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressMinigunBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressPistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulDevourerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulDrillAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/GhoulSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/TutoralMarinerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/InfestedMicroPlanet/GrineerRifleSurvivorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerThumperKahlAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerBladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerEliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerFlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerHeavyFemaleGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerIncendiaryBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerMacheteWomanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerPistonSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShieldLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrineerMissilePlatformTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/BladeSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EliteRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EvisceratorLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerMacheteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/GrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/RifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/ShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/ForestDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/SurveillanceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperLargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperMedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Veilbreaker/Avatars/VenkraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/ElectroLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/GrineerRoyalGuard/GrineerRoyalGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/PropDrones/PropDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Teshin/TeshinAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/VorTwo/VorTwoBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/ChampionDrones/ChampionDroneBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/GrineerChampionSniperDecoyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/DiseasedAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/SpawningAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/ToxicAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GraspingCrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GrenadeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/LightningAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/NoxiousCrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/BoneBlade/BoneBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/Femur/InfestedFemurAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/SlowBombBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedColonistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/LeapingRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/SuicideRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/WeaveMutalist/DecodeSpawnAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedAvatars/InfestedHordeZombieAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Drones/Tendril/InfestedTendrilDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/DiseasedAncientMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/GrenadeCrawlerMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/HealingAncientMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/MeleeAncientMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/NaniteCloudBipedMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/NoxiousCrawlerMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/QuadrupedMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLichFemaleAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/HandBomber/HandBomberAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/AlchemyNecramechMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/AlchemyNecramechRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechVoidRig/NecramechVoidRigAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/ArmTurret/MITWOctopedeArmTurretLeftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/ExplosiveArm/MITWOctopedeExplosiveArmLeftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/BossAgents/MITWOctopedeBossArmAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Leg/BipedalLegs/MITWOctopedeBipedalLegsAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Leg/MITWOctopedeLegAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/MITWOctopedeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Slinky/MITWSlinkyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Triangle/MITWSupportTriangleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Deacon/KahlNarmerDeaconPatrolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Deacon/NarmerDeaconBasicAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Drone/PazuulNarmerPropDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Ships/NarmerVenusDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Ships/NarmerVenusSmallDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonBorealAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/EntratiTechDormantLandscapeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Gamemodes/CorruptedWardenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Gamemodes/OrokinCarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHealingAncientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinRocketBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Aerolyst/EidolonAerolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Brachiolyst/EidolonBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/NewWarKahlTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Ortholyst/EidolonOrtholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Symbilyst/EidolonSymbilystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/EidolonMeleeTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/EidolonTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientTrooperNoPowersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Vip/Erra/ErraSentientFollowerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineThreeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineTwoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/FlakShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/LaserShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrpSpaceDroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/GrineerSpaceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/LaserDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Pods/CombatPodAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileShieldSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/ShieldSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/GrineerMissilePlatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Stalker/SentientStalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantLokiAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantPaladinAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantSarynAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueVIPBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/HexisAllyAvatarDefense" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilAllyAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilAllyAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilDeaconAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantChromaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantGunslingerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Zariman/Avatars/VoidAngelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/OrokinDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Eidolon/GrineerResourceTheftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/GardenerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/DefenseAvatarMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Syndicate/CacheHunt/CacheHuntRescueAvatarFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Venus/DynamicExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/ClemAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/VoidNegationTowerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/Encounters/TownExecution/DaxGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/SideActivities/Encounters/Sentry/SentryDuviriOwlAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/EntratiLab/Quest/HumanLoidLotusNpcAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Catbrow/CatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/CommonInfestedMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/RareInfestedMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/UncommonInfestedMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/CommonInfestedPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/RareInfestedPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/UncommonInfestedPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Kavat/DuviriCatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/TeshinRabbitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/DuvSheepAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonFemaleForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareFemaleForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/ChipperRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlAllyDropShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlAllyNpcAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlDeployableFlyingSpacemanVariableAllyNpcNoFlightAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlEidolonJetpackMarineAllyNpcNoFlightAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlNarmerHellionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlRescueMarineNoMaskAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlRescueMarineRoggAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/KahlSntMeleeTrooperNoPowersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/KahlMissions/KahlTypes/PNWKahlSentientBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/AutoTurretAvatarII" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/BipedRobotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/DroneFlyerAvatarI" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/DroneFlyerAvatarII" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/DroneFlyerAvatarIII" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/EliteSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/HeliosBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/MiniGames/Sentinel/Enemies/BulletHell/MiniBossBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Levels/TheNewWar2021/Part2/RareFemaleForestRodentTNWAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Archwing/StealthJetPack/DistractionDroneWaterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Brawler/SummonAvatarHostile" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Brawler/SummonAvatarNpc" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Dragon/DragonPeltPrimeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Dragon/DragonPeltPvPAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Fairy/FlightAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Infestation/PredasitePodMinionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Khora/Kavat/KhoraKavatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/MonkeyKing/HairAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Operator/UmbraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Sentient/SummonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Trapper/Deployables/ZapAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/Yareli/BoardArsenalAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Powersuits/YinYang/YinYangSwitchAugmentOneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/AreaCasterAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ControlAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/CrawlerMinionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/DuellistAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/GraspingCrawlerMinionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/HeavyAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/RogueAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ShadowControlAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ShadowDuellistAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ShadowHeavyAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ShadowRogueAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/ShadowStrikerAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Acolytes/StrikerAcolyteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusFlyingAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusMrFreezeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusScoutAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetCorpusWardenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGhoulAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineerBeastMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineerMercuryAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineerMiterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineerPyroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetGrineerRollerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CaptureTargets/CaptureTargetMaRooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/AladVPet/ZanukaHunterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCarrusPilotAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusOverrideAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamCorpusSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamMoaSatyrAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamOspreyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamOspreyBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamPilotGhostBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Avatars/AmalgamSniperReplicaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeCarrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Amalgams/Prototypes/Avatars/AmalgamPrototypeSatyrAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Aristocrats/Avatars/AristocratManagerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Aristocrats/Avatars/MiniMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/GuidedDummyBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserCannonBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserDiscBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserDiscBipedAvatarRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RailgunBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RiotBipedDispersionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RiotBipedPreventionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/ShockwaveBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/ShockwaveBipedHackedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/SuperMoaBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/BipedRobot/Vip/BossBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaDetectorAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaLaserAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaShieldAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCombaTeslaAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanEliteAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanNullifierAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipCrewmanTechAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMachinistHammerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDeraAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDiscAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaDualCannonAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipMoaGlaxionAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyMineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/CorpusShipRemastered/Avatars/ShipOspreyShieldAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/DisruptionShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/LuaDisruptionCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/LuaDisruptionHyenaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/LuaDisruptionLaserDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Disruption/Avatars/LuaDisruptionRiotMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/CorpusEliteShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/DiscDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/LeechDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/MineDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/ShieldDroneAvatarAlly" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/ShieldDroneAvatarLeaderAlly" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/AIWeek/VacDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/DroneAvatars/DroneAttackAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/DroneAttackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoMortarAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Drones/Vip/RaptorTwoSwarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusHunterShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/CorpusHunterShipEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Dropship/SpaceFighterLaserHunterShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/DeployableSpacemanWardenAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/PurgatoryGhostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Gamemodes/PurgatoryWarriorRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasBaseFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDeployableSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasDiscDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasEliteFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserCannonBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasLaserDiscBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasMeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasNullifyFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasNullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRailgunBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasRifleSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasScientistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShieldDroneAvatarLead" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/GasCity/Avatars/GasSuperMoaBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/Pets/LawyerDogPetCloneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/Pets/LawyerDogPetThrallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/KuvaLichTransmissionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerTreasurerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/CaptureTargetNarmerCorpusEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/CaptureTargetNarmerCorpusShockAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerArachnoidMicroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerCameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerCarrierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerDeployableSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerGuardSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerGuardTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerLeechDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerMineDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/NarmerSpecOpsArachnoidAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCarrusPilotAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusOverrideAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamCorpusSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamMoaAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamMoaSatyrAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerAmalgamOspreyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerBaseFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerCorpusCarrusPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerDeployableFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerDeployableSpacemanWardenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMineDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerMineDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifyFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerNullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerRifleSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShieldDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDeraAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDiscAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaDualCannonAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShipMoaGlaxionAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShockwaveBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Avatars/PNWNarmerVacDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/LoboNarmerWheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/NarmerVenusDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/NarmerVenusSmallDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/NarmerWheelCarDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Transports/NarmerWheelCarDropshipParkedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Turrets/NarmerAutoTurretHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Turrets/NarmerCartTurretEnergyBallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Turrets/NarmerCartTurretLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Narmer/Turrets/NarmerSecurityCameraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/NewWar/Avatars/SentAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/NewWar/Avatars/SentOspreyOxiumAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/Mini/MiniRobotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MiniBoss/QuadRobotMiniBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MiniBoss/ShieldDroneMiniBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/MiniBoss/TurretQuadMiniBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/TNWJackalBossTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/QuadRobot/TNWQuadRobotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpAdmiralFlyingAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpAdmiralFreezeTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpSpecOpsRangedAvatarOne" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpSpecOpsRangedAvatarThree" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/CrpSpecOpsRiotBipedControlAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsFireMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Avatars/SpecOpsStaffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Captains/CaptainFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Captains/CaptainMaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceBoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceBoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceBoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/DeepSpace/Avatars/DeepSpaceCrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneBoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneBoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneBoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewNullifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Neptune/Avatars/NeptuneCrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoBoardingMeleeSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoBoardingRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoBoardingShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCorpusRailjackFlyingSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewCannonBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewDiscBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpCrewshipCaptainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpRJRailgunBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpRailjackShockwaveBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpTechDeployableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Railjack/Pluto/Avatars/PlutoCrpTechEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/CarrierSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/DeployableSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/MeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/NullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/RifleSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/ShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/SniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/Avatars/MeleeLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/Vip/SniperBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/CivilianAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/EliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Spaceman/SpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/SpecialEvents/ArmoredJackal/ArmoredJackalAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/SpecialEvents/CorpusArtificerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/SpecialEvents/WraithM3PlutoCrpCrewMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/AutoTurretAvatarInvincible" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/AutoTurretCSDemoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/MoaAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/SecurityCameraNarrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Turrets/TurretAvatars/SpaceMissileAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/SolarisQuestDefenseDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/SolarisRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/TurretBoundDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusAutoDroneTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDetronSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDroneAttackAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusDroneFreezeCloudAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusExperimentalRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusHeavyEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusLaserCannonBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusLaserDiscBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingDetector" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingLaser" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingShield" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusModularAvatarWalkingTesla" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusRailgunBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShieldDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShockwaveBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusShotgunSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusSniperSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Avatars/VenusTurretDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Commanders/Avatars/VenusCommanderAquaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Commanders/Avatars/VenusCommanderGreenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Commanders/Avatars/VenusCommanderOrangeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Ambulas/VenusAmbulasAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaAstroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaBurnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaHotrodAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/Hyenas/VenusHyenaPacerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/QuadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/QuadLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusCombatSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusFlyingSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusGrenadierSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyEliteDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeEliteSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusHeavyMeleeSpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveBipedLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Heavies/VenusIcewaveEliteBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Hoverboard/Pilot/CrpHoverboardPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Hoverboard/TnwDrifterBoard/CrpHoverboardDrifterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipPowerSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipRifleSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipShotgunSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Venus/Vip/Avatars/VenusVipSniperSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/AladV/AladBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Ambulas/AmbulasDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Ambulas/AmbulasHackingDroneAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Ambulas/AmbulasPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperBroodTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperSpawnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperTerraTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCamperTerraUndergroundAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidCoolantAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidMoltenAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/ArachnoidWraithAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/CamperCameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Arachnoid/KahlArachnoidHungerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/DefenseTargetAladV/DefenseTargetAladAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaElecAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaFireAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaIceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/Hyena/HyenaPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Vip/InfestedAladV/InfestedAladBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corpus/Zariman/Avatars/CrpInterrupterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/JohnProdman/JohnProdmanAnniversaryAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/JohnProdman/JohnProdmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/Specters/ArenaSpecterEmberAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/Specters/ArenaSpecterFrostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/Specters/ArenaSpecterIvaraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/Specters/ArenaSpecterMagAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/Specters/ArenaSpecterVoltAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/Specters/ArenaSpecterWukongAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamARifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamASentinelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamASkateAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamASkateBAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/CCTeamAZanukaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamA/HeavySuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBDisruptorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBHyenaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamB/CCTeamBRiotMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCDeceptionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCSimplifiedHackerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamC/CCTeamCStealthAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDBusterAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDBusterBAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDBusterCAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/TeamD/CCTeamDOspreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/CorpusChampions/CorpusChampionModularSpacemanBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corrupted/Avatars/CorruptedBeastMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Corrupted/Avatars/CorruptedCombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/DuviriCombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/DuviriThraxRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriUndercroftMeleeAvatarEasy" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Avatars/EclipseDuviriUndercroftRifleAvatarEasy" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriAshigaruAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxHeavyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxHeavyUndercroftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriDaxRangedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dax/Avatars/DuviriQuestAshigaruAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Baby/BabyDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Baby/ChaseBabyDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Baby/SplineBabyDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Flying/AngryDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Flying/DragonVehicleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Flying/HappyDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Flying/JealousDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Flying/SadDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Ground/GroundDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Ground/GroundDragonBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Dragon/Quest/QuestDragonVehicleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Jackal/DuviriJackalBossTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Jackal/QuadRobotAvatarDuviri" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Mounted/DuviriAshigaruMountedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Mounted/DuviriMountedDaxHorseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/PaxDuviricus/BetrayalShade/PaxBetrayalShadeBackstabAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/PaxDuviricus/PaxDuviricusDungeonEncounterWraithAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/PaxDuviricus/PaxDuviricusPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Shadows/Avatars/DuviriShadowExplAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/Turrets/DuviriAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/VoidEclipse/EclipseDuviriDaxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Duviri/UndercroftDuviriOrokinCarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Entrati/Doppelganger/EntratiDoppelgangerRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BladeSawmanAvatarLeaderRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BladeSawmanAvatarTutorial" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/CameraDroneAvatarOrokinLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ElectricStickyRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteRifleLancerAvatarRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EviseratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FemaleGrineerTutorialAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FlameLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerChargerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerChargerAvatarRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerDefectorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerMeleeStaffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerWorkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerWorkerAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerWorkerAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/HeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/IncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackHeavyMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackHeavyMarineAvatarRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/KelaRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/MacheteWomanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicGrineerAvatarScaled" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ManicRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightWatchShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchCarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchCatMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchFlamebladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchGrineerChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchGrineerMarinePistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchHeavyGunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchManicAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/NightwatchPowerfistAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/PistonSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneRadialTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RollingDroneSmokeTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShieldLancerAvatarTutorial" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/ChemStrike/ChemStrikeNoxAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadFullAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadFullRaidAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/DeathSquad/Avatars/DeathSquadFullRelayAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/EvisceratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Desert/HeavyFemaleGrineerAvatarDesertLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DemoDevourerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionChargerFortressAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionMinigunBombardFortressAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionNoxFortressAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Disruption/Avatars/DisruptionRoyalGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAutoMortarTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAutoRocketTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonBlowtorchSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonCameraDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonCaptureTarget" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonEviseratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonGhoulCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonGrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonGroupCoordinatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonHackableDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonHeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonIncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonJetpackMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonJetpackMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonMortarBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonPredatorAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Avatars/EidolonSkiffPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerBomber/BomberSearchDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerBomber/GrineerBomberAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerDropship/DropshipTurret/GrineerDropshipTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerSkiff/GrineerShieldSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/GrineerSkiff/GrineerSkiffShieldUnmannedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipGruntAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipGruntDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/Vip/Avatars/EidolonVipSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Eidolon/VomvalystLure/EidolonVomLureAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/EvisceratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerChargerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerChargerAvatarRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/RifleLancerTutorialAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Forest/HeavyFemaleGrineerAvatarDesertLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBeastMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressBlowtorchSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressCarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressCatMasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressCombatCatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressCombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressEviseratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressFlameLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerChargerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressGrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressHeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressIncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressJetpackMarineCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressMacheteWomanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressPistonSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressRollingDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/FortressSkiffAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/GrineerAutoFlameTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/GrineerAutoRocketTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Fortress/Avatars/GrineerAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Gamemodes/WardenGrineerHeavyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Gamemodes/WardenGrineerHeavyTutorialAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GhostTower/VoidNegationTower/VoidNegationTowerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GhostTower/GhostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/Vip/GhoulDrillVipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/Vip/GhoulDrillVipDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Ghouls/Vip/GhoulSawmanVipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineHeavyFieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineLeaderAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineOrangeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarineShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMeleeLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAvatars/TutoralMarinerIntroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/InfestedMicroPlanet/GrineerShotgunSurvivorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/CaptureTargetNarmerGrineerCloakAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/CaptureTargetNarmerGrineerPistolAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/KahlCombatKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerBlowtorchSawmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerBossLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerEidolonAlarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerGrineerBigDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerGrineerDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerJetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerThumperKahlIntroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerThumperLargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/NarmerThumperMedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerCarrierRifleLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerDemoExpiredAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerDisruptionChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerDisruptionMinigunBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerEliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerFlameLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerForestDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerGrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerHeavyFemaleGrineerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerIncendiaryBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerMacheteWomanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerPistonSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShieldLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Narmer/Avatars/PNWNarmerWardenGrineerHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/AdmiralFireAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/AdmiralIceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/AdmiralLightningAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/AdmiralPoisonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/CarabusPoisonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrineerMissilePlatformBottomTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnGalleonCommanderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Avatars/GrnKeycodeHolderBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSBoardingDemoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSBoardingMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSBoardingShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCaptainHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCaptainRollingTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewEliteRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewEvisceratorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSCrewFlameAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/DeepSpace/GrnDSPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnBoardingDemoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnBoardingMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnBoardingShotgunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCaptainHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCaptainRollingTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewBladeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewEliteRifleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewEvisceratorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnCrewFlameAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/RailJack/Saturn/GrnSaturnPilotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/BladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EliteRifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EvisceratorLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerHeavyAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerMacheteAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerSniperAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/GrineerMarinePistolAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/JetpackMarineAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/RifleLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/SeaLabManicBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/SeaLabManicGrineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/ShotgunLancerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/ArtificerSuicideDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/GrineerArtificerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/VideoDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfGangsterAlertAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfNarmerStalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/SpecialEvents/WolfSentientStalkerAlertAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperLargeCannonTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperLargeShotgunTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperMedCannonTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Thumper/ThumperMedShotgunTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Veilbreaker/Avatars/SpragAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Veilbreaker/Avatars/VenkraFlyingAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/BossLechKrilAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/CaptainVorBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/DoubleBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/HammerTennoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/HeavyMarineLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/MarineLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/MarineLeaderDecoyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Avatars/NinjaLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/PropDrones/PropCCDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/PropDrones/StrikeDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/HekBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Hek/HekDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/JetpackSisters/JetpackSistersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/JetpackSisters/JetpackSistersRaidAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/KelaDeThaym/KelaDeThaymAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/RoyalJester/RoyalJesterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/SargasRuk/Avatars/SargasRukAvatarNew" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Teshin/TeshinShadowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/Teshin/TeshinWarWithinAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/TylRegor/TylRegorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/VorTutorial/VorTutorialAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Vip/VorTwo/DuviriVorTwoBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/Zariman/Avatars/GrnAntiWarframeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GfsSecurityCameraNarrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GfsSecurityCameraNarrowAvatarTop" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GfsSecurityCameraWallMounted" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GfsSecurityCameraWallMountedPvpMap" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Grineer/GrineerAutoTurretStaticAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/ChampionDrones/ChampionHealerDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/ChampionDrones/EngineerRollingDroneTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionBeastmasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionChargerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionEngineerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionGruntAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionHealerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionHeavyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionJetpackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionSniperDecoyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/GrineerChampions/Events/WFGrineerChampionTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/AncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/DiseasedAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/HealingAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/SpawningAncientAvatarMiniboss" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Ancients/ToxicAncientAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/CrawlerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GraspingCrawlerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GrenadeAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/LightningAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/NoxiousCrawlerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/AncientShellAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Emissary/InfestedJetpackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/BoneBlade/BoneBladeBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/BoneBlade/BoneBladeEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/GreyStrain/Femur/InfestedFemurEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedDrones/CellCarrierDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedDrones/InfestedAttackDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedDrones/PoisonDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/NaniteCloudBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/SlowBombBipedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/JuggernautAvatarBoss" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/JuggernautTacAlertAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedAvatarRare" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedColonistAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/RusherAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/RusherAvatarMist" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/Runners/LeapingRunnerAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/WeaveMutalist/DecodeSpawnAvatarEndless" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/AiWeek/WeaveMutalist/WeaveMutalistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionAncientTankAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionBoilerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionJuggernautAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Disruption/Avatars/DisruptionQuadrupedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Eidolon/EidolonLephantisAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Ashen/AshenEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Drones/Tendril/InfestedExplodingTendrilDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Dropship/InfestedBigDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterAvatarEximus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterAvatarVIP" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterSplitAvatarEximus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterSplitAvatarVIP" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterTopSplitAvatarEximus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/Splitter/SplitterTopSplitAvatarVIP" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/AncientTankMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/AncientTankMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/CellCarrierDroneMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/DeployableSpacemanResearcherAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/DiseasedAncientMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/FemurAssassinateTargetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/HealingAncientMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/InfestedAttackDroneMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/InfestedAttackDroneMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/JuggernautMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/JuggernautMicroPlanetCasualAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/JuggernautMicroPlanetCasualEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/JuggernautMicroPlanetEscortAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/LeapingSuicideRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/MinigunBombardGrineerLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/NaniteCloudBipedMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/QuadrupedMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/RunnerMicroPlanetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/InfestedMicroplanet/RunnerMicroPlanetEximusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/SpecialEvents/ArloZealotDual/ArloZealotDualSwordGunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/SpecialEvents/ArloZealotGunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/SpecialEvents/ArloZealotPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/SpecialEvents/ArloZealotSwordAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemFullAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemGrenadeHeadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemGunHeadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/GolemMeleeHeadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/QuadrupedVIPAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/Avatars/ZombieLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/J3Golem/J3GolemSpaceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Infested/Vip/J3Golem/JuniorGolemSpaceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Kingpins/Henchmen/CorpusHenchmenAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLarvlingAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLarvlingFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/KuvaLich/KuvaLichTransmissionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/HandBomber/HandBomberLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechBonewindow/NecramechBonewidowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/AlchemyNecramechMeleeAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechMelee/NecramechMeleeLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/AlchemyNecramechRangedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechRanged/NecramechRangedAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/NecramechVoidRig/NecramechVoidRigLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/ArmTurret/MITWOctopedeArmTurretWallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/MITWOctopedeArmLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/MITWOctopedeArmLeftLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Arm/MITWOctopedeArmRatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/BossAgents/MITWOctopedeBossArmLeftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/BossAgents/MITWOctopedeBossArmTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/BossAgents/MITWOctopedeBossArmTurretLeftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/BossAgents/MITWOctopedeBossBipedalLegsAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/BossAgents/MITWOctopedeBossExplosiveArmAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/BossAgents/MITWOctopedeBossExplosiveArmLeftAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/Variants/MITWOctopedeCrawlersOnlyPackAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Octopede/MITWBountyOctopedeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/RepairDrone/RepairDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Slinky/MITWSlinkyLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/Triangle/MITWSupportTriangleLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/ManInTheWall/VialCarryDrone/VialDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/ArchonErra/ArchonErraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Arid/NarmerAridBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Arid/NarmerAridFlameLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Arid/NarmerAridMinigunAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Arid/NarmerAridShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Deacon/KahlNarmerDeaconAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Deacon/NarmerDeaconCombatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/Deacon/NarmerSamuraiDeaconBasicAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerCrewmanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerDefenseDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerMinigunSecurityNodeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerMoaDiscAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerMoaDualCannonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerOspreyShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerOstronMaleMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerShotgunLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerSolaranMalePassiveMeleeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Narmer/NarmerTechDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonAmarAvatarPNW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonAmarChargeClone" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonAmarCloneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonBorealAvatarPNW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonNiraAvatarNewPNW" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonNiraChaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/Archons/ArchonSummonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/NarmerOstronBeastmasterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/NarmerOstronFishmongerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/NarmerOstronWeaponsmithAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/OstronNewWarFemaleRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/NewWar/OstronNewWarRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/NechroTech/NechroTechLandscapeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/Thanotech/ThanoTechDormantAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/EntratiTech/Thanotech/ThanoTechLandscapeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Entrati/Snake/SnakeTechAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Gamemodes/CorruptedWardenAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/Special/BurrowedMawAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinAutoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHealingAncientLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHeavyFemaleAllyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinHeavyFemaleLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinMoaBipedLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinNullifySpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinNullifySpacemanAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinRocketBombardAllyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinRocketBombardAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinRollingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/OrokinShieldDroneLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleLancerLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Orokin/RifleSpacemanLeaderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/Chimera/BallasAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/Chimera/VoidGhostSlowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/PriestQuest/RellGhostMonsterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/RevenantQuest/TennoReplicantRevenantQuestAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/RogueSentinel/RogueSentinelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/SacrificeQuest/UmbraChaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/SandmanBoss/InarosGolemAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/SandmanBoss/SandmanBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/SandmanBoss/SandmanReplicaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Quests/WraithQuest/CorpusGhostArenaRangedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/RelayEvent/GrineerRelayReconPhase2AAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/RelayEvent/MeleeSpacemanRelayReconPhase2BAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Aerolyst/PNWSentientAerolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/BardQuest/BardQuestSentientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/BardQuest/HunhowBardBossAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Brachiolyst/SentientBrachiolystCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Brachiolyst/SunkillerBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Carriers/SentientCarrierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Clotholyst/SentientClotholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Condrix/SentientCondrixAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Condrix/SentientCondrixAvatarMechEvent" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Dolicholyst/SentientDolicholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientTeralystBigAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientTeralystRainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Eidolon/SentientVomvalystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Mimics/SentientTrooperMimicAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/DrifterFlyingBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/DrifterSentientMeleeTrooperNoPowersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/DrifterSentientTrooperNoPowersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/DrifterSymbilystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/NewWarKahlBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/NewWarKahlOrtholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/NewWarKahlSymbilystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/NewWarSentientGhostOmicrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/NewWar/NewWarSentientOrtholystOmicrusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Ortholyst/SunkillerOrtholystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/RailJack/SentientBoardingBrachiolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/RailJack/SentientBoardingHackerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/RailJack/SentientBoardingNoPowersAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/RailJack/SentientBoardingSymbilystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Ropalolyst/SentientRopalolystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Scouts/ScoutAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Swarmalyst/SentientSwarmalystAttackerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Swarmalyst/SentientSwarmalystDefenderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Symbilyst/SunkillerSymbilystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientGasCityMeleeTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientVoidMeleeTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SentientVoidTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SunkillerMeleeTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Troopers/SunkillerTrooperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Vip/Ballas/BallasSentientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/Vip/Erra/ErraFighterSentientAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/DefendDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/MedusaTowerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Sentients/SentientFragmentVomvalystAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineThreeAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrewMan/JetpackMarineTwoAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Drones/SwarmDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Fighters/SpaceFighterScannerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSPlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/DeepSpace/SpaceFighterDSPlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptuneLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptunePlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Neptune/SpaceFighterNeptunePlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoChargeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoChargeEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoGoxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoLaserEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoPlasmaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Pluto/SpaceFighterPlutoPlasmaEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/Quests/NewWarSpaceFighterPlutoLaserAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/CorpusIceSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/CorpusRamSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/CrpPodAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/FlakShipAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/LaserShipAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SpaceFighterAlarmAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Ships/SwarmShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Turrets/CorpusCargoTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Turrets/ObeliskMissileTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/Turrets/ObeliskTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Corpus/CrpSpaceDroneAttackAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/GrineerSpaceDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/LaserDroneAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Drones/StasisDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSBrutalistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSBrutalistEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSDredgerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSDredgerEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSOutriderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSOutriderEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSRagerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/DeepSpace/SpaceFighterDSRagerEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnBrutalistAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnBrutalistEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnDredgerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnDredgerEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnOutriderAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnOutriderEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnRagerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Fighters/Saturn/SpaceFighterSaturnRagerEliteAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Ships/DeepSpace/GrineerDSRamSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Ships/DeepSpace/SentientGrineerRamSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Ships/Saturn/GrineerSaturnRamSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/GrineerSpaceMarineAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileShieldSkiffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/MissileSkiffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Skiffs/ShieldSkiffAvatarLeader" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/Turrets/GrineerPursuitMissileTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Grineer/GrineerPursuitSpaceShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Infested/CarrierLightningSpaceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Infested/CarrierSpaceDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Infested/InfestedAttackDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Sentient/Fighters/SpaceFighterSntAssaultAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Sentient/Fighters/SpaceFighterSntCoilAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Sentient/Fighters/SplineSpaceFighterSntAssaultAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/SpaceBattles/Sentient/SentientRamSledAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Stalker/LisetStalkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/FairyQuestLokiAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/FairyQuestPaladinAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/FairyQuestSarynAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/KnaveLokiDecoyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/FairyQuest/MoltSuicideRunnerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/OdaliskQuest/OdaliskQuestSpecterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBansheeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBerserkerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantBrawlerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantEmberAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantExcaliburAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantFairyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantFrostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantGunslingerAvatarRelayBoss" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantMagAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantMagicianAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantNecroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantNidusAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantNovaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantNyxAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantPirateAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantRhinoAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantTrinityAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantVoltAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/RelayBoss/TennoReplicantYinYangAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyDefenseAllies/PerrinColonistAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyDefenseAllies/PerrinColonistAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyDefenseAllies/PerrinColonistAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/ColonyRescueAllies/ColonistRescueSteelMeridianVIPAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/CephalonSudaAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/CephalonSudaAllyAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/HexisAllyAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/NewLokaAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/NewLokaAllyAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/PalladinoDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/PerrinAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/PerrinAllyAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilEnemyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilEnemyAvatarCorruptedBow" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilEnemyAvatarCorruptedDagger" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilEnemyAvatarCorruptedSword" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/RedVeilZombieAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/SteelMeridianAllyAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/SyndicateAllies/SteelMeridianAllyAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantAttackDefendAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantChromaAvatarDerelict" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/TennoReplicants/TennoReplicantNomadAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/WF1999Infested/Avatars/Runner1999Avatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/WF1999Infested/Avatars/ToxicAncient1999Avatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/EelLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/SquidLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Water/Grineer/Avatars/WaterMineDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Zariman/Avatars/EtherealVoidAngelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Zariman/Avatars/VoidAngelAvatarEndless" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Enemies/Zariman/ZarimanLootGhostAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarE" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/HiveMode/InfestedHiveAvatarF" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/BaroDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/CoreDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/CoreDefenseBombAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DarvoDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseAvatarMoving" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseChallengeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerCorpusAvatarSmall" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerCorpusGasImmuneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerFortAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseComputerFortSabAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseCorePipeAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseCorePipeAvatarGrineer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseMDArchwingAvatarCorpus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseMDArchwingAvatarGrineer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseSolarisCaptureAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/DefenseSolarisQuestAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/EventForestDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/FriendlyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/FriendlyMaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/GrnOceanDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/InfestedBaitAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/KuvaDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/LureAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/OrokinDefenseAvatarMoving" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/OrokinMobileDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/OrokinSabotageConsoleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/PayloadATVAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/PayloadAvatarCorpus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/PedestalMachineDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SectorDefenseBaseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SectorDefensePointAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SectorGeneratorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SentientAmalgamArtifactAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SquadLinkDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SquadLinkScannerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/SurvivalKuvaExtractorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/TitaniaShrineDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/TutorialShipDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Agents/ZarimanMobileDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Duviri/DuviriDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Duviri/DuviriExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Eidolon/DynamicGhoulHuntExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Eidolon/EventMixerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/EntratiDefense/LoopDefenseAvatarEar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/EntratiDefense/LoopDefenseAvatarEye" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/PerrinColonistUnarmedAvatarA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/PerrinColonistUnarmedAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/PerrinMaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SolarisHubAvatarForeman" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SolarisHubAvatarLabourer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SolarisHubAvatarStrikerOne" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SolarisHubAvatarStrikerThree" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SteelMeridianAvatarB" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SteelMeridianAvatarC" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SteelMeridianAvatarD" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/SteelMeridianAvatarE" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Hub/TNWOrdisAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/InfestedMicroPlanet/DoorKeyDeviceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/InfestedMicroPlanet/DynamicExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/LastWishDefense/DoubleDefenseAvatarBlue" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/LastWishDefense/DoubleDefenseAvatarRed" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/CreaturePets/CreaturePreceptComponents/InfestedCritterSentinelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/CatbrowApartmentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/CatbrowPetAvatarPalladino" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/CatbrowPuppyShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/DecoyCatbrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/GardenerHombaskAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/KubrowApartmentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/KubrowPetKubQuestAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/KubrowPuppyShipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarBeachcomber" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarColourFive" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarColourFour" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarColourOne" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarColourThree" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarColourTwo" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarTenno" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarTwitch" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneAvatarYareli" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneBaroAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropCleaningDroneInfestedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropDuviriCleaningDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropNecraMechDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/LisetPropOrokinMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/ShipPodMinionAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/ShipPodMinionAvatarPrime" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Pets/VascaCubAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/PlayerControllable/KahlCrashDropshipAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/PlayerControllable/VesoDummyBipedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/PlayerControllable/VesoMoaDeraAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/PlayerControllable/VesoOspreyShieldAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisBombardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisLancerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisMoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Quest/SimarisSpacemanAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/RailJack/SpecterKuvaLichAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/RailJack/SpecterKuvaLichFemaleAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/RailJack/SpecterLawyerAAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/ClemRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/DefenseAvatarChipper" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/EventRescueAvatarFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/EventRescueAvatarMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/GhoulRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/MarooRescueAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarCephalonSudaFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarCephalonSudaMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarCorpus" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarDarvo" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarGrineer" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarHexisFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarHexisMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarNewLokaFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarNewLokaMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarPerrinFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarPerrinMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarRedVeilFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarRedVeilMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarSteelMeridianFemale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Rescue/RescueAvatarSteelMeridianMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Syndicate/CacheHunt/CacheHuntRescueAvatarMale" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Venus/ExploiterHeistHarvesterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Venus/LittleDuckSniperAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/Venus/SolarisQuestDynamicExcavatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/ArloDevotedHealerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/ClemSpecterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Friendly/SandRaySpecterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Game/CrewShip/GrineerGalleon/GrineerGalleonTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/BardQuest/ScavengerHuntAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/CrewShipPartsHunt/JammingDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/LotusHand/LotusHandGuideAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/SideActivities/Encounters/CombatTrappedChest/DuviriThraxMeleeGuardAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/SideActivities/Encounters/DuviriPrisonerEncounter/DuviriPrisonerAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Duviri/SideActivities/Encounters/Shepherding/CattleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/EntratiLab/Quest/HumanLoidCombatAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/CorpusSurvivorsShieldDroneAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/EntratiMagicCableAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/InfestedMistDeviceAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/PurifierAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/InfestedMicroplanet/EncounterObjects/ShrineDefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Race/OrbiterMediumAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Race/OrbiterSmallAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/Barracks" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/DefenseAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/TurretBeamAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/TurretBossTetherAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Gameplay/Zariman/EncounterObjects/AssassinateEndless/TurretChainAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/BirdOfPreyAvatarResourceA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonFemaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonMaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareFemaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareMaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonFemaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonMaleBirdOfPreyAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/CommonInfestedCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/RareInfestedCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/UncommonInfestedCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/GrottoInfKDriveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/HighlandInfKDriveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/SwampInfKDriveAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/CommonInfestedMergooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/RareInfestedMergooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/UncommonInfestedMergooAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/CommonInfestedNexiferaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/RareInfestedNexiferaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/UncommonInfestedNexiferaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/CommonUndazoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/RareUndazoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/UncommonUndazoaAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Kavat/DuviriConservationCatbrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/TeshinRabbitOnHandAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Ram/DuviriRamConservationAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/Duviri/Wolf/DuviriWolfConservationAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/BaseKahlForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonMaleForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/ForestRodentAvatarResourceA" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareMaleForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonFemaleForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonMaleForestRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonFemaleLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonMaleLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonPupLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareFemaleLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareMaleLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RarePupLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonFemaleLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonMaleLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonPupLegendaryKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonFemaleOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonMaleOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonPupOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareFemaleOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareMaleOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RarePupOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonFemaleOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonMaleOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonPupOrokinKubrowAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonFemaleOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonMaleOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareFemaleOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareMaleOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonFemaleOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonMaleOstronSeaBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonFemaleSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonMaleSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonPupSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareFemaleSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareMaleSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RarePupSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonFemaleSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonMaleSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonPupSnowArmadilloAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonFemaleSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonMaleSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonPupSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareFemaleSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareMaleSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RarePupSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonFemaleSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonMaleSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonPupSnowBirdAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonFemaleSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonMaleSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonPupSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareFemaleSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareMaleSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RarePupSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonFemaleSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonMaleSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonPupSnowCritterAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonFemaleSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonMaleSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonPupSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareFemaleSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareMaleSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RarePupSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonFemaleSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonMaleSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonPupSnowPredatorAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonFemaleSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonMaleSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareFemaleSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareMaleSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonFemaleSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonMaleSnowRodentAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatCubAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatMaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatCubAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatMaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatCubAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatFemaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatMaleAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/CreatureAvatars/SandRayAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseBAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseCAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseDAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseGearSummonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseNPCAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseSummonGroundDragonAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorseSummonItemAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/NeutralCreatures/Kubrow/KubrowTutorialAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/PvpBots/BasePvpBotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Restoratives/Deployables/LisetLaserTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Restoratives/Deployables/LisetTurretAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Sentinels/SentinelPrecepts/VoidBond/VoidCloneCatbrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Sentinels/SentinelPrecepts/VoidBond/VoidCloneKubrowPetAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Sentinels/SentinelPrecepts/VoidBond/VoidCloneSentinelAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Sentinels/SentinelHubAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Sentinels/SentinelMainMenuAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Types/Vehicles/TNWBalloon/OstBalloonUnmannedAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Upgrades/Mods/Sets/Strain/StrainMaggotAvatar" + }, + { + "scans": 9999, + "type": "/Lotus/Weapons/Infested/Melee/InfBoomerang/InfBoomerangSpawnAvatar" + } +] -- 2.47.2 From f019d36209e5689aa94efc6052171f3aeb478d35 Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 3 May 2024 21:10:05 +0200 Subject: [PATCH 078/522] feat: unlockAllFlavourItems (#149) --- config.json | 3 +- src/controllers/api/inventoryController.ts | 11 +- static/fixed_responses/allFlavourItems.json | 1951 +++++++++++++++++ ...corations.json => allShipDecorations.json} | 0 4 files changed, 1958 insertions(+), 7 deletions(-) create mode 100644 static/fixed_responses/allFlavourItems.json rename static/fixed_responses/{shipDecorations.json => allShipDecorations.json} (100%) diff --git a/config.json b/config.json index 7ba523b9..eb243057 100644 --- a/config.json +++ b/config.json @@ -10,5 +10,6 @@ "unlockAllQuests": true, "infiniteResources": true, "unlockallShipFeatures": true, - "unlockAllShipDecorations": true + "unlockAllShipDecorations": true, + "unlockAllFlavourItems": true } diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 090e7d51..6d208fb3 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -5,9 +5,10 @@ import { Request, RequestHandler, Response } from "express"; import config from "@/config.json"; import allMissions from "@/static/fixed_responses/allMissions.json"; import allQuestKeys from "@/static/fixed_responses/allQuestKeys.json"; -import allShipDecorations from "@/static/fixed_responses/shipDecorations.json"; +import allShipDecorations from "@/static/fixed_responses/allShipDecorations.json"; +import allFlavourItems from "@/static/fixed_responses/allFlavourItems.json"; import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; -import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IShipInventory, IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { const accountId = request.query.accountId; @@ -43,10 +44,8 @@ const inventoryController: RequestHandler = async (request: Request, response: R if (config.unlockAllMissions) inventoryResponse.Missions = allMissions; if (config.unlockAllQuests) inventoryResponse.QuestKeys = allQuestKeys; - - if (config.unlockAllShipDecorations) { - inventoryResponse.ShipDecorations = allShipDecorations; - } + if (config.unlockAllShipDecorations) inventoryResponse.ShipDecorations = allShipDecorations; + if (config.unlockAllFlavourItems) inventoryResponse.FlavourItems = allFlavourItems satisfies IFlavourItem[]; response.json(inventoryResponse); }; diff --git a/static/fixed_responses/allFlavourItems.json b/static/fixed_responses/allFlavourItems.json new file mode 100644 index 00000000..a636bb0d --- /dev/null +++ b/static/fixed_responses/allFlavourItems.json @@ -0,0 +1,1951 @@ +[ + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/BaruukBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/ConqueraBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/CorpusBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/DeadlockBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/FortunaBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/GradientBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/GrineerBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/HelminthBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/LegacyBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/NatahBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/StalkerBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/ZephyrDeluxeBackground" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerA" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerB" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerC" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerD" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerE" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerF" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerG" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerH" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerI" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerJ" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerK" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyA" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyB" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyC" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyD" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyE" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyF" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyG" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineA" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineB" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineC" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineD" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineE" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineF" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineG" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineH" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineI" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseYareli" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/CorpusSounds" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/HelminthSounds" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/LegacySounds" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/ZephyrDeluxeSounds" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/BaruukStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/ConqueraStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/ContrastStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/CorpusStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/DeadlockStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/EquinoxStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/FortunaStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/GrineerStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/HelminthStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/LegacyStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/LotusStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/LunarNewYearStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/NatahStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/NidusStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/OrokinStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/StalkerStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/TennoStyle" }, + { "ItemType": "/Lotus/Interface/Graphics/CustomUI/ZephyrDeluxeStyle" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/CephalonDiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/CorpusIcePlanetDiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/EarthADiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/EidolonADiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/EmpyreanRegionADiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/FortressDiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/OceanADiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/OrokinMoonDiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/SettlementDiorama" }, + { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/VenusADiorama" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsA" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsB" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsC" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsCephalon" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsContest" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsD" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsEntrati" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsFeral" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsHyekka" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsNexus" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsSolstice" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsXmas" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseA" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseB" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseC" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseCephalon" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseContest" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseD" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseEntrati" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseFeral" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseHyekka" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseNexus" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseSolstice" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseVampire" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseXmas" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryA" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryB" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryC" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryCephalon" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryContest" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryD" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryEntrati" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryFeral" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryHyekka" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryNexus" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondarySolstice" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryVampire" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryXmas" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryA" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryB" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryC" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryCephalon" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryContest" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryD" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryEntrati" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryFeral" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryHyekka" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryNexus" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiarySolstice" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryXmas" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorAccents" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorBase" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorSecondary" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorTertiary" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorAccents" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorBase" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorSecondary" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorTertiary" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorAccents" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorBaseA" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorSecondaryA" }, + { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorTertiaryA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowColorWukongPrimeMid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowColorWukongPrimeMundane" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowColorWukongPrimeVibrant" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorCephalonMid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorCephalonMundane" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorCephalonVibrant" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDrahkMid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDrahkMundane" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDrahkVibrant" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfAccent" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfMid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfMundane" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfVibrant" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorFeralMid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorFeralMundane" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorFeralVibrant" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorKavatBase" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorKavatSecondary" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorKavatTertiary" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidB" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidC" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidContest" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidD" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidDiamond" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidE" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidF" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidG" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidH" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidI" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidJ" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidK" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidLiquid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneB" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneC" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneContest" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneD" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneDiamond" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneE" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneF" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneG" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneH" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneI" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneJ" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneK" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneLiquid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeC" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeD" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeTraderMidA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeTraderMundaneA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeTraderVibrantA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorSolsticeMid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorSolsticeMundane" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorSolsticeVibrant" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantB" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantC" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantContest" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantD" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantDiamond" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantE" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantF" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantG" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantH" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantI" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantJ" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantK" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantLiquid" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMidA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMidB" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMundaneA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMundaneB" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasVibrantA" }, + { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasVibrantB" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackA" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackB" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackC" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackD" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackE" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardEDMPackA" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardGrineerPackA" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardGrineerPackB" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardHipHopPackA" }, + { "ItemType": "/Lotus/Types/Game/NotePacks/BardTennoPackA" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/ArachnoidCamperPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/ArchwingArmedPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/ArchwingUnarmedPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/CorpusCrewmanGunPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/CorpusCrewmanReactPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/GrineerGunPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/GrineerReactPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/RopalolystPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/TeralystPoseSet" }, + { "ItemType": "/Lotus/Types/Game/PoseSets/WarframeGunPoseSet" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/BaroWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/CorpusWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/GrineerQueensWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/GrineerWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/LavosAlchemistWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/NoraWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/OstronWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateAHWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateCSWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateNLWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicatePSWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateRVWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateSMWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/TennoWallpaper" }, + { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/TwitchPrimeWallpaper" }, + { "ItemType": "/Lotus/Types/Items/Arcade/FlappyArcadeItem" }, + { "ItemType": "/Lotus/Types/Items/Arcade/FrameFighterArcadeItem" }, + { "ItemType": "/Lotus/Types/Items/Arcade/WyrmiusArcadeItem" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHCombatEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHEngineeringEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHGunneryEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHPilotingEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHSurvivabilityEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSCombatEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSEngineeringEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSGunneryEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSPilotingEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSSurvivabilityEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLCombatEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLEngineeringEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLPilotingEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLSurvivabilityEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/PSPilotingEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/PSSurvivabilityEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/RVEngineeringEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/RVPilotingEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMCombatEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMGunneryEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMPilotingEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMSurvivabilityEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/AgreeEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/ArbitrationEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/BaroEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/BarterEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/BowEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/BragEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/CaptainEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/ClapEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Dance2Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Dance3Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Dance4Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Dance5Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceArsenioEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceBarelyDancingEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceElbowWave" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceHandsOnHipsEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceHandsUp" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceHeadphonesBop" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceLassoSidestep" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceLegTapEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceOneHandHipLookLeftRight" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceOneHandHipPump" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceOutUpOutBackEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceReachAcrossHips" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceSideStepCrossEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceSideStepTurn" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DanceTurnReverseTurn" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DeepBowEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/DisagreeEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/FarewellEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/FollowEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/GaussGonnaGetchaEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HandshakeEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeCeresEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeDeimosEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeDerelictEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeDuviriEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeEarthEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeErisEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeEuropaEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeJupiterEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeKuvaFortressEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeLuaEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeMarsEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeMercuryEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeNeptuneEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodePhobosEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodePlutoEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeSaturnEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeSednaEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeUranusEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeVenusEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeVoidEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeZarimanEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/HeirloomEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Kata2Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Kata3Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Kata5Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/KataEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/KhoraPrimeEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/KneelEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/KneelOneLegEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/LNY2023Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/LNY2024DragonEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/LeftHeartEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/LegionSaluteEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/MeditateEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/ParazonEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/PunctualityEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Rank30Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/RightHeartEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/ShawzinEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/ShrugEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/SitEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2019Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2020AEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2020BEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2021Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2022Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2024Emote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/ThousandDaysEmote" }, + { "ItemType": "/Lotus/Types/Items/Emotes/WolfRageEmote" }, + { "ItemType": "/Lotus/Types/Items/Events/TennoConRelay2022EarlyAccess" }, + { "ItemType": "/Lotus/Types/Items/Events/TennoConRelay2023EarlyAccess" }, + { "ItemType": "/Lotus/Types/Items/Events/TennoConRelay2024EarlyAccess" }, + { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropE" }, + { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropF" }, + { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropG" }, + { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropH" }, + { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropI" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeA" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeB" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeC" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeD" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeE" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeF" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeG" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeH" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeI" }, + { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeJ" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageEidolonCritter" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageEidolonFish" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageEidolonGem" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageVenusCritter" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageVenusFish" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageVenusGem" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Events/EventGlyphCaviaBirdThree" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Events/EventGlyphCaviaFibonacci" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Events/EventGlyphCaviaTagfer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImage13angTV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAHR" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAccessibleGamer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAcolyteSynpai" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAdelfosSelene" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAdikDarkCero" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAdmiralBahroo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAeonKnight" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAjingom" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAkariayataka" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlainLove" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlexanderDario" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlexandraLive" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlthani" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlyekk" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAnJetCat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAngryIceberg" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAngryUnicorn" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAnnoyingKillah" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageArgonSix" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAshi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAshisogiTenno" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAungelecette" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAuroraStarr" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAvelna" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAywi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAznitrous" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAzrael" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBBSChainWarden" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBRCommunityDiscord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBabychanTH" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBackyardisTV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBadNewsBaron" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBast" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBennyfits" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBigJimID" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBikeman" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBlackOni" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBlazingCobalt" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBlueberryCat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBluyayogamer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBocchanVT" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBriannaKane" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBricky" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBrickyOrchid" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBrozime" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBuff00n" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBurnBxx" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBwana" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCASTiELiX" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCGsKnackie" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCalamityDeath" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCaleyEmerald" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCanOfCraig" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCanalTenno" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCaptWalker" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCaptainTutu" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCarchara" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCasardis" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCephalonSquared" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCeratia" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChacytay" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChar" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChelestra" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChrisIsHD" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChromaPrimePartner" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCleoNaturin" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCodoma" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCohhCarnage" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCohony" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageColdScar" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageColdTiger" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCommunityDiscord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageConclaveDiscord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageConfusedWarframe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCopyKavat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCptKim" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrazyBikerDude" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrestbear" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrowdi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrusader" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageD4NK3R" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDJTechlive" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDNexus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDadXGotXGame" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDadefuye" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDaiDaiKiri" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDanily" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDappaDanMan" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDarkSlayer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDarkfreack" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDasterCreations" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDatLoon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDayJoBo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDayTotalN3wb" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDebbysheen" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDeejayKnight" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDeepBlueBeard" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDentw" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDesRPG" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDestrohido" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDeuceTheGamer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDillyFrame" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDimitriVTwo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDisfusional" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDistantObserver" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDramakins" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEdrick" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEduiy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElCanalDeRow" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElGrineerExiliado" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElNoraEleo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElTioProd" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEliceGameplay" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEligibleMonster" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEmovj" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEmpyreanCap" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEndotti" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEsp4him" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEtainted" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEterion" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageExtraCredits" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFR4GTP" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFRCommunityDiscord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFacelessBeanie" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFashionFrameIsEndgame" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFated2Perish" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFatefulYT" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFattShane" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFeelLikeAPlayer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFerreusDemon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFinlaena" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFloofyDwagon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFluffyMiracle" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFrancois" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFromThe70s" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFrostyNovaPrime" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFrozenbawz" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGamingBitches" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGara" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGastel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGermanCommunityDiscord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGingy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGir8Tacos" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGlamShatterskull" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGlitchyGirl" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGoguma" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGoku" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGooperatives" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGorillaWolfGaming" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGriddark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGrimlockePrime" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGrindHardSquad" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHappinessDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHarcosMagyarokWarframe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHomiInvocado" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHotsHomStories" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHunter" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHydroxate" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHynkardSector" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHypercaptai" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIQ" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIkedo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIm7heClown" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInexpensiveGamer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInfernoTheFirelord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInfodiversao" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInfraredMike" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIvorysMoon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIwoply" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJ3ubbleboy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJamieVoiceOver" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJandoncom" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJayNeverwhere" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJessiThrower" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJoeyZero" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJoriale" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJustPlayBP" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageK0yi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKacchi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKalon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKaoiji" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKavatsSchroedinger" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKengineer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKenshinWF" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKillerBarbie" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKingGothalion" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKingKongDonk" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKingWolby" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKirarahime" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKiwad" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKnightmareFrame" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKoreanCommunityDiscord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKr1ptonPlayer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKrashOmnis" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKretduy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKyriosYuudai" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLadyNovita" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLadyTheLaddy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeDouble" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeamxp" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeoDoodling" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeonelGM" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeyzarViewGaming" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLifeOfRio" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLifewater" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLightmicke" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLilLexi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLittleNavi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLluull" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLokKingMacho" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLordSaliak" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLordschaby" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLovinDaTacos" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLucianPlaysAllDay" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLynxaria" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMCGamerCZ" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMCIK" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMCMonkeys" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMGLblaze" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMHBlacky" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMK3Gaming" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMakarimorph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMaomix" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMeCore" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMedusaCaptures" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMemeSage" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMissFwuffy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMjikThize" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMooha" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMozetas" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrBearGaming" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrMorgenstern" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrRoadBlock" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrSteelWar" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrWarframeGuy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNRDabears" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNeavo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNekrokrim" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNeoNess" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNoSympathyy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNononom" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNyxxtv" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOOSIJ" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOddieowl" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOldDirtyDaz" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOldGamer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOmniVoice" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOriginalGamers" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOrpheusDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOzku" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePammyJammy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePandaahhhhh" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePapaTLion" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePartner" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePartnerMug" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePartnerUpdated" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePhongFu" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePixelReboot" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePlagueDirector" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePokketNinja" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePorongo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePorphi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePostiTV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePrettyPoison" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePrimedAverage" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageProfessorBroman" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePunchL1ne" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePurkinje" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePurpleFlurp" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePyrah" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePyrrhicSerenity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageQueenMisrule" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageQynchou" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRLCGaming" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRagey" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRagingTerror" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRahetalius" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRahny" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRainbowWaffles" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRandomSurge" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRavenZ" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRawSteelClan" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageReclaimJoey" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRedX" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageReddit" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRelentlessZen" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRelli" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRevengal" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageReyGanso" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRippz0r" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRitens" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRoyGaming" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRoyalPrat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRundas" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRustyFin" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageS0lstep" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSabaiGuy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSabuuchi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSapmatic" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSarahTsang" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSaturnSixBarDiscord" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageScallion" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageScarletMoon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSealsdie" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSearyn" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSeleste" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSenastra" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSerafimPT" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSerganlkari" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShadowFoxx" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShanksy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSharlazard" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShenzhao" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSherpaRage" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShulGaming" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSiejoUmbra" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSilentMashiko" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSillfix" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSixixgatsu" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSkillUp" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSlapsticklogic" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSlivarito" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSlycker" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSmashley" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSmoodie" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSn0wRC" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSp00nerism" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpaceWaifu" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpacebeastx" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpandy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpiritualJedi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStallordD" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStormcrown" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStr8opticroyal" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStreamingDownUnder" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStrippin" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStrongArmy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStudioCyen" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSummerYuko" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSummit1G" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSuperxinvader" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSzczebrzeszyniarz" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTBGKaru" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTCN" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTVSBOH" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTavierCorsair" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTdefton" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTeawrex" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoChronicler" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoForever" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoGen" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoHelp" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTenshi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheDorTip" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheGamio" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheLadyEgo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheNextLevel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageThePandaNEight" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheReaperHunter" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTinBears" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTioMario" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTioRamon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageToYou" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageToastedTV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTorkie" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageToxickToe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTrainsyTv" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTrashFrame" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTriburos" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTrysmj" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTwila" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTyFighter" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTygastripe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageUncleCat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageUnrealYuki" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageUreiFen" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVGWFR" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVamppire" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVanthesque" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVarlinator" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVashCowaii" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVernoc" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVladislavaLynx" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVnorberto" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVoidFissureBR" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVoli" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVolkeris" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVoltTheHero" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVorticoseline" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWDTortoise" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWalterDV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWanderbots" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeFR" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeFanChannel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeMadness" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeReliquary" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeRunway" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWealWest" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWhiskeyCat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWidescreenJohn" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWobbzie" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWoxli" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageX3lp" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageXandyPants" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageXiaRose" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageXxVampixx" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageYantzi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageYourLuckyClover" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZakguo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZanagoth" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZarionis" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZexiontat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZopney" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZotbot" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZxpfer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagedepths" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagenponesixtyone" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagexOGxSkeezy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageBaruukPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageBaruukPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaraPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaraPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGarudaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGarudaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaussPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaussPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGrendelPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGrendelPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHarrowPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHarrowPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHildrynPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHildrynPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageKhoraPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageKhoraPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageNidusPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageNidusPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageProteaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageProteaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageRevenantPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageRevenantPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageWispPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageWispPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearGroundI" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearGroundII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearGroundIII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearOperationI" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearOperationII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearOperationIII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearSpaceI" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearSpaceII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearSpaceIII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphFour" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphOne" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphThree" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphTwo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieExcalibur" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieFortuna" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKavat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKdrive" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKubrow" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieNef" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieOrbVallis" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieStalker" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Dethcube" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Grineer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Loid" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Lotus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Pumpkin" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2023LuaNights" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CheshireKavat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CreepyClem" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019FrankenCorpus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhostChibiWisp" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhoulGrave" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GrendelTreat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019SlimeLoki" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019TrickOrBalas" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019Werefested" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Sony/AvatarImageOkinaGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/CitrineActionGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageBaruukDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGaussDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageHildrynDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageMesaDeluxeB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageProteaDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageRhinoDeluxeTwo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageSevagothDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltBBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltBDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltCBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltCDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltDBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltDDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageTitaniaDeluxeII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageValkyrDeluxeB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVoltDeluxeB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageWispDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/VorunaActionGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageAlbrechtHatCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageAshAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeEmber" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeKulervo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeMesa" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeOctavia" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeRhino" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeStynax" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeXaku" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBansheeAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBaroIcon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBaruukDoanStyle" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBonewidowAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBuriedDebts" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageChatModerator" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageClemKawaii" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityCavaleroGraffiti" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityChroma" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityClemComic" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityEquinox" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityKullervo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityLittleDuckGraffiti" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityMotherGraffiti" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityRevenant" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumFrost" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumKubrow" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumVauban" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumVulpaphyla" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumZephyr" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTitania" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageConqueraGlyphUpdated" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorAGGP" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorDKDiamantes" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorDanieltheDemon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorFlareEyes" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorH3dsh0t" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorIflynn" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorLokenPlays" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorLunskee" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorMogamu" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorN00blShowtek" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorOriginalWickedfun" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorQuiteShallow" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorSnowLit" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorTacticalPotato" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorTanchan" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorVVhiteAngel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorWgrates" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorXenogelion" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDanteGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDrakeRifle" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageEmberAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionNintendo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionProto" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionSony" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionXbox" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburChibi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburMobile" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageFrostAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGamingCommunityExpo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCarolingOctavia" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicA" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicC" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicD" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicE" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicF" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieBoot" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieCorpus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieDethcube" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieGrineer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieLotus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieVoidKey" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDELogo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerHannahIvara" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerHannahUmbra" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerKedKela" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerKedLotus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerLigerNezha" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerLigerNidus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerSteelsuitNidus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerSteelsuitOberon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerTreshClem" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerTreshLotus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersAtlas" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersEmber" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersHek" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersMirage" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersRegor" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersVolt" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Bird" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Drone" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Gate" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Mech" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Monster" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphFestiveFloof" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphJingleKavat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphJollyGrendel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphKiradien" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLaborAward" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLegendaryCelestics" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLegendaryQuasars" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLocoCrazy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMAWEli" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedAladV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedExcalibur" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedFrostPrime" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedMirage" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedNefAnyo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedNyxPrime" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedOberon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedStalker" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMattaus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemeGreedyMilk" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemePotato" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemeProdman" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemeShorts" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyA" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyC" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyD" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyE" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyF" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyG" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyH" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyI" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyJ" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphSkiGauss" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphSnowGlobeFrost" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphStarterPackA" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphSurpriseIvara" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphYareliComic" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGrineerQueensVed" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2020A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2020B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2020C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHarrowAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHildrynPrideCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHydroidFlag" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageInarosScarabs" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageInktober" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem5" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem6" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem7" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem8" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageIvaraAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKavatEnamel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowEnamel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowKawaii1" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowKawaii2" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowKawaii3" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLavosAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLokiAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLokiActionTwitch" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLokiChibi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLotusGuide" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLotusKawaii" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyAtlas" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyHildryn" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyKavat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyKubrow" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMagAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMagChibi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageManInTheWallCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMesaEnamel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackBlast" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackCold" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackCorrosive" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackCritical" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackDamage" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackElectricity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackFire" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackGas" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackMagnetic" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackRadiation" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackToxin" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackViral" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMovember" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNekrosAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNekrosCalaca" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNoraNightA" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNoraNightB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNovaAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNyxAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOctaviaAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOctaviaActionTwitch" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOroKitty" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOroKittyEnamel" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePrideCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePrideGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageProteaAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageRevenantAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageRhinoAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageRhinoChibi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageSarynAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageSevagothAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageStarDaysCervulitePat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageStarDaysQorvexHeart" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageStarterPackLotus" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTennoTranslator" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTennoVIP" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTeshinVed" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageThreshconeKawaii" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTitaniaButterflies" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTrinityAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageUmbraAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageUnrealTournament" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017E" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Alad" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Clem" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Key" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Kuva" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Deimos" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Gauss" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Helminth" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Lavos" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Mech" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2022Grineer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2022Ordis" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2022Yareli" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2023Gyre" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2023Kavat" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2023Ticker" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValkyrAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVaubanAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphA" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphC" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphD" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphE" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVoidrigAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVoltAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVorKawaii" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017E" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017F" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018E" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016E" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016F" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016G" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageXakuAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageYareliAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageZarimanLogo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageZarimanSupporterPackGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/CNY2023RabbitGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/CherryTreeGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ChineseNewYear2021Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Community10YearAnniversaryGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Community10YearOrdisGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/DeimosRevolverGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/DogDaysKavatGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/DogDaysKubrowGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FireIceCompanionGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Gamification2019Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/GuardianCon2018Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/HeirloomGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Image2019Twitter" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshDeluxeII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshLocustBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshLocustDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshScorpionBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshScorpionDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAtlasDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAtlasPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAtlasPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeChorusBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeChorusDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheePrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheePrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeReverbBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeReverbDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBaroKiteer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBombastineCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltTwoBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltTwoDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCalibanInAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCephalonCy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCephalonSimaris" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaAmaruBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaAmaruDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDracBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDracDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022A" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022B" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022C" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022D" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusAladV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusCrewman" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusJackal" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusMoa" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusNefAnyo" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusOsprey" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageDeadlockProtocolA" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageDeadlockProtocolB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageDexAnniversary" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEightYearAnniversary" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageElevenYearAnniversary" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberBackdraftBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberBackdraftDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberDeluxeII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPheonixBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPheonixDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxSolsticeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxSolsticeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburAvalonBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburAvalonDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburMordredBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburMordredDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPendragonBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPendragonDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburProto" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraAltTwoBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraAltTwoDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostAuroraBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostAuroraDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostSquallBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostSquallDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaraDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaraPrimeCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaAltHelmBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaAltHelmDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussVED" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGengzi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassAltHelmBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassAltHelmDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGraeaeLimboBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGraeaeLimboDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelVED" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerBallista" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerCaptainVor" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionBeastMaster" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionCharger" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionEngineer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionGrunt" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionHealer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionHellion" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionSniper" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionTank" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerKelaDeThaym" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerLancer" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerRoller" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerSargusRuk" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGyreInAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHarrowDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHydroidDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHydroidPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHydroidPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosMarsGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIvaraDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIvaraPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIvaraPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraAltHelmBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraAltHelmDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboAristeasBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboAristeasDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEnigmaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEnigmaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEssenceBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEssenceDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiSwindleBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiSwindleDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLotusDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagCoilBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagCoilDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagGaussBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagGaussDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaCortesBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaCortesDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageHarlequinBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageHarlequinDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageInAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMiragePrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMiragePrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingMacakBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingMacakDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosAraknidBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosAraknidDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosShroudBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosShroudDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAlt2Bright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAlt2Dark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusDeluxeMutated" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusPrionBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusPrionDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNineYearAnniversary" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaDeluxeII" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaQuantumBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaQuantumDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaSlipstreamBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaSlipstreamDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxMenticideBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxMenticideDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxNemesis" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxVespaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxVespaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonMarkhorBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonMarkhorDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaCadenzaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaCadenzaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistAltHelmBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistAltHelmDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateKetosBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateKetosDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateTritonBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateTritonDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAlt2HelmBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAlt2HelmDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAltHelmBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAltHelmDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltTwoBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltTwoDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRailjackInAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerLoxleyBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerLoxleyDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerZirastraBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerZirastraDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantAltHelmBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantAltHelmDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoThrakBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoThrakDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoVanguardBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoVanguardDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanAnubisBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanAnubisDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanCanopicBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanCanopicDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynChloraBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynChloraDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynHemlockBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynHemlockDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageStyanaxInAction" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateAH" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateCS" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateNL" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicatePS" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateRV" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateSM" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTenYearAnniversary" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenDynline" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenEpsilon" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenFabpsi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenInkary" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenLocoCrazy" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenSharksteeth" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperGambitBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperGambitDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperSoldierBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperSoldierDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTravelinMirageBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTravelinMirageDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityAuraBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityAuraDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityMeridianBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityMeridianDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValaCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrBastetBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrBastetDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrKaraBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrKaraDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVaubanDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVaubanPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVaubanPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPulseBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPulseDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltStormBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltStormDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispChibi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWolfBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWolfDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithAltBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithAltDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongDeluxeVED" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageXakuDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageXakuDeluxeKintsugi" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageYareliCommunity" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageYouTubeCorpusA" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageYouTubeCorpusB" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrCierzoBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrCierzoDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrDeluxe" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrPrimeBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrPrimeDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrTenguBright" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrTenguDark" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/KahlCommunityGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/KahlSupporterPackGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/KalymosGrimoireGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Login650Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Login750Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Login950Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/MesaHighNoonGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/NarmerEyeGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/NewWar2021Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemFassGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemJahuGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemKhraGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemLohkGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemNetraGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemRisGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemVomeGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemXataGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/SavePopcornGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek1Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek2Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek3Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek4Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek5Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2017Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2018Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2019Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2019SimarisGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2020Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2020SimarisGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2021Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2021MerchGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2022Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2022MerchGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023BestInShowAwardGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023BestPetAwardGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023BestWorkmanshipAwardGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023CutenessAwardGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023FunniestAwardGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023MerchGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2024Glyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TwinSnakesGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TwitchNecraloidGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20DaughterGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20FatherGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20GrandmaGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20MotherGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20OtakGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20SonGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021GrinoalieGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021MaggotGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021MoaGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021NutcorpusGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2023BombastineGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2023ThraxGlyph" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichBase" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichElectric" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichFire" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichIce" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichMag" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichPoison" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichTrickster" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerAccessibilityItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerAnniversaryEleven" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerBastilleItem" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerBeach" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerCavia" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerCorpusItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDaybreakItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDefaultsItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDefaultsItemB" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDefaultsItemC" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDiscordItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDojoItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerEasterItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerEximus" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerFireItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerGammaItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerGrineerItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemB" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHeirloom" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerIceItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerInfestedItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItemB" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItemC" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItemD" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerJadeItem" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerKalymos" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemB" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerLotus" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerMarshlandsItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerNarmer" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerOrokin" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPS4ItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrideItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrideItemB" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrimeDayItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRWBItem" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRollers" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerShamrockItem" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerSwitchItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTMobileItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTransmissionItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwilightItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwitchBItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwitchItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwitchItemC" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerValItemA" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerValItemB" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ExtraOperatorSkinColors" }, + { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/NinjaColourPickerItem" }, + { "ItemType": "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Asp/UnlockAspAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Asp/UnlockAspNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Bard/UnlockBardAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Bard/UnlockBardNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Dagath/UnlockDagathAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Dagath/UnlockDagathNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Decree/UnlockDecreeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Decree/UnlockDecreeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Dragon/UnlockChromaAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Dragon/UnlockChromaNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Ember/UnlockEmberAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Ember/UnlockEmberNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Fairy/UnlockFairyAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Fairy/UnlockFairyNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Frost/UnlockFrostAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Frost/UnlockFrostNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Geode/UnlockGeodeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Geode/UnlockGeodeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Glass/UnlockGlassAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Glass/UnlockGlassNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Gyre/UnlockGyreAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Gyre/UnlockGyreNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Jade/UnlockJadeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Jade/UnlockJadeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/GrineerShip/LisetGrineerShipDefault" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeDefault" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeGrineerQueens" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinIfrit" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinNekrognos" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/SWXiphosLilieaeSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipDefault" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinA" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinB" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinC" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinD" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ConquestHoodOrnament" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/DexLisetSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/InarosLisetSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkyDefault" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinDeluxe" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinGrineerQueens" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinInaros" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinPrimeTrader" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSound" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSplash" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinStalker" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinCamo" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinDefault" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinExotic" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinGrineerQueens" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinHalloween" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinInaros" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinIridos" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinNautilus" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinPrimeTrader" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemB" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemC" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemD" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemDefault" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinGrineerQueens" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinHalloween" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinJade" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinKaboom" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinKotora" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinObsidian" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinPrime" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinRelayEvent" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROne" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROneHellkite" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinSWRThreeMaltzurOculus" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinTwitchPrime" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinVoidTrader" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/MITWHoodOrnamentA" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/MaduraiHoodOrnament" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/MasteryHoodOrnament" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/NaramonHoodOrnament" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/NoraShipDefault" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWHerulystLisetSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWLilieaeSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWMantisVammatarSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWMithraLisetSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWProtegeLisetSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWVammatarLisetSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/UnairuHoodOrnament" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/VazarinHoodOrnament" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZenurikHoodOrnament" }, + { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZephyrDeluxeShipSkin" }, + { "ItemType": "/Lotus/Upgrades/Skins/Loki/UnlockLokiAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Loki/UnlockLokiNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Mag/UnlockMagAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Mag/UnlockMagNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Magician/UnlockMagicianAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Magician/UnlockMagicianNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Necro/UnlockNecroAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Necro/UnlockNecroNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Priest/UnlockPriestAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Priest/UnlockPriestNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Promo/Twitch/LisetSkinTwitch" }, + { "ItemType": "/Lotus/Upgrades/Skins/Ranger/UnlockRangerAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Ranger/UnlockRangerNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Agile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Noble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Runner/UnlockRunnerAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Runner/UnlockRunnerNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Sentient/UnlockSentientAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Sentient/UnlockSentientNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Volt/UnlockVoltAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Volt/UnlockVoltNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Wisp/UnlockWispAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Wisp/UnlockWispNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Wraith/UnlockWraithAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Wraith/UnlockWraithNoble" }, + { "ItemType": "/Lotus/Upgrades/Skins/Yareli/UnlockYareliAgile" }, + { "ItemType": "/Lotus/Upgrades/Skins/Yareli/UnlockYareliNoble" } +] diff --git a/static/fixed_responses/shipDecorations.json b/static/fixed_responses/allShipDecorations.json similarity index 100% rename from static/fixed_responses/shipDecorations.json rename to static/fixed_responses/allShipDecorations.json -- 2.47.2 From 675e6c4583382e89dcc71a7d2b2ceb3061f13c90 Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 3 May 2024 22:12:51 +0200 Subject: [PATCH 079/522] feat: persist user's choice of glyph (#152) --- src/controllers/api/addFriendImageController.ts | 15 +++++++++++++++ src/routes/api.ts | 2 ++ src/types/requestTypes.ts | 5 +++++ 3 files changed, 22 insertions(+) create mode 100644 src/controllers/api/addFriendImageController.ts diff --git a/src/controllers/api/addFriendImageController.ts b/src/controllers/api/addFriendImageController.ts new file mode 100644 index 00000000..f671493c --- /dev/null +++ b/src/controllers/api/addFriendImageController.ts @@ -0,0 +1,15 @@ +import { RequestHandler } from "express"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { IUpdateGlyphRequest } from "@/src/types/requestTypes"; +import { getInventory } from "@/src/services/inventoryService"; + +const addFriendImageController: RequestHandler = async (req, res) => { + const accountId = req.query.accountId as string; + const json = getJSONfromString(req.body.toString()) as IUpdateGlyphRequest; + let inventory = await getInventory(accountId); + inventory.ActiveAvatarImageType = json.AvatarImageType; + await inventory.save(); + res.json({}); +}; + +export { addFriendImageController }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 84bff947..537e245e 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -42,6 +42,7 @@ import { setShipCustomizationsController } from "@/src/controllers/api/setShipCu import { setActiveShipController } from "@/src/controllers/api/setActiveShipController"; import { updateThemeController } from "../controllers/api/updateThemeController"; import { getGuildController } from "@/src/controllers/api/getGuildController"; +import { addFriendImageController } from "@/src/controllers/api/addFriendImageController"; const apiRouter = express.Router(); @@ -94,5 +95,6 @@ apiRouter.post("/joinSession.php", joinSessionController); apiRouter.post("/saveLoadout.php", saveLoadoutController); apiRouter.post("/trainingResult.php", trainingResultController); apiRouter.post("/updateTheme.php", updateThemeController); +apiRouter.post("/addFriendImage.php", addFriendImageController); export { apiRouter }; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 1be732a6..7b7dd7ac 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -59,3 +59,8 @@ export interface IMissionInventoryUpdateRequestRewardInfo { export interface IInventorySlotsRequest { Bin: "PveBonusLoadoutBin"; } + +export interface IUpdateGlyphRequest { + AvatarImageType: string; + AvatarImage: string; +} -- 2.47.2 From c31d82b61e43da5e9ec3b473018a68759032b4cc Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 4 May 2024 14:44:23 +0200 Subject: [PATCH 080/522] feat: WebUI (#155) --- src/app.ts | 3 + .../custom/getItemListsController.ts | 25 ++++ src/routes/custom.ts | 7 +- src/routes/webui.ts | 24 ++++ src/services/itemDataService.ts | 27 +++-- static/webui/index.html | 65 +++++++++++ static/webui/script.js | 110 ++++++++++++++++++ 7 files changed, 251 insertions(+), 10 deletions(-) create mode 100644 src/controllers/custom/getItemListsController.ts create mode 100644 src/routes/webui.ts create mode 100644 static/webui/index.html create mode 100644 static/webui/script.js diff --git a/src/app.ts b/src/app.ts index bacdc926..514d4336 100644 --- a/src/app.ts +++ b/src/app.ts @@ -12,6 +12,7 @@ import { steamPacksController } from "@/src/controllers/misc/steamPacksControlle import { customRouter } from "@/src/routes/custom"; import { dynamicController } from "@/src/routes/dynamic"; import { statsRouter } from "@/src/routes/stats"; +import { webuiRouter } from "@/src/routes/webui"; import { connectDatabase } from "@/src/services/mongoService"; import { registerLogFileCreationListener } from "@/src/utils/logger"; @@ -35,6 +36,8 @@ app.use("/:id/dynamic", dynamicController); app.post("/pay/steamPacks.php", steamPacksController); app.use("/stats", statsRouter); +app.use("/", webuiRouter); + app.use(unknownEndpointHandler); //app.use(errorHandler) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts new file mode 100644 index 00000000..92eedda0 --- /dev/null +++ b/src/controllers/custom/getItemListsController.ts @@ -0,0 +1,25 @@ +import { RequestHandler } from "express"; +import { MinItem, warframes, weapons } from "@/src/services/itemDataService"; + +interface ListedItem { + uniqueName: string; + name: string; +} + +function reduceItems(items: MinItem[]): ListedItem[] { + return items.map((item: MinItem): ListedItem => { + return { + uniqueName: item.uniqueName, + name: item.name + }; + }); +} + +const getItemListsController: RequestHandler = (_req, res) => { + res.json({ + warframes: reduceItems(warframes), + weapons: reduceItems(weapons) + }); +}; + +export { getItemListsController }; diff --git a/src/routes/custom.ts b/src/routes/custom.ts index 1ab4ff2c..8a4218d7 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -1,9 +1,12 @@ -import { addItemController } from "@/src/controllers/custom/addItemController"; -import { createAccountController } from "@/src/controllers/custom/createAccountController"; import express from "express"; +import { getItemListsController } from "@/src/controllers/custom/getItemListsController"; +import { createAccountController } from "@/src/controllers/custom/createAccountController"; +import { addItemController } from "@/src/controllers/custom/addItemController"; const customRouter = express.Router(); +customRouter.get("/getItemLists", getItemListsController); + customRouter.post("/createAccount", createAccountController); customRouter.post("/addItem", addItemController); diff --git a/src/routes/webui.ts b/src/routes/webui.ts new file mode 100644 index 00000000..5a16b5e4 --- /dev/null +++ b/src/routes/webui.ts @@ -0,0 +1,24 @@ +import express from "express"; +import path from "path"; + +const webuiRouter = express.Router(); + +webuiRouter.get("/", (_req, res) => { + res.redirect("/webui/"); +}); + +const rootDir = path.join(__dirname, "../.."); + +webuiRouter.get("/webui/", (req, res) => { + if (req.path != "/webui/") { + res.redirect("/webui/"); + } else { + res.sendFile(path.join(rootDir, "static/webui/index.html")); + } +}); + +webuiRouter.get("/webui/script.js", (_req, res) => { + res.sendFile(path.join(rootDir, "static/webui/script.js")); +}); + +export { webuiRouter }; diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index a251b9ae..f46bc72d 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -1,21 +1,32 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; -import Items, { Buildable, Category, Item, Warframe, Weapon } from "warframe-items"; +import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; -type MinWeapon = Omit; -type MinItem = Omit; +export type MinWarframe = Omit; +export type MinWeapon = Omit; +export type MinItem = Omit; -export const weapons: MinWeapon[] = (new Items({ category: ["Primary", "Secondary", "Melee"] }) as Weapon[]).map( - item => { +export const warframes: MinWarframe[] = Array.from(new Items({ category: ["Warframes"] }) as Warframe[]) + .filter(item => { + return item.uniqueName.substring(0, 30) != "/Lotus/Powersuits/EntratiMech/"; + }) + .map(item => { const next = { ...item }; delete next.patchlogs; return next; - } -); + }); + +export const weapons: MinWeapon[] = Array.from( + new Items({ category: ["Primary", "Secondary", "Melee"] }) as Weapon[] +).map(item => { + const next = { ...item }; + delete next.patchlogs; + return next; +}); export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; -export const items: MinItem[] = new Items({ category: ["All"] }).map(item => { +export const items: MinItem[] = Array.from(new Items({ category: ["All"] }) as MinimalItem[]).map(item => { const next = { ...item }; delete next.patchlogs; return next; diff --git a/static/webui/index.html b/static/webui/index.html new file mode 100644 index 00000000..1df68c71 --- /dev/null +++ b/static/webui/index.html @@ -0,0 +1,65 @@ + + + + OpenWF WebUI + + + +
+

OpenWF WebUI

+
+

Login using your OpenWF account credentials.

+
+ + +
+ + +
+ +
+
+
+

Hello, ! Logout

+
+
+
Acquire Warframe
+
+
+ +
+
+ +
+
+
+
+
Acquire Weapon
+
+
+ +
+
+ +
+
+
+
+
+
+ + + + + + + diff --git a/static/webui/script.js b/static/webui/script.js new file mode 100644 index 00000000..6446c62c --- /dev/null +++ b/static/webui/script.js @@ -0,0 +1,110 @@ +function doLogin() { + localStorage.setItem("email", $("#email").val()); + localStorage.setItem("password", $("#password").val()); + loginFromLocalStorage(); +} + +function loginFromLocalStorage() { + const req = $.post({ + url: "/api/login.php", + contentType: "text/plain", + data: JSON.stringify({ + email: localStorage.getItem("email"), + password: wp.encSync(localStorage.getItem("password"), "hex"), + time: parseInt(new Date() / 1000), + s: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==", // signature of some kind + lang: "en", + date: 1501230947855458660, // ??? + ClientType: "", + PS: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==" // anti-cheat data + }) + }); + req.done(data => { + $("#login-view").addClass("d-none"); + $("#main-view").removeClass("d-none"); + $(".displayname").text(data.DisplayName); + window.accountId = data.id; + }); + req.fail(() => { + logout(); + alert("Login failed"); + }); +} + +function logout() { + localStorage.removeItem("email"); + localStorage.removeItem("password"); + $("#login-view").removeClass("d-none"); + $("#main-view").addClass("d-none"); +} + +if (localStorage.getItem("email") && localStorage.getItem("password")) { + loginFromLocalStorage(); +} + +const req = $.get("/custom/getItemLists"); +req.done(data => { + for (const [type, items] of Object.entries(data)) { + items.forEach(item => { + const option = document.createElement("option"); + option.setAttribute("data-key", item.uniqueName); + option.value = item.name; + document.getElementById("datalist-" + type).appendChild(option); + }); + } +}); + +function getKey(input) { + return document + .getElementById(input.getAttribute("list")) + .querySelector("[value='" + input.value.split("'").join("\\'") + "']") + ?.getAttribute("data-key"); +} + +function doAcquireWarframe() { + const uniqueName = getKey(document.getElementById("warframe-to-acquire")); + if (!uniqueName) { + $("#warframe-to-acquire").addClass("is-invalid"); + return; + } + const req = $.post({ + url: "/custom/addItem", + contentType: "application/json", + data: JSON.stringify({ + type: "Powersuit", + internalName: uniqueName, + accountId: window.accountId + }) + }); + req.done(() => { + alert("Warframe added to your inventory! Visit navigation to force an inventory update."); + }); +} + +$("#warframe-to-acquire").on("input", () => { + $("#warframe-to-acquire").removeClass("is-invalid"); +}); + +function doAcquireWeapon() { + const uniqueName = getKey(document.getElementById("weapon-to-acquire")); + if (!uniqueName) { + $("#weapon-to-acquire").addClass("is-invalid"); + return; + } + const req = $.post({ + url: "/custom/addItem", + contentType: "application/json", + data: JSON.stringify({ + type: "Weapon", + internalName: uniqueName, + accountId: window.accountId + }) + }); + req.done(() => { + alert("Weapon added to your inventory! Visit navigation to force an inventory update."); + }); +} + +$("#weapon-to-acquire").on("input", () => { + $("#weapon-to-acquire").removeClass("is-invalid"); +}); -- 2.47.2 From 3acd8e9f74cfe5e5efe8930d1aabfc2df9440ca2 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 4 May 2024 14:46:36 +0200 Subject: [PATCH 081/522] improve: IShip (#154) --- src/types/shipTypes.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index 05ac65da..c8b82a1a 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -25,6 +25,7 @@ export interface IShip { ShipInterior: IShipInterior; Rooms: IRooms[]; ContentUrlSignature: string; + BootLocation?: "LISET" | "DRIFTER_CAMP" | "APARTMENT"; } export interface IShipDatabase { -- 2.47.2 From d07e99f0c95cdb1c5599e31cc471c1335a378089 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 4 May 2024 15:42:25 +0200 Subject: [PATCH 082/522] feat: Clan creation & persistence (#146) --- src/controllers/api/createGuildController.ts | 35 ++++++++++++++++++++ src/controllers/api/getGuildController.ts | 20 ++++++++++- src/models/guildModel.ts | 16 +++++++++ src/models/inventoryModels/inventoryModel.ts | 6 ++++ src/routes/api.ts | 2 ++ src/types/guildTypes.ts | 18 ++++++++++ src/types/inventoryTypes/inventoryTypes.ts | 3 ++ 7 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/controllers/api/createGuildController.ts create mode 100644 src/models/guildModel.ts create mode 100644 src/types/guildTypes.ts diff --git a/src/controllers/api/createGuildController.ts b/src/controllers/api/createGuildController.ts new file mode 100644 index 00000000..c8828b03 --- /dev/null +++ b/src/controllers/api/createGuildController.ts @@ -0,0 +1,35 @@ +import { RequestHandler } from "express"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; +import { Guild } from "@/src/models/guildModel"; +import { IGuild, ICreateGuildRequest } from "@/src/types/guildTypes"; + +const createGuildController: RequestHandler = async (req, res) => { + let payload: ICreateGuildRequest = getJSONfromString(req.body.toString()); + + // Create guild on database + let guild = new Guild({ + Name: payload.guildName + } satisfies IGuild); + await guild.save(); + + // Update inventory + let inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); + if (inventory) { + // Set GuildId + inventory.GuildId = guild._id; + + // Give clan key + inventory.LevelKeys ??= []; + inventory.LevelKeys.push({ + ItemType: "/Lotus/Types/Keys/DojoKey", + ItemCount: 1 + }); + + await inventory.save(); + } + + res.json(guild); +}; + +export { createGuildController }; diff --git a/src/controllers/api/getGuildController.ts b/src/controllers/api/getGuildController.ts index 99cfb3f0..81dfde24 100644 --- a/src/controllers/api/getGuildController.ts +++ b/src/controllers/api/getGuildController.ts @@ -1,6 +1,24 @@ import { RequestHandler } from "express"; +import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; +import { Guild } from "@/src/models/guildModel"; -const getGuildController: RequestHandler = (_req, res) => { +const getGuildController: RequestHandler = async (req, res) => { + if (!req.query.accountId) { + res.status(400).json({ error: "accountId was not provided" }); + return; + } + const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); + if (!inventory) { + res.status(400).json({ error: "inventory was undefined" }); + return; + } + if (inventory.GuildId) { + const guild = await Guild.findOne({ _id: inventory.GuildId }); + if (guild) { + res.json(guild); + return; + } + } res.json({}); }; diff --git a/src/models/guildModel.ts b/src/models/guildModel.ts new file mode 100644 index 00000000..3d8cbc3b --- /dev/null +++ b/src/models/guildModel.ts @@ -0,0 +1,16 @@ +import { IGuild, IDatabaseGuild } from "@/src/types/guildTypes"; +import { model, Schema } from "mongoose"; +import { toOid } from "@/src/helpers/inventoryHelpers"; + +const guildSchema = new Schema({ + Name: { type: String, required: true } +}); + +guildSchema.set("toJSON", { + virtuals: true, + transform(_document, guild) { + guild._id = toOid(guild._id); + } +}); + +export const Guild = model("Guild", guildSchema); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index d7f3ae81..547c56aa 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -874,6 +874,9 @@ const inventorySchema = new Schema( //You first Dialog with NPC or use new Item NodeIntrosCompleted: [String], + //Current guild id, if applicable. + GuildId: { type: Schema.Types.ObjectId, ref: "Guild" }, + //https://warframe.fandom.com/wiki/Heist //ProfitTaker(1-4) Example:"LocationTag": "EudicoHeists", "Jobs":Mission name CompletedJobChains: [completedJobChainsSchema], @@ -971,6 +974,9 @@ inventorySchema.set("toJSON", { inventoryResponse.TrainingDate = toMongoDate(inventoryDatabase.TrainingDate); inventoryResponse.Created = toMongoDate(inventoryDatabase.Created); + if (inventoryDatabase.GuildId) { + inventoryResponse.GuildId = toOid(inventoryDatabase.GuildId); + } if (inventoryResponse.BlessingCooldown) { inventoryResponse.BlessingCooldown = toMongoDate(inventoryDatabase.BlessingCooldown); } diff --git a/src/routes/api.ts b/src/routes/api.ts index 537e245e..3f68a958 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -43,6 +43,7 @@ import { setActiveShipController } from "@/src/controllers/api/setActiveShipCont import { updateThemeController } from "../controllers/api/updateThemeController"; import { getGuildController } from "@/src/controllers/api/getGuildController"; import { addFriendImageController } from "@/src/controllers/api/addFriendImageController"; +import { createGuildController } from "@/src/controllers/api/createGuildController"; const apiRouter = express.Router(); @@ -96,5 +97,6 @@ apiRouter.post("/saveLoadout.php", saveLoadoutController); apiRouter.post("/trainingResult.php", trainingResultController); apiRouter.post("/updateTheme.php", updateThemeController); apiRouter.post("/addFriendImage.php", addFriendImageController); +apiRouter.post("/createGuild.php", createGuildController); export { apiRouter }; diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts new file mode 100644 index 00000000..30350ff4 --- /dev/null +++ b/src/types/guildTypes.ts @@ -0,0 +1,18 @@ +import { Types } from "mongoose"; +import { IOid } from "@/src/types/commonTypes"; + +export interface IGuild { + Name: string; +} + +export interface IDatabaseGuild extends IGuild { + _id: Types.ObjectId; +} + +export interface IGuildResponse extends IGuild { + _id: IOid; +} + +export interface ICreateGuildRequest { + guildName: string; +} diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 71f5ebac..0bec69da 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -21,6 +21,7 @@ export interface IInventoryDatabase | "TrainingDate" | "LoadOutPresets" | "Mailbox" + | "GuildId" | "PendingRecipes" | "Created" | "QuestKeys" @@ -32,6 +33,7 @@ export interface IInventoryDatabase TrainingDate: Date; // TrainingDate changed from IMongoDate to Date LoadOutPresets: Types.ObjectId; // LoadOutPresets changed from ILoadOutPresets to Types.ObjectId for population Mailbox: Types.ObjectId; // Mailbox changed from IMailbox to Types.ObjectId + GuildId?: Types.ObjectId; // GuildId changed from ?IOid to ?Types.ObjectId PendingRecipes: IPendingRecipe[]; QuestKeys: IQuestKeyDatabase[]; BlessingCooldown: Date; @@ -232,6 +234,7 @@ export interface IInventoryResponse { RecentVendorPurchases: Array; Hoverboards: IHoverboard[]; NodeIntrosCompleted: string[]; + GuildId?: IOid; CompletedJobChains: ICompletedJobChain[]; SeasonChallengeHistory: ISeasonChallengeHistory[]; MoaPets: IMoaPet[]; -- 2.47.2 From 477f678244d2635bd93b1c2283d416f2d06788d0 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 4 May 2024 16:12:00 +0200 Subject: [PATCH 083/522] cleanup: remove unused guild stuff (#156) --- src/models/guildModel.ts | 2 +- src/types/guildTypes.ts | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/models/guildModel.ts b/src/models/guildModel.ts index 3d8cbc3b..601e73e3 100644 --- a/src/models/guildModel.ts +++ b/src/models/guildModel.ts @@ -1,4 +1,4 @@ -import { IGuild, IDatabaseGuild } from "@/src/types/guildTypes"; +import { IGuild } from "@/src/types/guildTypes"; import { model, Schema } from "mongoose"; import { toOid } from "@/src/helpers/inventoryHelpers"; diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index 30350ff4..4e4e5f74 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -5,14 +5,6 @@ export interface IGuild { Name: string; } -export interface IDatabaseGuild extends IGuild { - _id: Types.ObjectId; -} - -export interface IGuildResponse extends IGuild { - _id: IOid; -} - export interface ICreateGuildRequest { guildName: string; } -- 2.47.2 From 9bded04dfdac54a54511056b93d33e4eb7a344c8 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 4 May 2024 23:11:55 +0200 Subject: [PATCH 084/522] feat: unequipping weapons & deleting loadout configs (#160) --- src/models/inventoryModels/loadoutModel.ts | 3 ++- src/services/saveLoadoutService.ts | 8 ++++++-- src/types/saveLoadoutTypes.ts | 22 ++++++++++++---------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/models/inventoryModels/loadoutModel.ts b/src/models/inventoryModels/loadoutModel.ts index 87871138..2ff08774 100644 --- a/src/models/inventoryModels/loadoutModel.ts +++ b/src/models/inventoryModels/loadoutModel.ts @@ -19,7 +19,8 @@ const EquipmentSelectionSchema = new Schema( default: { $oid: "000000000000000000000000" } }, mod: Number, - cus: Number + cus: Number, + hide: Boolean }, { _id: false diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index 0b71f22f..826a8548 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -77,6 +77,11 @@ export const handleInventoryItemConfigChange = async ( // all non-empty entries are one loadout slot for (const [loadoutId, loadoutConfig] of Object.entries(newLoadout)) { + if (loadoutConfig.Remove) { + loadout[loadoutSlot].pull({ _id: loadoutId }); + continue; + } + const oldLoadoutConfig = loadout[loadoutSlot].find( loadout => loadout._id.toString() === loadoutId ); @@ -106,8 +111,7 @@ export const handleInventoryItemConfigChange = async ( throw new Error("loadout index not found"); } - //perhaps .overwrite() is better - loadout[loadoutSlot][loadoutIndex].set(loadoutConfig); + loadout[loadoutSlot][loadoutIndex].overwrite(loadoutConfig); } } await loadout.save(); diff --git a/src/types/saveLoadoutTypes.ts b/src/types/saveLoadoutTypes.ts index 61020029..09577594 100644 --- a/src/types/saveLoadoutTypes.ts +++ b/src/types/saveLoadoutTypes.ts @@ -76,17 +76,19 @@ export interface ILoadoutConfigDatabase extends Omit Date: Mon, 6 May 2024 15:06:30 +0200 Subject: [PATCH 085/522] feat: selling of warframes & weapons (#157) --- src/controllers/api/sellController.ts | 49 +++++++++++++++++++++++++++ src/routes/api.ts | 2 ++ src/types/sellTypes.ts | 23 +++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 src/controllers/api/sellController.ts create mode 100644 src/types/sellTypes.ts diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts new file mode 100644 index 00000000..c80dfb7a --- /dev/null +++ b/src/controllers/api/sellController.ts @@ -0,0 +1,49 @@ +import { RequestHandler } from "express"; +import { ISellRequest } from "@/src/types/sellTypes"; +import { getInventory } from "@/src/services/inventoryService"; + +export const sellController: RequestHandler = async (req, res) => { + const payload: ISellRequest = JSON.parse(req.body.toString()); + const inventory = await getInventory(req.query.accountId as string); + + // Give currency + if (payload.SellCurrency == "SC_RegularCredits") { + inventory.RegularCredits += payload.SellPrice; + } else if (payload.SellCurrency == "SC_FusionPoints") { + inventory.FusionPoints += payload.SellPrice; + } else { + throw new Error("Unknown SellCurrency: " + payload.SellCurrency); + } + + // Remove item(s) + if (payload.Items.Suits) { + payload.Items.Suits.forEach(sellItem => { + inventory.Suits.pull({ _id: sellItem.String }); + }); + } + if (payload.Items.LongGuns) { + payload.Items.LongGuns.forEach(sellItem => { + inventory.LongGuns.pull({ _id: sellItem.String }); + }); + } + if (payload.Items.Pistols) { + payload.Items.Pistols.forEach(sellItem => { + inventory.Pistols.pull({ _id: sellItem.String }); + }); + } + if (payload.Items.Melee) { + payload.Items.Melee.forEach(sellItem => { + inventory.Melee.pull({ _id: sellItem.String }); + }); + } + if (payload.Items.Recipes) { + // TODO + // Note: sellItem.String is a uniqueName in this case + } + if (payload.Items.Upgrades) { + // TODO + } + + await inventory.save(); + res.json({}); +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index 3f68a958..df15ab9b 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -44,6 +44,7 @@ import { updateThemeController } from "../controllers/api/updateThemeController" import { getGuildController } from "@/src/controllers/api/getGuildController"; import { addFriendImageController } from "@/src/controllers/api/addFriendImageController"; import { createGuildController } from "@/src/controllers/api/createGuildController"; +import { sellController } from "@/src/controllers/api/sellController"; const apiRouter = express.Router(); @@ -98,5 +99,6 @@ apiRouter.post("/trainingResult.php", trainingResultController); apiRouter.post("/updateTheme.php", updateThemeController); apiRouter.post("/addFriendImage.php", addFriendImageController); apiRouter.post("/createGuild.php", createGuildController); +apiRouter.post("/sell.php", sellController); export { apiRouter }; diff --git a/src/types/sellTypes.ts b/src/types/sellTypes.ts new file mode 100644 index 00000000..624b7186 --- /dev/null +++ b/src/types/sellTypes.ts @@ -0,0 +1,23 @@ +export interface ISellRequest { + Items: { + Suits?: ISellItem[]; + LongGuns?: ISellItem[]; + Pistols?: ISellItem[]; + Melee?: ISellItem[]; + Recipes?: ISellItem[]; + Upgrades?: ISellItem[]; + }; + SellPrice: number; + SellCurrency: + | "SC_RegularCredits" + | "SC_PrimeBucks" + | "SC_FusionPoints" + | "SC_CrewShipFusionPoints" + | "SC_Resources"; + buildLabel: string; +} + +export interface ISellItem { + String: string; // oid or uniqueName + Count: number; +} -- 2.47.2 From 91abd419f7b32595f422210c08f9e6c9c4a30bc2 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:07:36 +0200 Subject: [PATCH 086/522] fix: error when using consumable item in mission (#165) --- src/services/inventoryService.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 8dd086fa..fc4fbe41 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -319,7 +319,9 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques addConsumables(inventory, Consumables); addRecipes(inventory, Recipes); addChallenges(inventory, ChallengeProgress); - addMissionComplete(inventory, Missions!); + if (Missions) { + addMissionComplete(inventory, Missions); + } const changedInventory = await inventory.save(); return changedInventory.toJSON(); -- 2.47.2 From 676c3b1616d77adfcd254dba0aa8ef267b20cca3 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:08:56 +0200 Subject: [PATCH 087/522] feat: potatoes & exilus adapters (#163) --- src/controllers/api/upgradesController.ts | 44 ++++++++++++++++++++++ src/routes/api.ts | 2 + src/services/inventoryService.ts | 2 +- src/types/inventoryTypes/inventoryTypes.ts | 6 +++ src/types/requestTypes.ts | 17 +++++++++ 5 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/controllers/api/upgradesController.ts diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts new file mode 100644 index 00000000..50791d53 --- /dev/null +++ b/src/controllers/api/upgradesController.ts @@ -0,0 +1,44 @@ +import { RequestHandler } from "express"; +import { IUpgradesRequest } from "@/src/types/requestTypes"; +import { IGenericItemDatabase, IMiscItem, TGenericItemKey } from "@/src/types/inventoryTypes/inventoryTypes"; +import { addMiscItems, getInventory } from "@/src/services/inventoryService"; + +export const upgradesController: RequestHandler = async (req, res) => { + const accountId = req.query.accountId as string; + const payload = JSON.parse(req.body.toString()) as IUpgradesRequest; + const inventory = await getInventory(accountId); + for (const operation of payload.Operations) { + addMiscItems(inventory, [ + { + ItemType: operation.UpgradeRequirement, + ItemCount: -1 + } satisfies IMiscItem + ]); + switch (operation.UpgradeRequirement) { + case "/Lotus/Types/Items/MiscItems/OrokinReactor": + case "/Lotus/Types/Items/MiscItems/OrokinCatalyst": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.Features ??= 0; + item.Features |= 1; + break; + } + } + break; + case "/Lotus/Types/Items/MiscItems/UtilityUnlocker": + case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.Features ??= 0; + item.Features |= 2; + break; + } + } + break; + default: + throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement); + } + } + await inventory.save(); + res.end(); +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index df15ab9b..c8fa928e 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -45,6 +45,7 @@ import { getGuildController } from "@/src/controllers/api/getGuildController"; import { addFriendImageController } from "@/src/controllers/api/addFriendImageController"; import { createGuildController } from "@/src/controllers/api/createGuildController"; import { sellController } from "@/src/controllers/api/sellController"; +import { upgradesController } from "@/src/controllers/api/upgradesController"; const apiRouter = express.Router(); @@ -100,5 +101,6 @@ apiRouter.post("/updateTheme.php", updateThemeController); apiRouter.post("/addFriendImage.php", addFriendImageController); apiRouter.post("/createGuild.php", createGuildController); apiRouter.post("/sell.php", sellController); +apiRouter.post("/upgrades.php", upgradesController); export { apiRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index fc4fbe41..43675663 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -211,7 +211,7 @@ const addGearExpByCategory = ( }); }; -const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined) => { +export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined) => { const { MiscItems } = inventory; itemsArray?.forEach(({ ItemCount, ItemType }) => { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 0bec69da..99792a20 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -95,6 +95,12 @@ export interface IGenericItem { Features?: number; //space suit has this } +export interface IGenericItemDatabase extends Omit { + _id: Types.ItemId; +} + +export type TGenericItemKey = "Suits" | "LongGuns" | "Pistols" | "Melee"; + export interface IDuviriInfo { Seed: number; NumCompletions: number; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 7b7dd7ac..dc99d658 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -1,3 +1,4 @@ +import { IOid } from "./commonTypes"; import { IBooster, IChallengeProgress, @@ -64,3 +65,19 @@ export interface IUpdateGlyphRequest { AvatarImageType: string; AvatarImage: string; } + +export interface IUpgradesRequest { + ItemCategory: string; + ItemId: IOid; + ItemFeatures: number; + UpgradeVersion: number; + Operations: IUpgradeOperation[]; +} + +export interface IUpgradeOperation { + OperationType: string; + UpgradeRequirement: string; // uniqueName of item being consumed + PolarizeSlot: number; + PolarizeValue: string; // polarity + PolarityRemap: {}[]; +} -- 2.47.2 From 70c9a5013d661e3969f1f963dd246cce215d86b7 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:14:09 +0200 Subject: [PATCH 088/522] feat(webui): add list of owned warframes & weapons with "Make Rank 30" option (#170) --- src/controllers/api/loginController.ts | 2 +- static/webui/index.html | 44 +++++---- static/webui/script.js | 119 +++++++++++++++++++++---- 3 files changed, 130 insertions(+), 35 deletions(-) diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 7dbef077..4cd7f6ef 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -18,7 +18,7 @@ const loginController: RequestHandler = async (request, response) => { const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 } - if (!account && config.autoCreateAccount) { + if (!account && config.autoCreateAccount && loginRequest.ClientType != "webui") { try { const newAccount = await createAccount({ email: loginRequest.email, diff --git a/static/webui/index.html b/static/webui/index.html index 1df68c71..ea91f01b 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -26,28 +26,34 @@

Hello, ! Logout

-
-
-
Acquire Warframe
-
-
- +
+
+
+
Warframes
+
+ + +
+ + + +
-
- -
- +
-
-
Acquire Weapon
-
-
- +
+
+
Weapons
+
+ + +
+ + + +
-
- -
- +
diff --git a/static/webui/script.js b/static/webui/script.js index 6446c62c..52ff2ce3 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -15,7 +15,7 @@ function loginFromLocalStorage() { s: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==", // signature of some kind lang: "en", date: 1501230947855458660, // ??? - ClientType: "", + ClientType: "webui", PS: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==" // anti-cheat data }) }); @@ -24,6 +24,7 @@ function loginFromLocalStorage() { $("#main-view").removeClass("d-none"); $(".displayname").text(data.DisplayName); window.accountId = data.id; + updateInventory(); }); req.fail(() => { logout(); @@ -42,18 +43,82 @@ if (localStorage.getItem("email") && localStorage.getItem("password")) { loginFromLocalStorage(); } -const req = $.get("/custom/getItemLists"); -req.done(data => { - for (const [type, items] of Object.entries(data)) { - items.forEach(item => { - const option = document.createElement("option"); - option.setAttribute("data-key", item.uniqueName); - option.value = item.name; - document.getElementById("datalist-" + type).appendChild(option); - }); - } +window.itemListPromise = new Promise(resolve => { + const req = $.get("/custom/getItemLists"); + req.done(data => { + const itemMap = {}; + for (const [type, items] of Object.entries(data)) { + items.forEach(item => { + const option = document.createElement("option"); + option.setAttribute("data-key", item.uniqueName); + option.value = item.name; + document.getElementById("datalist-" + type).appendChild(option); + itemMap[item.uniqueName] = { ...item, type }; + }); + } + resolve(itemMap); + }); }); +function updateInventory() { + const req = $.get("/api/inventory.php?accountId=" + window.accountId); + req.done(data => { + window.itemListPromise.then(itemMap => { + document.getElementById("warframe-list").innerHTML = ""; + data.Suits.forEach(item => { + const tr = document.createElement("tr"); + { + const td = document.createElement("td"); + td.textContent = itemMap[item.ItemType].name; + tr.appendChild(td); + } + { + const td = document.createElement("td"); + td.classList = "text-end"; + if (item.XP < 1_600_000) { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function () { + addGearExp("Suits", item.ItemId.$oid, 1_600_000 - item.XP); + }; + a.textContent = "Make Rank 30"; + td.appendChild(a); + } + tr.appendChild(td); + } + document.getElementById("warframe-list").appendChild(tr); + }); + + document.getElementById("weapon-list").innerHTML = ""; + ["LongGuns", "Pistols", "Melee"].forEach(category => { + data[category].forEach(item => { + const tr = document.createElement("tr"); + { + const td = document.createElement("td"); + td.textContent = itemMap[item.ItemType].name; + tr.appendChild(td); + } + { + const td = document.createElement("td"); + td.classList = "text-end"; + if (item.XP < 800_000) { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function () { + addGearExp(category, item.ItemId.$oid, 800_000 - item.XP); + }; + a.textContent = "Make Rank 30"; + td.appendChild(a); + } + tr.appendChild(td); + } + document.getElementById("weapon-list").appendChild(tr); + }); + }); + }); + }); +} + function getKey(input) { return document .getElementById(input.getAttribute("list")) @@ -64,7 +129,7 @@ function getKey(input) { function doAcquireWarframe() { const uniqueName = getKey(document.getElementById("warframe-to-acquire")); if (!uniqueName) { - $("#warframe-to-acquire").addClass("is-invalid"); + $("#warframe-to-acquire").addClass("is-invalid").focus(); return; } const req = $.post({ @@ -77,7 +142,8 @@ function doAcquireWarframe() { }) }); req.done(() => { - alert("Warframe added to your inventory! Visit navigation to force an inventory update."); + document.getElementById("warframe-to-acquire").value = ""; + updateInventory(); }); } @@ -88,7 +154,7 @@ $("#warframe-to-acquire").on("input", () => { function doAcquireWeapon() { const uniqueName = getKey(document.getElementById("weapon-to-acquire")); if (!uniqueName) { - $("#weapon-to-acquire").addClass("is-invalid"); + $("#weapon-to-acquire").addClass("is-invalid").focus(); return; } const req = $.post({ @@ -101,10 +167,33 @@ function doAcquireWeapon() { }) }); req.done(() => { - alert("Weapon added to your inventory! Visit navigation to force an inventory update."); + document.getElementById("weapon-to-acquire").value = ""; + updateInventory(); }); } $("#weapon-to-acquire").on("input", () => { $("#weapon-to-acquire").removeClass("is-invalid"); }); + +function addGearExp(category, oid, xp) { + const data = { + Missions: { + Tag: "SolNode0", + Completes: 0 + } + }; + data[category] = [ + { + ItemId: { $oid: oid }, + XP: xp + } + ]; + $.post({ + url: "/api/missionInventoryUpdate.php?accountId=" + window.accountId, + contentType: "text/plain", + data: JSON.stringify(data) + }).done(function () { + updateInventory(); + }); +} -- 2.47.2 From 9f0317fed28fba2501a7deb0314f3966e921d8e1 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:19:42 +0200 Subject: [PATCH 089/522] chore: resolve various eslint complaints (#169) --- package.json | 1 + src/controllers/api/addFriendImageController.ts | 2 +- src/controllers/api/claimCompletedRecipeController.ts | 2 +- src/controllers/api/createGuildController.ts | 6 +++--- src/controllers/api/findSessionsController.ts | 8 ++++---- src/controllers/api/hostSessionController.ts | 2 +- src/controllers/api/inventorySlotsController.ts | 2 +- src/controllers/api/joinSessionController.ts | 4 ++-- src/controllers/api/saveLoadout.ts | 1 - src/controllers/api/trainingResultController.ts | 1 - src/controllers/api/updateSessionController.ts | 1 - src/controllers/dynamic/worldStateController.ts | 1 - src/controllers/stats/viewController.ts | 2 +- src/helpers/purchaseHelpers.ts | 1 - src/helpers/stringHelpers.ts | 2 +- src/managers/sessionManager.ts | 2 +- src/middleware/middleware.ts | 2 +- src/models/inventoryModels/inventoryModel.ts | 2 +- src/models/shipModel.ts | 4 ++-- src/services/recipeService.ts | 2 +- src/types/guildTypes.ts | 3 --- src/types/inventoryTypes/inventoryTypes.ts | 1 - 22 files changed, 22 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index dc945973..bb769968 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts ", "build": "tsc", "lint": "eslint --ext .ts .", + "lint:fix": "eslint --fix --ext .ts .", "prettier": "prettier --write ." }, "license": "GNU", diff --git a/src/controllers/api/addFriendImageController.ts b/src/controllers/api/addFriendImageController.ts index f671493c..a5a164c6 100644 --- a/src/controllers/api/addFriendImageController.ts +++ b/src/controllers/api/addFriendImageController.ts @@ -6,7 +6,7 @@ import { getInventory } from "@/src/services/inventoryService"; const addFriendImageController: RequestHandler = async (req, res) => { const accountId = req.query.accountId as string; const json = getJSONfromString(req.body.toString()) as IUpdateGlyphRequest; - let inventory = await getInventory(accountId); + const inventory = await getInventory(accountId); inventory.ActiveAvatarImageType = json.AvatarImageType; await inventory.save(); res.json({}); diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts index 02120194..37a8536b 100644 --- a/src/controllers/api/claimCompletedRecipeController.ts +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -1,7 +1,7 @@ //this is a controller for the claimCompletedRecipe route //it will claim a recipe for the user -import { Request, RequestHandler, Response } from "express"; +import { RequestHandler } from "express"; import { logger } from "@/src/utils/logger"; import { getItemByBlueprint, getItemCategoryByUniqueName } from "@/src/services/itemDataService"; import { IOid } from "@/src/types/commonTypes"; diff --git a/src/controllers/api/createGuildController.ts b/src/controllers/api/createGuildController.ts index c8828b03..cb101aba 100644 --- a/src/controllers/api/createGuildController.ts +++ b/src/controllers/api/createGuildController.ts @@ -5,16 +5,16 @@ import { Guild } from "@/src/models/guildModel"; import { IGuild, ICreateGuildRequest } from "@/src/types/guildTypes"; const createGuildController: RequestHandler = async (req, res) => { - let payload: ICreateGuildRequest = getJSONfromString(req.body.toString()); + const payload: ICreateGuildRequest = getJSONfromString(req.body.toString()); // Create guild on database - let guild = new Guild({ + const guild = new Guild({ Name: payload.guildName } satisfies IGuild); await guild.save(); // Update inventory - let inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); + const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); if (inventory) { // Set GuildId inventory.GuildId = guild._id; diff --git a/src/controllers/api/findSessionsController.ts b/src/controllers/api/findSessionsController.ts index f6983910..c35b9607 100644 --- a/src/controllers/api/findSessionsController.ts +++ b/src/controllers/api/findSessionsController.ts @@ -6,23 +6,23 @@ import { logger } from "@/src/utils/logger"; const findSessionsController: RequestHandler = (_req, res) => { const reqBody = JSON.parse(_req.body); logger.debug("FindSession Request ", { reqBody }); - let req = JSON.parse(_req.body); + const req = JSON.parse(_req.body); if (req.id != undefined) { logger.debug("Found ID"); - let session = getSession(req.id); + const session = getSession(req.id); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } else if (req.originalSessionId != undefined) { logger.debug("Found OriginalSessionID"); - let session = getSession(req.originalSessionId); + const session = getSession(req.originalSessionId); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } else { logger.debug("Found SessionRequest"); - let session = getSession(_req.body); + const session = getSession(_req.body); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } diff --git a/src/controllers/api/hostSessionController.ts b/src/controllers/api/hostSessionController.ts index f602503e..7adaee90 100644 --- a/src/controllers/api/hostSessionController.ts +++ b/src/controllers/api/hostSessionController.ts @@ -6,7 +6,7 @@ import { ISession } from "@/src/types/session"; const hostSessionController: RequestHandler = (req, res) => { const hostSessionRequest = JSON.parse(req.body as string) as ISession; logger.debug("HostSession Request", { hostSessionRequest }); - let session = createNewSession(hostSessionRequest, req.query.accountId as string); + const session = createNewSession(hostSessionRequest, req.query.accountId as string); logger.debug(`New Session Created`, { session }); res.json({ sessionId: { $oid: session.sessionId }, rewardSeed: 99999999 }); diff --git a/src/controllers/api/inventorySlotsController.ts b/src/controllers/api/inventorySlotsController.ts index 9da2751f..ad2165a9 100644 --- a/src/controllers/api/inventorySlotsController.ts +++ b/src/controllers/api/inventorySlotsController.ts @@ -1,5 +1,5 @@ import { parseString } from "@/src/helpers/general"; -import { getInventory, updateCurrency } from "@/src/services/inventoryService"; +import { updateCurrency } from "@/src/services/inventoryService"; import { RequestHandler } from "express"; import { updateSlots } from "@/src/services/inventoryService"; import { SlotNameToInventoryName } from "@/src/types/purchaseTypes"; diff --git a/src/controllers/api/joinSessionController.ts b/src/controllers/api/joinSessionController.ts index 7bf6785c..84837692 100644 --- a/src/controllers/api/joinSessionController.ts +++ b/src/controllers/api/joinSessionController.ts @@ -5,8 +5,8 @@ import { logger } from "@/src/utils/logger"; const joinSessionController: RequestHandler = (_req, res) => { const reqBody = JSON.parse(_req.body); logger.debug(`JoinSession Request`, { reqBody }); - let req = JSON.parse(_req.body); - let session = getSessionByID(req.sessionIds[0]); + const req = JSON.parse(_req.body); + const session = getSessionByID(req.sessionIds[0]); res.json({ rewardSeed: session?.rewardSeed, sessionId: { $oid: session?.sessionId } }); }; diff --git a/src/controllers/api/saveLoadout.ts b/src/controllers/api/saveLoadout.ts index 7d15593a..3942a3ea 100644 --- a/src/controllers/api/saveLoadout.ts +++ b/src/controllers/api/saveLoadout.ts @@ -1,5 +1,4 @@ import { RequestHandler } from "express"; -import util from "util"; import { ISaveLoadoutRequest } from "@/src/types/saveLoadoutTypes"; import { handleInventoryItemConfigChange } from "@/src/services/saveLoadoutService"; import { parseString } from "@/src/helpers/general"; diff --git a/src/controllers/api/trainingResultController.ts b/src/controllers/api/trainingResultController.ts index db2965bf..09aa0fc6 100644 --- a/src/controllers/api/trainingResultController.ts +++ b/src/controllers/api/trainingResultController.ts @@ -1,6 +1,5 @@ import { parseString } from "@/src/helpers/general"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; -import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { getInventory } from "@/src/services/inventoryService"; import { IMongoDate } from "@/src/types/commonTypes"; import { RequestHandler } from "express"; diff --git a/src/controllers/api/updateSessionController.ts b/src/controllers/api/updateSessionController.ts index c6a5f555..e949d83e 100644 --- a/src/controllers/api/updateSessionController.ts +++ b/src/controllers/api/updateSessionController.ts @@ -1,6 +1,5 @@ import { RequestHandler } from "express"; import { updateSession } from "@/src/managers/sessionManager"; -import { logger } from "@/src/utils/logger"; const updateSessionGetController: RequestHandler = (_req, res) => { res.json({}); diff --git a/src/controllers/dynamic/worldStateController.ts b/src/controllers/dynamic/worldStateController.ts index 7bdc6a93..5b4ead6b 100644 --- a/src/controllers/dynamic/worldStateController.ts +++ b/src/controllers/dynamic/worldStateController.ts @@ -1,5 +1,4 @@ import { RequestHandler } from "express"; -import config from "@/config.json"; import worldState from "@/static/fixed_responses/worldState.json"; const worldStateController: RequestHandler = (_req, res) => { diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index 482e3fde..82282611 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -5,7 +5,7 @@ import view from "@/static/fixed_responses/view.json"; import allScans from "@/static/fixed_responses/allScans.json"; const viewController: RequestHandler = (_req, res) => { - let responseJson: IStatsView = view; + const responseJson: IStatsView = view; if (config.unlockAllScans) { responseJson.Scans = allScans; } diff --git a/src/helpers/purchaseHelpers.ts b/src/helpers/purchaseHelpers.ts index 8eb82c17..2b208221 100644 --- a/src/helpers/purchaseHelpers.ts +++ b/src/helpers/purchaseHelpers.ts @@ -1,5 +1,4 @@ import { parseBoolean, parseNumber, parseString } from "@/src/helpers/general"; -import { weapons } from "@/src/services/itemDataService"; import { slotPurchaseNameToSlotName } from "@/src/services/purchaseService"; import { IPurchaseRequest, SlotPurchaseName } from "@/src/types/purchaseTypes"; diff --git a/src/helpers/stringHelpers.ts b/src/helpers/stringHelpers.ts index 75b42136..ea6e47ef 100644 --- a/src/helpers/stringHelpers.ts +++ b/src/helpers/stringHelpers.ts @@ -1,4 +1,4 @@ -export const getJSONfromString = (str: string) => { +export const getJSONfromString = (str: string): any => { const jsonSubstring = str.substring(0, str.lastIndexOf("}") + 1); return JSON.parse(jsonSubstring); }; diff --git a/src/managers/sessionManager.ts b/src/managers/sessionManager.ts index 1138b310..54fae2e5 100644 --- a/src/managers/sessionManager.ts +++ b/src/managers/sessionManager.ts @@ -60,7 +60,7 @@ function getSession(sessionIdOrRequest: string | IFindSessionRequest): any[] { return []; } - const request = sessionIdOrRequest as IFindSessionRequest; + const request = sessionIdOrRequest; const matchingSessions = sessions.filter(session => { for (const key in request) { if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof ISession]) { diff --git a/src/middleware/middleware.ts b/src/middleware/middleware.ts index 92a69de7..0a406672 100644 --- a/src/middleware/middleware.ts +++ b/src/middleware/middleware.ts @@ -1,5 +1,5 @@ import { logger } from "@/src/utils/logger"; -import { NextFunction, Request, Response } from "express"; +import { /*NextFunction,*/ Request, Response } from "express"; const unknownEndpointHandler = (request: Request, response: Response) => { logger.error(`unknown endpoint ${request.method} ${request.path}`); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 547c56aa..287ce62e 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -38,7 +38,7 @@ import { IPeriodicMissionCompletionResponse, ILoreFragmentScan } from "../../types/inventoryTypes/inventoryTypes"; -import { IMongoDate, IOid } from "../../types/commonTypes"; +import { IOid } from "../../types/commonTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; import { diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index cf2486a4..4b63bfb8 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,5 +1,5 @@ -import { Model, Schema, StringSchemaDefinition, Types, model } from "mongoose"; -import { IApartment, IPlacedDecosDatabase, IRooms, IShipDatabase } from "../types/shipTypes"; +import { Schema, model } from "mongoose"; +import { IShipDatabase } from "../types/shipTypes"; import { toOid } from "@/src/helpers/inventoryHelpers"; import { colorSchema } from "@/src/models/inventoryModels/inventoryModel"; import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes"; diff --git a/src/services/recipeService.ts b/src/services/recipeService.ts index 8bfdcc93..953992f6 100644 --- a/src/services/recipeService.ts +++ b/src/services/recipeService.ts @@ -1,6 +1,6 @@ import { unixTimesInMs } from "@/src/constants/timeConstants"; import { getInventory } from "@/src/services/inventoryService"; -import { getItemByBlueprint, getItemCategoryByUniqueName } from "@/src/services/itemDataService"; +import { getItemByBlueprint } from "@/src/services/itemDataService"; import { logger } from "@/src/utils/logger"; import { Types } from "mongoose"; diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index 4e4e5f74..c5f1f6f2 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -1,6 +1,3 @@ -import { Types } from "mongoose"; -import { IOid } from "@/src/types/commonTypes"; - export interface IGuild { Name: string; } diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 99792a20..86d2b008 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -11,7 +11,6 @@ import { } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; -import { Colour } from "warframe-items"; //Document extends will be deleted soon. TODO: delete and migrate uses to ... export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} -- 2.47.2 From 2328529348cdd8951ec2b83ef99343cf381bb21a Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:21:46 +0200 Subject: [PATCH 090/522] feat: Update allQuestKeys.json (#164) --- static/fixed_responses/allQuestKeys.json | 75 ++++++++++++------------ 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/static/fixed_responses/allQuestKeys.json b/static/fixed_responses/allQuestKeys.json index 1a822001..61520beb 100644 --- a/static/fixed_responses/allQuestKeys.json +++ b/static/fixed_responses/allQuestKeys.json @@ -1,41 +1,38 @@ [ - { - "ItemType": "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/SacrificeQuest/SacrificeQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/NewWarIntroQuest/NewWarIntroKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/ApostasyQuest/ApostasyKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/ZarimanQuest/ZarimanQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" - }, - { - "ItemType": "/Lotus/Types/Keys/ArchwingQuest/ArchwingQuestKeyChain" - } + { "ItemType": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/GlassQuest/GlassQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/SolarisQuest/SolarisQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/ArchwingQuest/ArchwingQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/GetClemQuest/GetClemQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/SpyQuestKeyChain/SpyQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/DragonQuest/DragonQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/LimboQuest/LimboQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/SentientQuest/SentientQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/MirageQuest/MirageQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/InfestedAladVQuest/InfestedAladVQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/GolemQuest/GolemQuestKeyChainItem" }, + { "ItemType": "/Lotus/Types/Keys/BardQuest/BardQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/FairyQuest/FairyQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/IndexQuest/IndexQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/PriestFrameQuest/PriestQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/ApostasyQuest/ApostasyKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/SacrificeQuest/SacrificeQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/ChimeraQuest/ChimeraKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/MummyQuest/MummyQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/NewWarIntroQuest/NewWarIntroKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/ProteaQuest/ProteaQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/RevenantQuest/RevenantQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/WraithQuest/WraithQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/YareliQuest/YareliQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/ZarimanQuest/ZarimanQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/KahlQuest/KahlQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" }, + { "ItemType": "/Lotus/Types/Keys/EntratiLab/EntratiQuestKeyChain" } ] -- 2.47.2 From 9f98a68630ac5184ba6606b978066041f83304e6 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:22:40 +0200 Subject: [PATCH 091/522] chore: update dependencies (#166) Co-authored-by: Sainan --- .github/workflows/build.yml | 18 + package-lock.json | 629 +++++--------------------------- package.json | 10 +- src/services/itemDataService.ts | 4 +- 4 files changed, 124 insertions(+), 537 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..364b5f51 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,18 @@ +name: Build +on: + push: {} + pull_request: {} +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v4.1.2 + - name: Setup Node.js environment + uses: actions/setup-node@v4.0.2 + with: + node-version: "20.x" + - run: npm ci + - run: npm run build diff --git a/package-lock.json b/package-lock.json index 52e6e3b8..5b36859d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^8.0.2", - "warframe-items": "1.1260.121", + "mongoose": "^8.1.1", + "warframe-items": "^1.1261.19", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" }, @@ -22,10 +22,10 @@ "@types/morgan": "^1.9.7", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", - "eslint": "^8.45.0", - "eslint-plugin-prettier": "^5.0.0", + "eslint": "^8.56.0", + "eslint-plugin-prettier": "^5.1.3", "morgan": "^1.10.0", - "prettier": "^3.0.0", + "prettier": "^3.2.4", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", "typescript": "^5.2.2" @@ -90,18 +90,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -145,22 +145,22 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -204,9 +204,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@jridgewell/resolve-uri": { @@ -277,19 +277,11 @@ "node": ">= 8" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -947,6 +939,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1097,15 +1095,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1143,18 +1132,6 @@ "node": ">= 0.6" } }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1191,21 +1168,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bytes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", @@ -1407,52 +1369,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1556,27 +1472,28 @@ } }, "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1610,23 +1527,24 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "synckit": "^0.8.6" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/prettier" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", + "eslint-config-prettier": "*", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -1638,10 +1556,26 @@ } } }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1667,31 +1601,6 @@ } } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1727,15 +1636,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/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/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -1748,7 +1648,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -1774,29 +1674,6 @@ "node": ">= 0.6" } }, - "node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/express": { "version": "5.0.0-beta.1", "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", @@ -2038,18 +1915,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "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", @@ -2083,9 +1948,9 @@ } }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2167,15 +2032,6 @@ "node": ">= 0.6" } }, - "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2273,21 +2129,6 @@ "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==", - "dev": true, - "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", @@ -2309,24 +2150,6 @@ "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==", - "dev": true, - "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", @@ -2345,45 +2168,6 @@ "node": ">=8" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2530,12 +2314,6 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2585,18 +2363,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2802,33 +2568,6 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/object-hash": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", @@ -2874,39 +2613,6 @@ "fn.name": "1.x.x" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -3020,12 +2726,6 @@ "node": ">=8" } }, - "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", @@ -3048,9 +2748,9 @@ } }, "node_modules/prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", - "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -3239,110 +2939,6 @@ "node": ">= 0.10" } }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-applescript/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3498,12 +3094,6 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -3593,18 +3183,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3642,13 +3220,13 @@ } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -3668,18 +3246,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3865,9 +3431,9 @@ } }, "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "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/type-check": { @@ -3927,15 +3493,6 @@ "node": ">= 0.8" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3973,9 +3530,21 @@ } }, "node_modules/warframe-items": { - "version": "1.1260.121", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.121.tgz", - "integrity": "sha512-C/te9WSsc3HzeSAgziAGKs6sKnYqCO41QDov8E6RUfl3D06C7ko8mHsJ2j65zF515IatJl/xelVtp0aAnQcWiQ==" + "version": "1.1262.53", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1262.53.tgz", + "integrity": "sha512-Giz4uhphKILnM93dJYuvGnToIR1qewEBlmzyoBWjqfD2pViyE9BHayQrQQgcn9zkfZh0WUfjC+jwiRZukt73hg==", + "peerDependencies": { + "warframe-worldstate-data": "^2" + } + }, + "node_modules/warframe-worldstate-data": { + "version": "2.5.14", + "resolved": "https://registry.npmjs.org/warframe-worldstate-data/-/warframe-worldstate-data-2.5.14.tgz", + "integrity": "sha512-85UFs+kW0+rBW+fWcf8vCiLOIsTcH6ZkO8ANz7fiDTQfWdA5Y33jT2Z21RiVvtNDHDFXNrpZfpZtibJfhffdqA==", + "peer": true, + "engines": { + "node": ">=18.19.0" + } }, "node_modules/webidl-conversions": { "version": "7.0.0", diff --git a/package.json b/package.json index bb769968..bd4de220 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^8.0.2", - "warframe-items": "1.1260.121", + "mongoose": "^8.1.1", + "warframe-items": "^1.1261.19", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" }, @@ -26,10 +26,10 @@ "@types/morgan": "^1.9.7", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.2.0", - "eslint": "^8.45.0", - "eslint-plugin-prettier": "^5.0.0", + "eslint": "^8.56.0", + "eslint-plugin-prettier": "^5.1.3", "morgan": "^1.10.0", - "prettier": "^3.0.0", + "prettier": "^3.2.4", "ts-node-dev": "^2.0.0", "tsconfig-paths": "^4.2.0", "typescript": "^5.2.2" diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index f46bc72d..b936d3f5 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -94,8 +94,8 @@ export const blueprintNames = Object.fromEntries( const buildables = items.filter(item => !!(item as Buildable).components); export const getItemByBlueprint = (uniqueName: string): (MinItem & Buildable) | undefined => { - const item = buildables.find( - item => (item as Buildable).components?.find(component => component.uniqueName === uniqueName) + const item = buildables.find(item => + (item as Buildable).components?.find(component => component.uniqueName === uniqueName) ); return item; }; -- 2.47.2 From 36ebc52696906cf7984aca828c551b479aca7990 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:30:48 +0200 Subject: [PATCH 092/522] fix: IGenericItemDatabase (#171) --- src/types/inventoryTypes/inventoryTypes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 86d2b008..38a0041f 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -95,7 +95,7 @@ export interface IGenericItem { } export interface IGenericItemDatabase extends Omit { - _id: Types.ItemId; + _id: Types.ObjectId; } export type TGenericItemKey = "Suits" | "LongGuns" | "Pistols" | "Melee"; -- 2.47.2 From fd56203f35fca2f4c0538fa9c00f7567152f5df4 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:38:10 +0200 Subject: [PATCH 093/522] feat: implement pledging to syndicate (#162) --- src/controllers/api/setSupportedSyndicateController.ts | 9 +++++++++ src/models/inventoryModels/inventoryModel.ts | 2 ++ src/routes/api.ts | 2 ++ src/types/inventoryTypes/inventoryTypes.ts | 1 + 4 files changed, 14 insertions(+) create mode 100644 src/controllers/api/setSupportedSyndicateController.ts diff --git a/src/controllers/api/setSupportedSyndicateController.ts b/src/controllers/api/setSupportedSyndicateController.ts new file mode 100644 index 00000000..78ef26f3 --- /dev/null +++ b/src/controllers/api/setSupportedSyndicateController.ts @@ -0,0 +1,9 @@ +import { RequestHandler } from "express"; +import { getInventory } from "@/src/services/inventoryService"; + +export const setSupportedSyndicateController: RequestHandler = async (req, res) => { + const inventory = await getInventory(req.query.accountId as string); + inventory.SupportedSyndicate = req.query.syndicate as string; + await inventory.save(); + res.end(); +}; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 287ce62e..43f15819 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -645,6 +645,8 @@ const inventorySchema = new Schema( //Curent trade info Giving or Getting items PendingTrades: [Schema.Types.Mixed], + //Syndicate currently being pledged to. + SupportedSyndicate: String, //Curent Syndicates rank\exp Affiliations: [affiliationsSchema], //Syndicates Missions complate(Navigation->Syndicate) diff --git a/src/routes/api.ts b/src/routes/api.ts index c8fa928e..8212ebc1 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -46,6 +46,7 @@ import { addFriendImageController } from "@/src/controllers/api/addFriendImageCo import { createGuildController } from "@/src/controllers/api/createGuildController"; import { sellController } from "@/src/controllers/api/sellController"; import { upgradesController } from "@/src/controllers/api/upgradesController"; +import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController"; const apiRouter = express.Router(); @@ -73,6 +74,7 @@ apiRouter.get("/logout.php", logoutController); apiRouter.get("/setBootLocation.php", setBootLocationController); apiRouter.get("/setActiveShip.php", setActiveShipController); apiRouter.get("/getGuild.php", getGuildController); +apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController); // post // eslint-disable-next-line @typescript-eslint/no-misused-promises diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 38a0041f..5fce938b 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -190,6 +190,7 @@ export interface IInventoryResponse { Boosters: IBooster[]; ActiveDojoColorResearch: string; SentientSpawnChanceBoosters: ISentientSpawnChanceBoosters; + SupportedSyndicate?: string; Affiliations: IAffiliation[]; QualifyingInvasions: any[]; FactionScores: number[]; -- 2.47.2 From 984c4ee43ebbab4555b0ae68acc91d65bb37e76c Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 15:39:27 +0200 Subject: [PATCH 094/522] feat: persist boot location (#159) --- src/controllers/api/setBootLocationController.ts | 10 +++++++--- src/models/personalRoomsModel.ts | 7 ++++++- src/types/personalRoomsTypes.ts | 3 ++- src/types/shipTypes.ts | 4 +++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/controllers/api/setBootLocationController.ts b/src/controllers/api/setBootLocationController.ts index b469c349..62fcd680 100644 --- a/src/controllers/api/setBootLocationController.ts +++ b/src/controllers/api/setBootLocationController.ts @@ -1,6 +1,10 @@ -import { logger } from "@/src/utils/logger"; -import { Request, Response } from "express"; +import { RequestHandler } from "express"; +import { getPersonalRooms } from "@/src/services/personalRoomsService"; +import { TBootLocation } from "@/src/types/shipTypes"; -export const setBootLocationController = (_req: Request, res: Response) => { +export const setBootLocationController: RequestHandler = async (req, res) => { + const personalRooms = await getPersonalRooms(req.query.accountId as string); + personalRooms.Ship.BootLocation = req.query.bootLocation as string as TBootLocation; + await personalRooms.save(); res.end(); }; diff --git a/src/models/personalRoomsModel.ts b/src/models/personalRoomsModel.ts index 6829932e..8f4abede 100644 --- a/src/models/personalRoomsModel.ts +++ b/src/models/personalRoomsModel.ts @@ -46,7 +46,12 @@ const apartmentSchema = new Schema( ); const orbiterSchema = new Schema( - { Features: [String], Rooms: [roomSchema], ContentUrlSignature: String }, + { + Features: [String], + Rooms: [roomSchema], + ContentUrlSignature: String, + BootLocation: String + }, { _id: false } ); diff --git a/src/types/personalRoomsTypes.ts b/src/types/personalRoomsTypes.ts index d481808a..68ddec83 100644 --- a/src/types/personalRoomsTypes.ts +++ b/src/types/personalRoomsTypes.ts @@ -1,10 +1,11 @@ -import { IApartment, IRooms, IPlacedDecosDatabase } from "@/src/types/shipTypes"; +import { IApartment, IRooms, IPlacedDecosDatabase, TBootLocation } from "@/src/types/shipTypes"; import { Model, Types } from "mongoose"; export interface IOrbiter { Features: string[]; Rooms: IRooms[]; ContentUrlSignature: string; + BootLocation?: TBootLocation; } export interface IPersonalRooms { diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index c8b82a1a..53cf1f87 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -19,13 +19,15 @@ export interface IShipInterior { SkinFlavourItem?: string; } +export type TBootLocation = "LISET" | "DRIFTER_CAMP" | "APARTMENT"; + export interface IShip { Features: string[]; ShipId: IOid; ShipInterior: IShipInterior; Rooms: IRooms[]; ContentUrlSignature: string; - BootLocation?: "LISET" | "DRIFTER_CAMP" | "APARTMENT"; + BootLocation?: TBootLocation; } export interface IShipDatabase { -- 2.47.2 From abe139151abe9636b7fa600b91030266b1319100 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 21:06:20 +0200 Subject: [PATCH 095/522] build(deps): bump express from 5.0.0-beta.1 to 5.0.0-beta.3 (#175) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 416 ++++++++++++++++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 315 insertions(+), 103 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b36859d..e3aa30c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "GNU", "dependencies": { "dotenv": "^16.1.3", - "express": "^5.0.0-beta.1", + "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", "winston": "^3.11.0", @@ -1105,31 +1105,43 @@ } }, "node_modules/body-parser": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", - "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", + "version": "2.0.0-beta.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.2.tgz", + "integrity": "sha512-oxdqeGYQcO5ovwwkC1A89R0Mf0v3+7smTVh0chGfzDeiK37bg5bYNtXDy3Nmzn6CShoIYk5+nHTyBoSZIWwnCA==", "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "3.1.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.5.2", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "3.0.0-beta.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { "node": ">= 0.10" } }, - "node_modules/body-parser/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/body-parser/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/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.6" + "node": ">= 0.8" } }, "node_modules/brace-expansion": { @@ -1169,13 +1181,31 @@ "dev": true }, "node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "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/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1323,9 +1353,9 @@ } }, "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -1369,19 +1399,38 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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==", - "dev": true, "engines": { "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + "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/diff": { "version": "4.0.2", @@ -1454,6 +1503,25 @@ "node": ">= 0.8" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1675,39 +1743,40 @@ } }, "node_modules/express": { - "version": "5.0.0-beta.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", - "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", + "version": "5.0.0-beta.3", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.3.tgz", + "integrity": "sha512-e7Qizw4gMBVe1Ky2oNi5C1h6oS8aWDcY2yYxvRMy5aMc6t2aqobuHpQRfR3LRC9NAW/c6081SeGWMGBorLXePg==", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "3.0.0", - "body-parser": "2.0.0-beta.1", + "body-parser": "2.0.0-beta.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "3.1.0", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "mime-types": "~2.1.34", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-is-absolute": "1.0.1", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.11.0", "range-parser": "~1.2.1", - "router": "2.0.0-beta.1", + "router": "2.0.0-beta.2", "safe-buffer": "5.2.1", - "send": "1.0.0-beta.1", - "serve-static": "2.0.0-beta.1", + "send": "1.0.0-beta.2", + "serve-static": "2.0.0-beta.2", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -1724,12 +1793,15 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/express/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.6" + "node": ">= 0.8" } }, "node_modules/fast-deep-equal": { @@ -1831,22 +1903,33 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/finalhandler/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/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -1910,10 +1993,30 @@ "dev": true }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "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/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/glob": { "version": "7.2.3", @@ -1982,6 +2085,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -2009,33 +2123,69 @@ "node": ">=8" } }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "depd": "~1.1.2", + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "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/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/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": ">= 0.8" } }, "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==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -2168,6 +2318,11 @@ "node": ">=8" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2576,10 +2731,19 @@ "node": ">= 6" } }, + "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/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==", + "dev": true, "dependencies": { "ee-first": "1.1.1" }, @@ -2795,9 +2959,12 @@ } }, "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "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" }, @@ -2834,13 +3001,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "3.0.0-beta.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0-beta.1.tgz", + "integrity": "sha512-XlSTHr67bCjSo5aOfAnN3x507zGvi3unF65BW57limYkc2ws/XB0mLUtJvvP7JGFeSPsYrlCv1ZrPGh0cwDxPQ==", "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.5.2", "unpipe": "1.0.0" }, "engines": { @@ -2924,11 +3091,12 @@ } }, "node_modules/router": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", - "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", + "version": "2.0.0-beta.2", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.2.tgz", + "integrity": "sha512-ascmzrv4IAB64SpWzFwYOA+jz6PaUbrzHLPsQrPjQ3uQTL2qlhwY9S2sRvvBMgUISQptQG457jcWWcWqtwrbag==", "dependencies": { "array-flatten": "3.0.0", + "is-promise": "4.0.0", "methods": "~1.1.2", "parseurl": "~1.3.3", "path-to-regexp": "3.2.0", @@ -3010,22 +3178,22 @@ } }, "node_modules/send": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", - "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.2.tgz", + "integrity": "sha512-k1yHu/FNK745PULKdsGpQ+bVSXYNwSk+bWnYzbxGZbt5obZc0JKDVANsCRuJD1X/EG15JtP9eZpwxkhUxIYEcg==", "dependencies": { "debug": "3.1.0", - "destroy": "~1.0.4", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime-types": "~2.1.34", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.10" @@ -3049,20 +3217,47 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/send/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/serve-static": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", - "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", + "version": "2.0.0-beta.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.2.tgz", + "integrity": "sha512-Ge718g4UJjzYoXFEGLY/VLSuTHp0kQcUV65QA98J8d3XREsVIHu53GBh9NWjDy4u2xwsSwRzu9nu7Q+b4o6Xyw==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "1.0.0-beta.1" + "send": "^1.0.0-beta.2" }, "engines": { "node": ">= 0.10" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -3089,6 +3284,23 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sift": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", @@ -3147,11 +3359,11 @@ } }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/string_decoder": { diff --git a/package.json b/package.json index bd4de220..1c987971 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "license": "GNU", "dependencies": { "dotenv": "^16.1.3", - "express": "^5.0.0-beta.1", + "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", "winston": "^3.11.0", -- 2.47.2 From a8ea8d1364662b6471e803422b8d09ee0233dd54 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 6 May 2024 21:49:49 +0200 Subject: [PATCH 096/522] feat(webui): add "Remove" option for owned warframes & weapons (#172) --- static/webui/script.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/static/webui/script.js b/static/webui/script.js index 52ff2ce3..0a3de30c 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -83,6 +83,16 @@ function updateInventory() { }; a.textContent = "Make Rank 30"; td.appendChild(a); + td.innerHTML += " · "; + } + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function () { + disposeOfGear("Suits", item.ItemId.$oid); + }; + a.textContent = "Remove"; + td.appendChild(a); } tr.appendChild(td); } @@ -109,6 +119,16 @@ function updateInventory() { }; a.textContent = "Make Rank 30"; td.appendChild(a); + td.innerHTML += " · "; + } + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function () { + disposeOfGear(category, item.ItemId.$oid); + }; + a.textContent = "Remove"; + td.appendChild(a); } tr.appendChild(td); } @@ -197,3 +217,23 @@ function addGearExp(category, oid, xp) { updateInventory(); }); } + +function disposeOfGear(category, oid) { + const data = { + SellCurrency: "SC_RegularCredits", + SellPrice: 0, + Items: {} + }; + data.Items[category] = [ + { + String: oid + } + ]; + $.post({ + url: "/api/sell.php?accountId=" + window.accountId, + contentType: "text/plain", + data: JSON.stringify(data) + }).done(function () { + updateInventory(); + }); +} -- 2.47.2 From 7b3f9b3015f4fc23bcbb85d98040a855c362676e Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 7 May 2024 20:38:44 +0200 Subject: [PATCH 097/522] fix: using ILoadoutConfigClient to write to database (#190) --- src/services/saveLoadoutService.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index 826a8548..c08a47b3 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -2,6 +2,7 @@ import { IItemEntry, ILoadoutClient, ILoadoutEntry, + ILoadoutConfigDatabase, IOperatorConfigEntry, ISaveLoadoutRequestNoUpgradeVer } from "@/src/types/saveLoadoutTypes"; @@ -86,10 +87,14 @@ export const handleInventoryItemConfigChange = async ( loadout => loadout._id.toString() === loadoutId ); + const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig; + const loadoutConfigDatabase: ILoadoutConfigDatabase = { + _id: new Types.ObjectId(ItemId.$oid), + ...loadoutConfigItemIdRemoved + }; + // if no config with this id exists, create a new one if (!oldLoadoutConfig) { - const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig; - //save the new object id and assign it for every ffff return at the end if (ItemId.$oid === "ffffffffffffffffffffffff") { if (!newLoadoutId) { @@ -99,10 +104,7 @@ export const handleInventoryItemConfigChange = async ( continue; } - loadout[loadoutSlot].push({ - _id: ItemId.$oid, - ...loadoutConfigItemIdRemoved - }); + loadout[loadoutSlot].push(loadoutConfigDatabase); continue; } @@ -111,7 +113,7 @@ export const handleInventoryItemConfigChange = async ( throw new Error("loadout index not found"); } - loadout[loadoutSlot][loadoutIndex].overwrite(loadoutConfig); + loadout[loadoutSlot][loadoutIndex].overwrite(loadoutConfigDatabase); } } await loadout.save(); -- 2.47.2 From a9973ec3629c821063f925bfed518525cedc1a6e Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 7 May 2024 23:50:14 +0200 Subject: [PATCH 098/522] chore: update 35.5.11 (#196) --- config.json | 4 +- static/fixed_responses/worldState.json | 2014 ++++++++++++------------ 2 files changed, 981 insertions(+), 1037 deletions(-) diff --git a/config.json b/config.json index eb243057..d94fc3e7 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,8 @@ { "autoCreateAccount": true, - "buildLabel": "2024.05.01.11.50/q8k9c878As3gCOYnOqkWDw", + "buildLabel": "2024.05.03.11.35/g98E42og3EdWxS0UueO+PQ", "matchmakingBuildId": "6945333874579955227", - "version": "35.5.10", + "version": "35.5.11", "skipStoryModeChoice": true, "skipTutorial": true, "unlockAllScans": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 39cb6bb7..dfe24373 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "Eu0qQaY9z67oSx1EARBlVo0ySrSQSxQkSrP71+llT4AWYvv1MQh/smwgrZ2sg1H+/4d9ssHmiOHt7YzSekEObqltglLyZA5LJIFGOAtV7O1Q3RNvWqDpWAqqnVM+NzsjVb8m6F3VGcB1tfQBNy61hoo0+EE5+c+xi8TIUTVGUb26LTlEX6s1T8SiBBIrgMF4e8RZgqgH3s7RLpG5LU/llRs8am/qJW9FMAmsqQB0FLds4V6uYWgAKHNCttFL54AQanoBhhD0cUTt3uknOmCU8X9ULPsMRe5o1TGdFRTGh5AI35FIJu4cAeU3uJr0nHy437AsOAolbft7svZZJeBRBg==", + "WorldSeed": "RX775wfzICePX+UVmAnxhl7ZwQG3QHdxWUY4GpW8xxt9fr8Be5Y+31oyHkmH0JMnBR1WxaeuJSy+G/hXOGFQ+uJEgXbLZ2KR7+5L57xMpu3Z/U13vpFieWsH8A+fzeEy73/XAQfl6fTyIRB2pOAKKtCPmb4dHEOCJYt1UU/KmsIeQRHaPQE/peRaiyEfHdkgTbL4sL0l4ZNMpM9ng62v1a82AUTAKXQ0EiK9h+gu1M4AMX1s32NGNryIiUxGOQMGpmQ6kRiUOCH8Qqo628AycXIb+qy09G2uKcuUSBUiKtok9SSG3vGCi0Q1suDQ8H+9c26eWcBGUOzGNGZ3AeN8hA==", "Version": 10, "MobileVersion": "4.15.20.0", - "BuildLabel": "2024.05.01.11.50/q8k9c878As3gCOYnOqkWDw", - "Time": 1714604582, + "BuildLabel": "2024.05.03.11.35/g98E42og3EdWxS0UueO+PQ", + "Time": 1715112713, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -147,7 +147,7 @@ { "_id": { "$oid": "65fda306a420b3040308b24c" }, "Messages": [ - { "LanguageCode": "en", "Message": "11 Year Anniversary Kicks Off March 22" }, + { "LanguageCode": "en", "Message": "Take on 11 Year Anniversary Alerts" }, { "LanguageCode": "fr", "Message": "Le 11e anniversaire débute le 22 mars" }, { "LanguageCode": "it", "Message": "L'11° Anniversario inizia il 22 Marzo" }, { "LanguageCode": "de", "Message": "Das 11-jährige Jubiläum beginnt am 22. März" }, @@ -246,7 +246,7 @@ "_id": { "$oid": "6618283ed73d13db82044591" }, "Messages": [ { "LanguageCode": "en", "Message": "Inaros Prime and Ash Prime Return!" }, - { "LanguageCode": "fr", "Message": "Inaros Prime et Ash Prime reviennent !" }, + { "LanguageCode": "fr", "Message": "Inaros Prime et Ash Prime reviennent !" }, { "LanguageCode": "it", "Message": "Tornano Inaros Prime e Ash Prime!" }, { "LanguageCode": "de", "Message": "Inaros Prime und Ash Prime kehren zurück!" }, { "LanguageCode": "es", "Message": "¡Vuelven Inaros Prime y Ash Prime!" }, @@ -338,93 +338,9 @@ "Date": { "$date": { "$numberLong": "1714309140000" } }, "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_04/image.png.7240c58984f0d00ba947db30065da346.png", "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "662fe5225cecaf26be0dd3e2" }, - "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #391!" }], - "Prop": "https://forums.warframe.com/topic/1395842-community-stream-schedule-april-29-may-5-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-CommunityStreams-29", - "Date": { "$date": { "$numberLong": "1714414800000" } }, - "EventStartDate": { "$date": { "$numberLong": "1714687200000" } }, - "EventEndDate": { "$date": { "$numberLong": "1714694400000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframe/", - "ImageUrl": "https://www-static.warframe.com/uploads/dcfc4879ebdf79ffea2ef0467feda2d2.jpg", - "Priority": false, "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "662fe563388aedc77305edb9" }, - "Messages": [{ "LanguageCode": "en", "Message": "Community Stream & Twitch Drop Schedule" }], - "Prop": "https://forums.warframe.com/topic/1395842-community-stream-schedule-april-29-may-5-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-04-CommunityStreams-29", - "Date": { "$date": { "$numberLong": "1714414860000" } }, - "EventEndDate": { "$date": { "$numberLong": "1714942800000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/b7bc31a4e6d505cb2f2bf33dba3c6cb4.png", - "Priority": false, - "MobileOnly": false, - "Community": true, - "HideEndDateModifier": true - }, - { - "_id": { "$oid": "662ff285d85056f8f700c8d3" }, - "Messages": [{ "LanguageCode": "ja", "Message": "4月29日~5月5日の配信スケジュール" }], - "Prop": "https://bit.ly/44mPN6p", - "Date": { "$date": { "$numberLong": "1714418160000" } }, - "EventStartDate": { "$date": { "$numberLong": "1714363200000" } }, - "EventEndDate": { "$date": { "$numberLong": "1714942800000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_04/image.png.4685509b91694cbe29a8f92098f24cc0.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "663103dc7d9348396c01e92b" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Streams et Drops : 29 avril - 5 mai" }], - "Prop": "https://forums.warframe.com/topic/1395945-horaire-des-streams-communautaires-29-avril-5-mai-2024/", - "Date": { "$date": { "$numberLong": "1714488120000" } }, - "EventStartDate": { "$date": { "$numberLong": "1714449600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1714964400000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_04/image.png.4685509b91694cbe29a8f92098f24cc0.png", - "Priority": false, - "MobileOnly": false, - "HideEndDateModifier": true - }, - { - "_id": { "$oid": "663173af7512f12f080f1502" }, - "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops 29 de abril - 5 de mayo" }], - "Prop": "https://forums.warframe.com/topic/1395994-programa-de-streams-y-twitch-drops-29-de-abril-5-de-mayo/", - "Date": { "$date": { "$numberLong": "1714516800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1714942800000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true, - "HideEndDateModifier": true - }, - { - "_id": { "$oid": "6632590d151a22f5ac0d01fd" }, - "Messages": [{ "LanguageCode": "en", "Message": "Protea Prime: Hotfix 35.5.9" }], - "Prop": "https://www.warframe.com/updates/pc/35-5-9", - "Date": { "$date": { "$numberLong": "1714573740000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "663259fa3dd43164410b9af7" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Notes de màj : 35.5.9 / .10" }], - "Prop": "https://forums.warframe.com/topic/1396056-dante-lib%C3%A9r%C3%A9-protea-prime-correctif-3559/", - "Date": { "$date": { "$numberLong": "1714575780000" } }, - "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/8213634f493ec5e3f17b926497ae6870_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "66327bb0a61da886fd0fd08e" }, - "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Hotfix 35.5.10" }], - "Prop": "https://www.warframe.com/updates/pc/35-5-10", - "Date": { "$date": { "$numberLong": "1714584420000" } }, - "Priority": true, - "MobileOnly": false - }, { "_id": { "$oid": "66327e5b2906b749b90b91c9" }, "Messages": [ @@ -466,278 +382,449 @@ "Priority": false, "MobileOnly": false, "Community": true + }, + { + "_id": { "$oid": "6633dffff91b1593f1119fa9" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Nora’s Mix Vol. 5 Ending May 15" }, + { "LanguageCode": "fr", "Message": "Le Mix de Nora Vol. 5 se termine le 15 mai" }, + { "LanguageCode": "it", "Message": "Il Mix di Nora Vol. 5 Termina il 15 Maggio" }, + { "LanguageCode": "de", "Message": "Noras Mix - Vol. 5 endet am 15. Mai" }, + { "LanguageCode": "es", "Message": "El Mix de Nora Vol. 5 termina el 15 de mayo" }, + { "LanguageCode": "pt", "Message": "O Mix da Nora Vol. 5 terminará no dia 15 de maio" }, + { "LanguageCode": "ru", "Message": "Микс Норы - Диск 5 заканчивается 15 мая" }, + { "LanguageCode": "pl", "Message": "Składanka Nory cz. 5: Koniec 15 maja" }, + { "LanguageCode": "uk", "Message": "Вибірка Нори 5 добігає кінця 15 травня" }, + { "LanguageCode": "tr", "Message": "Nora'nın Derlemesi 5. Seri: 15 Mayıs'ta Sona Eriyor" }, + { "LanguageCode": "ja", "Message": "Nora's Mix Vol.5が5月16日に終了" }, + { "LanguageCode": "zh", "Message": "《诺拉的混选 Vol. 5》将于美东夏令时间 5 月 15 日结束" }, + { "LanguageCode": "ko", "Message": "노라의 믹스 Vol. 5가 북미 시각 5월 15일에 종료됩니다" }, + { "LanguageCode": "tc", "Message": "《午夜電波・Nora 合輯 V》於 5 月 15 日結束" } + ], + "Prop": "https://www.warframe.com/news/nightwave-noras-mix-vol-5?utm_medium=in-game&utm_source=ingame&utm_campaign=2024-05-NoarsMixVol5EndingSoon", + "Date": { "$date": { "$numberLong": "1714675380000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/thumbnails/9efe1804a6c8ca508277fcf580e4f33d_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "66393e4f20e843f4b60ddc64" }, + "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #392!" }], + "Prop": "https://forums.warframe.com/topic/1396734-community-stream-schedule-may-6-12-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-05-CommunityStreams-6", + "Date": { "$date": { "$numberLong": "1715027460000" } }, + "EventStartDate": { "$date": { "$numberLong": "1715292000000" } }, + "EventEndDate": { "$date": { "$numberLong": "1715299200000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframe/", + "ImageUrl": "https://www-static.warframe.com/uploads/dcfc4879ebdf79ffea2ef0467feda2d2.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "66393eb520e843f4b60ddc6d" }, + "Messages": [{ "LanguageCode": "en", "Message": "Community Stream & Twitch Drop Schedule" }], + "Prop": "https://forums.warframe.com/topic/1396734-community-stream-schedule-may-6-12-2024/?utm_medium=in-game&utm_source=in-game&utm_campaign=2024-05-CommunityStreams-6", + "Date": { "$date": { "$numberLong": "1715027580000" } }, + "EventEndDate": { "$date": { "$numberLong": "1715536800000" } }, + "ImageUrl": "https://www-static.warframe.com/uploads/00b9714ba1b6a00b61a244dfabfac0e2.png", + "Priority": false, + "MobileOnly": false, + "Community": true, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "6639699adcdcb8f086072b9e" }, + "Messages": [{ "LanguageCode": "ja", "Message": "5月6日~5月12日の配信スケジュール" }], + "Prop": "https://bit.ly/4bbBSTt", + "Date": { "$date": { "$numberLong": "1715038560000" } }, + "EventStartDate": { "$date": { "$numberLong": "1714968000000" } }, + "EventEndDate": { "$date": { "$numberLong": "1715572800000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_05/image.png.7c55b9565cf2b6842b95d5837d86092b.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "663a254b6a5a9f02de05ec81" }, + "Messages": [{ "LanguageCode": "es", "Message": "Programa de Twitch Drops 6 - 12 de mayo" }], + "Prop": "https://forums.warframe.com/topic/1396794-programa-de-streams-y-twitch-drops-6-12-de-mayo/", + "Date": { "$date": { "$numberLong": "1715086140000" } }, + "EventEndDate": { "$date": { "$numberLong": "1715536800000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "663a27629e8a9460ff0a0565" }, + "Messages": [{ "LanguageCode": "es", "Message": "¡Emisión Tenno con sorteo de Protea Prime Access + Twitch Drop!" }], + "Prop": "https://forums.warframe.com/topic/1396794-programa-de-streams-y-twitch-drops-6-12-de-mayo/", + "Date": { "$date": { "$numberLong": "1715086680000" } }, + "EventStartDate": { "$date": { "$numberLong": "1715194800000" } }, + "EventEndDate": { "$date": { "$numberLong": "1715198400000" } }, + "EventLiveUrl": "https://www.twitch.tv/warframeinternational", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "663a2ae3ac7b16e1560e6552" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Drops et Streams : 6 - 12 mai" }], + "Prop": "https://forums.warframe.com/topic/1396796-horaire-des-streams-communautaires-du-6-au-12-mai-2024/", + "Date": { "$date": { "$numberLong": "1715088000000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2024_05/image.png.7c55b9565cf2b6842b95d5837d86092b.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "663a48fbb852d1c353019502" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Lepus Headgear Removal" }], + "Prop": "https://forums.warframe.com/topic/1396809-psa-lepus-headgear-and-spring-step-ephemera-removal/", + "Date": { "$date": { "$numberLong": "1715095740000" } }, + "EventEndDate": { "$date": { "$numberLong": "1715191800000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true, + "HideEndDateModifier": true + }, + { + "_id": { "$oid": "663a72f38386004c0f02f96c" }, + "Messages": [{ "LanguageCode": "en", "Message": "Dante Unbound: Hotfix 35.5.11" }], + "Prop": "https://www.warframe.com/updates/pc/35-5-11", + "Date": { "$date": { "$numberLong": "1715105640000" } }, + "Priority": true, + "MobileOnly": false } ], "Goals": [ { - "_id": { "$oid": "662ab5e1e1102375323874b2" }, - "Activation": { "$date": { "$numberLong": "1714143600000" } }, - "Expiry": { "$date": { "$numberLong": "1714748400000" } }, + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1715097600000" } }, + "Expiry": { "$date": { "$numberLong": "1716307200000" } }, + "Node": "SolNode129", + "ScoreVar": "FissuresClosed", + "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", + "Count": 1, + "HealthPct": 0.01, + "Regions": [1], + "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", + "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", + "OptionalInMission": true, + "Tag": "HeatFissure", + "UpgradeIds": [{ "$oid": "663928b1272f385458ce1a28" }, { "$oid": "663928b1272f385458ce1a29" }], + "Personal": true, + "Community": true, + "Goal": 100, + "Reward": { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], "countedItems": [] }, + "InterimGoals": [5, 25, 50, 75], + "InterimRewards": [ + { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], "countedItems": [] }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], + "countedItems": [] + }, + { + "credits": 0, + "xp": 0, + "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], + "countedItems": [] + }, + { "credits": 0, "xp": 0, "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], "countedItems": [] } + ] + }, + { + "_id": { "$oid": "6633f6ba0ffdbf7850c26764" }, + "Activation": { "$date": { "$numberLong": "1714748400000" } }, + "Expiry": { "$date": { "$numberLong": "1715353200000" } }, "Count": 0, "Goal": 1, "Success": 0, "Personal": true, "ClampNodeScores": true, - "Node": "EventNode24", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2017C", + "Node": "EventNode37", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2021I", "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", - "Tag": "Anniversary2018TacAlert", - "Reward": { "items": ["/Lotus/StoreItems/Weapons/Tenno/LongGuns/DexTheThird/DexTheThird"] } + "Tag": "Anniversary2021TacAlert", + "Reward": { + "items": [ + "/Lotus/StoreItems/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorAArmor", + "/Lotus/StoreItems/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorCArmor", + "/Lotus/StoreItems/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorLArmor", + "/Lotus/StoreItems/Types/Game/CatbrowPet/CatbrowGeneticSignature" + ] + } + }, + { + "_id": { "$oid": "6633f6c60ffdbf7850c26765" }, + "Activation": { "$date": { "$numberLong": "1714748400000" } }, + "Expiry": { "$date": { "$numberLong": "1715353200000" } }, + "Count": 0, + "Goal": 1, + "Success": 0, + "Personal": true, + "ClampNodeScores": true, + "Node": "EventNode26", + "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2024ChallengeModeB", + "Desc": "/Lotus/Language/Events/Anniversary2024ChallengeMode", + "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus11Anniversary.png", + "Tag": "Anniversary2024TacAlertCMB", + "Reward": { "items": ["/Lotus/StoreItems/Types/Recipes/Components/UmbraFormaBlueprint"] } } ], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "6632637dfa3db14abf459a41" }, - "Activation": { "$date": { "$numberLong": "1714579200000" } }, - "Expiry": { "$date": { "$numberLong": "1714665600000" } }, + "_id": { "$oid": "663a4c7d4d932c97c0a3acd7" }, + "Activation": { "$date": { "$numberLong": "1715097600000" } }, + "Expiry": { "$date": { "$numberLong": "1715184000000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 92365, - "Boss": "SORTIE_BOSS_HYENA", + "Seed": 24491, + "Boss": "SORTIE_BOSS_TYL", "ExtraDrops": [], "Variants": [ - { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", "node": "SolNode109", "tileset": "CorpusOutpostTileset" }, - { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_SHIELDS", "node": "SolNode125", "tileset": "CorpusGasCityTileset" }, - { "missionType": "MT_ASSASSINATION", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode127", "tileset": "CorpusShipTileset" } + { "missionType": "MT_TERRITORY", "modifierType": "SORTIE_MODIFIER_ARMOR", "node": "SolNode122", "tileset": "GrineerOceanTileset" }, + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode184", "tileset": "GrineerGalleonTileset" }, + { "missionType": "MT_LANDSCAPE", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode228", "tileset": "EidolonTileset" } ], "Twitter": true } ], "LiteSorties": [ { - "_id": { "$oid": "662edf7d0e0914dc8ec446c1" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, + "_id": { "$oid": "663819fd1cec9ebe9d83a06e" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 45617, - "Boss": "SORTIE_BOSS_AMAR", + "Seed": 58034, + "Boss": "SORTIE_BOSS_NIRA", "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode113" }, - { "missionType": "MT_ARTIFACT", "node": "SolNode41" }, - { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode125" }, + { "missionType": "MT_SURVIVAL", "node": "SolNode74" }, + { "missionType": "MT_ASSASSINATION", "node": "SolNode53" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "6632592d85923ab1aa1e653b" }, - "Activation": { "$date": { "$numberLong": "1714575661601" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "RadioLegionIntermission10Syndicate", - "Seed": 92365, - "Nodes": [] - }, - { - "_id": { "$oid": "663266c53cfe97de1f609f89" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48049" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "ArbitersSyndicate", - "Seed": 92365, - "Nodes": ["SolNode12", "SolNode66", "SolNode26", "SettlementNode3", "SolNode10", "SolNode147", "SolNode187"] + "Seed": 24491, + "Nodes": ["SolNode223", "SolNode89", "SolNode146", "SolNode212", "SolNode167", "SolNode48", "SolNode78"] }, { - "_id": { "$oid": "663266c53cfe97de1f609f8a" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4804a" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "CephalonSudaSyndicate", - "Seed": 27171, - "Nodes": ["SolNode61", "SolNode224", "SolNode131", "SolNode25", "SolNode38", "SolNode205", "SolNode93"] + "Seed": 12770, + "Nodes": ["SolNode36", "SolNode59", "SettlementNode12", "SolNode61", "SolNode12", "SolNode138", "SolNode72"] }, { - "_id": { "$oid": "663266c53cfe97de1f609f8b" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 58968, - "Nodes": [] - }, - { - "_id": { "$oid": "663266c53cfe97de1f609f8c" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4804c" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "EventSyndicate", - "Seed": 80305, + "Seed": 47385, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f8d" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4804b" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 73038, + "Nodes": [] + }, + { + "_id": { "$oid": "663a4fc5ba6f84724fa4804d" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "KahlSyndicate", - "Seed": 43902, + "Seed": 50102, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f8e" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4804e" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "NewLokaSyndicate", - "Seed": 51299, - "Nodes": ["SolNode59", "SolNode119", "SolNode42", "SolNode209", "SolNode16", "SolNode118", "SolNode139"] + "Seed": 16064, + "Nodes": ["SolNode101", "SolNode224", "SolNode205", "SettlementNode2", "SolNode171", "SolNode188", "SolNode75"] }, { - "_id": { "$oid": "663266c53cfe97de1f609f8f" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4804f" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "QuillsSyndicate", - "Seed": 34485, + "Seed": 77721, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f90" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48050" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "PerrinSyndicate", - "Seed": 63693, - "Nodes": ["SolNode2", "SolNode15", "SolNode74", "SolNode709", "SolNode122", "SolNode132", "SolNode153"] + "Seed": 9940, + "Nodes": ["SolNode39", "SolNode14", "SolNode203", "SolNode100", "SolNode130", "SolNode64", "SettlementNode15"] }, { - "_id": { "$oid": "663266c53cfe97de1f609f92" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48052" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "RadioLegion3Syndicate", - "Seed": 23824, + "Seed": 95995, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f93" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 1669, - "Nodes": [] - }, - { - "_id": { "$oid": "663266c53cfe97de1f609f95" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 6973, - "Nodes": [] - }, - { - "_id": { "$oid": "663266c53cfe97de1f609f91" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48051" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "RadioLegion2Syndicate", - "Seed": 40706, + "Seed": 32091, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f94" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 38747, + "_id": { "$oid": "663a4fc5ba6f84724fa48053" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "RadioLegionIntermission10Syndicate", + "Seed": 74072, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f99" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 33322, - "Nodes": [] - }, - { - "_id": { "$oid": "663266c53cfe97de1f609f9a" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "RadioLegionIntermission9Syndicate", - "Seed": 50802, - "Nodes": [] - }, - { - "_id": { "$oid": "663266c53cfe97de1f609f96" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48057" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 74555, + "Seed": 95997, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f97" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48055" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 71506, + "Nodes": [] + }, + { + "_id": { "$oid": "663a4fc5ba6f84724fa48056" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 97653, + "Nodes": [] + }, + { + "_id": { "$oid": "663a4fc5ba6f84724fa48054" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 64160, + "Nodes": [] + }, + { + "_id": { "$oid": "663a4fc5ba6f84724fa48058" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 61557, + "Seed": 94007, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f9c" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 19636, - "Nodes": [] - }, - { - "_id": { "$oid": "663266c53cfe97de1f609f9b" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4805c" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 30911, + "Seed": 69122, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f98" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4805a" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 69270, + "Nodes": [] + }, + { + "_id": { "$oid": "663a4fc5ba6f84724fa4805b" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "RadioLegionIntermission9Syndicate", + "Seed": 5166, + "Nodes": [] + }, + { + "_id": { "$oid": "663a4fc5ba6f84724fa48059" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 62113, + "Seed": 82114, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f9e" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4805d" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 25645, + "Nodes": [] + }, + { + "_id": { "$oid": "663a4fc5ba6f84724fa4805f" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "VentKidsSyndicate", - "Seed": 14745, + "Seed": 67257, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609f9d" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa4805e" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "RedVeilSyndicate", - "Seed": 48149, - "Nodes": ["SolNode85", "SolNode14", "SolNode50", "SolNode121", "SolNode226", "SolNode166", "SolNode146"] + "Seed": 46649, + "Nodes": ["SolNode226", "SolNode79", "SolNode216", "SettlementNode11", "SolNode56", "SolNode41", "SolNode23"] }, { - "_id": { "$oid": "663266c53cfe97de1f609f9f" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48060" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "VoxSyndicate", - "Seed": 63835, + "Seed": 77972, "Nodes": [] }, { - "_id": { "$oid": "663266c53cfe97de1f609fa0" }, - "Activation": { "$date": { "$numberLong": "1714579141153" } }, - "Expiry": { "$date": { "$numberLong": "1714665540000" } }, + "_id": { "$oid": "663a4fc5ba6f84724fa48061" }, + "Activation": { "$date": { "$numberLong": "1715097541439" } }, + "Expiry": { "$date": { "$numberLong": "1715183940000" } }, "Tag": "SteelMeridianSyndicate", - "Seed": 49319, - "Nodes": ["SolNode128", "SolNode46", "SettlementNode15", "SolNode27", "SolNode73", "SolNode137", "SolNode22"] + "Seed": 42366, + "Nodes": ["SolNode27", "SolNode107", "SolNode214", "SettlementNode1", "SolNode177", "SolNode141", "SolNode408"] }, { - "_id": { "$oid": "6632c1470000000000000002" }, - "Activation": { "$date": { "$numberLong": "1714602311414" } }, - "Expiry": { "$date": { "$numberLong": "1714611310287" } }, + "_id": { "$oid": "663a71c80000000000000002" }, + "Activation": { "$date": { "$numberLong": "1715106248403" } }, + "Expiry": { "$date": { "$numberLong": "1715115247276" } }, "Tag": "EntratiSyndicate", - "Seed": 22748, + "Seed": 99561, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [6, 6, 6] + "xpAmounts": [5, 5, 5] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", "masteryReq": 1, "minEnemyLevel": 15, @@ -754,23 +841,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [18, 18, 18, 27] + "xpAmounts": [17, 17, 17, 25] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [21, 21, 21, 21, 42] + "xpAmounts": [22, 22, 22, 22, 43] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -778,7 +865,7 @@ "xpAmounts": [25, 25, 25, 25, 50] }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableCRewards", "masteryReq": 5, "minEnemyLevel": 30, "maxEnemyLevel": 40, @@ -787,7 +874,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableCRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 50, @@ -796,7 +883,7 @@ "isVault": true }, { - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableCRewards", "masteryReq": 5, "minEnemyLevel": 50, "maxEnemyLevel": 60, @@ -807,63 +894,63 @@ ] }, { - "_id": { "$oid": "6632c1470000000000000004" }, - "Activation": { "$date": { "$numberLong": "1714602311414" } }, - "Expiry": { "$date": { "$numberLong": "1714611310287" } }, + "_id": { "$oid": "663a71c80000000000000004" }, + "Activation": { "$date": { "$numberLong": "1715106248403" } }, + "Expiry": { "$date": { "$numberLong": "1715115247276" } }, "Tag": "EntratiLabSyndicate", - "Seed": 22748, + "Seed": 99562, "Nodes": [] }, { - "_id": { "$oid": "6632c1470000000000000008" }, - "Activation": { "$date": { "$numberLong": "1714602311414" } }, - "Expiry": { "$date": { "$numberLong": "1714611310287" } }, + "_id": { "$oid": "663a71c80000000000000008" }, + "Activation": { "$date": { "$numberLong": "1715106248403" } }, + "Expiry": { "$date": { "$numberLong": "1715115247276" } }, "Tag": "CetusSyndicate", - "Seed": 22748, + "Seed": 99561, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [440, 440, 440] + "xpAmounts": [430, 430, 430] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [730, 730, 730] + "xpAmounts": [620, 620, 620] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapOne", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [600, 600, 600, 880] + "xpAmounts": [670, 670, 670, 990] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [620, 620, 620, 620, 1220] + "xpAmounts": [570, 570, 570, 570, 1110] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/SabotageBountySab", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1360] + "xpAmounts": [740, 740, 740, 740, 1450] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -871,65 +958,65 @@ "xpAmounts": [840, 840, 840, 840, 1660] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyLib", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [820, 820, 820, 820, 1610] + "xpAmounts": [840, 840, 840, 840, 1650] } ] }, { - "_id": { "$oid": "6632c1470000000000000025" }, - "Activation": { "$date": { "$numberLong": "1714602311414" } }, - "Expiry": { "$date": { "$numberLong": "1714611310287" } }, + "_id": { "$oid": "663a71c80000000000000025" }, + "Activation": { "$date": { "$numberLong": "1715106248403" } }, + "Expiry": { "$date": { "$numberLong": "1715115247276" } }, "Tag": "SolarisSyndicate", - "Seed": 22748, + "Seed": 99561, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobSpy", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] + "xpAmounts": [340, 340, 340] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobDefense", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [590, 590, 590] + "xpAmounts": [660, 660, 660] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusIntelJobRecovery", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [670, 670, 670, 980] + "xpAmounts": [610, 610, 610, 900] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobSpy", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [580, 580, 580, 580, 1130] + "xpAmounts": [600, 600, 600, 600, 1170] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobAmbush", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1360] + "xpAmounts": [690, 690, 690, 690, 1350] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobExcavation", "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -942,245 +1029,221 @@ "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [830, 830, 830, 830, 1620] + "xpAmounts": [780, 780, 780, 780, 1540] } ] }, { - "_id": { "$oid": "6632c1470000000000000029" }, - "Activation": { "$date": { "$numberLong": "1714602311414" } }, - "Expiry": { "$date": { "$numberLong": "1714611310287" } }, + "_id": { "$oid": "663a71c80000000000000029" }, + "Activation": { "$date": { "$numberLong": "1715106248403" } }, + "Expiry": { "$date": { "$numberLong": "1715115247276" } }, "Tag": "ZarimanSyndicate", - "Seed": 22748, + "Seed": 99562, "Nodes": [] } ], "ActiveMissions": [ { - "_id": { "$oid": "6632b3e1db9db93a78cbeeeb" }, - "Region": 5, - "Seed": 44087, - "Activation": { "$date": { "$numberLong": "1714598881197" } }, - "Expiry": { "$date": { "$numberLong": "1714605980271" } }, - "Node": "SolNode126", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2", + "_id": { "$oid": "663a7509d93367863785932d" }, + "Region": 15, + "Seed": 80795, + "Activation": { "$date": { "$numberLong": "1715107081517" } }, + "Expiry": { "$date": { "$numberLong": "1715113948603" } }, + "Node": "SolNode400", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT3", "Hard": true }, { - "_id": { "$oid": "6632b765b017a7c713798b78" }, - "Region": 22, - "Seed": 70662, - "Activation": { "$date": { "$numberLong": "1714599781306" } }, - "Expiry": { "$date": { "$numberLong": "1714605869597" } }, - "Node": "SolNode232", - "MissionType": "MT_VOID_CASCADE", - "Modifier": "VoidT6", - "Hard": true - }, - { - "_id": { "$oid": "6632b765b017a7c713798b79" }, - "Region": 11, - "Seed": 33904, - "Activation": { "$date": { "$numberLong": "1714599781306" } }, - "Expiry": { "$date": { "$numberLong": "1714606226193" } }, - "Node": "SolNode175", - "MissionType": "MT_HIVE", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "6632b765b017a7c713798b7a" }, - "Region": 12, - "Seed": 55666, - "Activation": { "$date": { "$numberLong": "1714599781306" } }, - "Expiry": { "$date": { "$numberLong": "1714606906440" } }, - "Node": "SolNode177", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT4", - "Hard": true - }, - { - "_id": { "$oid": "6632b9458ac1818274ddda0b" }, + "_id": { "$oid": "663a75f959a5964cadb39879" }, "Region": 19, - "Seed": 83973, - "Activation": { "$date": { "$numberLong": "1714600261939" } }, - "Expiry": { "$date": { "$numberLong": "1714606380527" } }, + "Seed": 32067, + "Activation": { "$date": { "$numberLong": "1715107321237" } }, + "Expiry": { "$date": { "$numberLong": "1715114378546" } }, "Node": "SolNode747", "MissionType": "MT_INTEL", - "Modifier": "VoidT5" + "Modifier": "VoidT5", + "Hard": true }, { - "_id": { "$oid": "6632b9458ac1818274ddda0c" }, - "Region": 19, - "Seed": 81928, - "Activation": { "$date": { "$numberLong": "1714600261939" } }, - "Expiry": { "$date": { "$numberLong": "1714607194452" } }, - "Node": "SolNode745", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT5" + "_id": { "$oid": "663a779d3e347839ff301814" }, + "Region": 7, + "Seed": 51739, + "Activation": { "$date": { "$numberLong": "1715107741454" } }, + "Expiry": { "$date": { "$numberLong": "1715114508580" } }, + "Node": "SolNode64", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT3" }, { - "_id": { "$oid": "6632b9bdd1daa6351bad36ad" }, - "Region": 15, - "Seed": 42990, - "Activation": { "$date": { "$numberLong": "1714600381243" } }, - "Expiry": { "$date": { "$numberLong": "1714604969964" } }, - "Node": "SolNode408", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT4" + "_id": { "$oid": "663a77d916c199f4644ee67d" }, + "Region": 17, + "Seed": 61179, + "Activation": { "$date": { "$numberLong": "1715107801647" } }, + "Expiry": { "$date": { "$numberLong": "1715114934608" } }, + "Node": "SolNode718", + "MissionType": "MT_ALCHEMY", + "Modifier": "VoidT6" }, { - "_id": { "$oid": "6632be31c59bf05b7bbb5ee6" }, + "_id": { "$oid": "663a78c98a609b49b8410726" }, "Region": 3, - "Seed": 97393, - "Activation": { "$date": { "$numberLong": "1714601521285" } }, - "Expiry": { "$date": { "$numberLong": "1714605336249" } }, + "Seed": 9520, + "Activation": { "$date": { "$numberLong": "1715108041501" } }, + "Expiry": { "$date": { "$numberLong": "1715115098659" } }, "Node": "SolNode79", "MissionType": "MT_INTEL", "Modifier": "VoidT1", "Hard": true }, { - "_id": { "$oid": "6632bfd65c66b78046e562ba" }, - "Region": 10, - "Seed": 15857, - "Activation": { "$date": { "$numberLong": "1714601942125" } }, - "Expiry": { "$date": { "$numberLong": "1714606070357" } }, - "Node": "SolNode147", + "_id": { "$oid": "663a7df15eeabaac79b0a061" }, + "Region": 6, + "Seed": 48861, + "Activation": { "$date": { "$numberLong": "1715109361974" } }, + "Expiry": { "$date": { "$numberLong": "1715113288372" } }, + "Node": "SolNode67", + "MissionType": "MT_INTEL", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "663a7df25eeabaac79b0a062" }, + "Region": 5, + "Seed": 13550, + "Activation": { "$date": { "$numberLong": "1715109361974" } }, + "Expiry": { "$date": { "$numberLong": "1715113963831" } }, + "Node": "SolNode10", + "MissionType": "MT_SABOTAGE", + "Modifier": "VoidT2", + "Hard": true + }, + { + "_id": { "$oid": "663a83cdec0d5181435f1324" }, + "Region": 19, + "Seed": 39392, + "Activation": { "$date": { "$numberLong": "1715110861506" } }, + "Expiry": { "$date": { "$numberLong": "1715114632998" } }, + "Node": "SolNode742", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "663a83cdec0d5181435f1325" }, + "Region": 19, + "Seed": 88668, + "Activation": { "$date": { "$numberLong": "1715110861506" } }, + "Expiry": { "$date": { "$numberLong": "1715116744358" } }, + "Node": "SolNode743", + "MissionType": "MT_MOBILE_DEFENSE", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "663a83cdec0d5181435f1326" }, + "Region": 19, + "Seed": 73823, + "Activation": { "$date": { "$numberLong": "1715110861506" } }, + "Expiry": { "$date": { "$numberLong": "1715117891768" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", + "Modifier": "VoidT5" + }, + { + "_id": { "$oid": "663a878d23d1514873170466" }, + "Region": 9, + "Seed": 88696, + "Activation": { "$date": { "$numberLong": "1715111821951" } }, + "Expiry": { "$date": { "$numberLong": "1715115522446" } }, + "Node": "SolNode4", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT4", + "Hard": true + }, + { + "_id": { "$oid": "663a887d4903098c10992fe6" }, + "Region": 6, + "Seed": 66337, + "Activation": { "$date": { "$numberLong": "1715112061729" } }, + "Expiry": { "$date": { "$numberLong": "1715115988140" } }, + "Node": "SolNode18", "MissionType": "MT_TERRITORY", "Modifier": "VoidT2" }, { - "_id": { "$oid": "6632bfd65c66b78046e562bb" }, - "Region": 16, - "Seed": 72350, - "Activation": { "$date": { "$numberLong": "1714601942125" } }, - "Expiry": { "$date": { "$numberLong": "1714608763423" } }, - "Node": "SettlementNode12", - "MissionType": "MT_RESCUE", + "_id": { "$oid": "663a887d4903098c10992fe7" }, + "Region": 10, + "Seed": 5135, + "Activation": { "$date": { "$numberLong": "1715112061729" } }, + "Expiry": { "$date": { "$numberLong": "1715118752017" } }, + "Node": "SolNode149", + "MissionType": "MT_DEFENSE", "Modifier": "VoidT2" }, { - "_id": { "$oid": "6632c1792b55899a8fffb569" }, - "Region": 17, - "Seed": 74019, - "Activation": { "$date": { "$numberLong": "1714602361714" } }, - "Expiry": { "$date": { "$numberLong": "1714609384883" } }, - "Node": "SolNode717", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT6" + "_id": { "$oid": "663a8931586c301b1fbe63d3" }, + "Region": 15, + "Seed": 32180, + "Activation": { "$date": { "$numberLong": "1715112241196" } }, + "Expiry": { "$date": { "$numberLong": "1715116052658" } }, + "Node": "SolNode408", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT4" }, { - "_id": { "$oid": "6632c1792b55899a8fffb56a" }, - "Region": 18, - "Seed": 60518, - "Activation": { "$date": { "$numberLong": "1714602361714" } }, - "Expiry": { "$date": { "$numberLong": "1714606980716" } }, - "Node": "SolNode309", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT6" + "_id": { "$oid": "663a8931586c301b1fbe63d4" }, + "Region": 12, + "Seed": 22521, + "Activation": { "$date": { "$numberLong": "1715112241196" } }, + "Expiry": { "$date": { "$numberLong": "1715118887140" } }, + "Node": "SolNode181", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT4" }, { - "_id": { "$oid": "6632c31d33bf9e7381e1cdea" }, + "_id": { "$oid": "663a8931586c301b1fbe63d5" }, + "Region": 2, + "Seed": 28500, + "Activation": { "$date": { "$numberLong": "1715112241196" } }, + "Expiry": { "$date": { "$numberLong": "1715118331719" } }, + "Node": "SolNode128", + "MissionType": "MT_EXTERMINATION", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "663a8931586c301b1fbe63d6" }, "Region": 3, - "Seed": 94787, - "Activation": { "$date": { "$numberLong": "1714602781283" } }, - "Expiry": { "$date": { "$numberLong": "1714609063388" } }, + "Seed": 24747, + "Activation": { "$date": { "$numberLong": "1715112241196" } }, + "Expiry": { "$date": { "$numberLong": "1715117047190" } }, "Node": "SolNode26", "MissionType": "MT_DEFENSE", "Modifier": "VoidT1" }, { - "_id": { "$oid": "6632c31d33bf9e7381e1cdeb" }, - "Region": 2, - "Seed": 82144, - "Activation": { "$date": { "$numberLong": "1714602781283" } }, - "Expiry": { "$date": { "$numberLong": "1714607530322" } }, - "Node": "SolNode2", - "MissionType": "MT_MOBILE_DEFENSE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "6632c35936f278c71e43049b" }, - "Region": 19, - "Seed": 71024, - "Activation": { "$date": { "$numberLong": "1714602841444" } }, - "Expiry": { "$date": { "$numberLong": "1714609929290" } }, - "Node": "SolNode742", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT5", + "_id": { "$oid": "663a8931586c301b1fbe63d7" }, + "Region": 17, + "Seed": 63914, + "Activation": { "$date": { "$numberLong": "1715112241196" } }, + "Expiry": { "$date": { "$numberLong": "1715116284761" } }, + "Node": "SolNode717", + "MissionType": "MT_SURVIVAL", + "Modifier": "VoidT6", "Hard": true - }, - { - "_id": { "$oid": "6632c35936f278c71e43049c" }, - "Region": 19, - "Seed": 56103, - "Activation": { "$date": { "$numberLong": "1714602841444" } }, - "Expiry": { "$date": { "$numberLong": "1714608628648" } }, - "Node": "SolNode748", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "6632c35936f278c71e43049d" }, - "Region": 19, - "Seed": 99283, - "Activation": { "$date": { "$numberLong": "1714602841444" } }, - "Expiry": { "$date": { "$numberLong": "1714608056869" } }, - "Node": "SolNode746", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT5", - "Hard": true - }, - { - "_id": { "$oid": "6632c719e44b85d8b92e973a" }, - "Region": 15, - "Seed": 59039, - "Activation": { "$date": { "$numberLong": "1714603801620" } }, - "Expiry": { "$date": { "$numberLong": "1714607419851" } }, - "Node": "SolNode407", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "6632c719e44b85d8b92e973b" }, - "Region": 13, - "Seed": 46809, - "Activation": { "$date": { "$numberLong": "1714603801620" } }, - "Expiry": { "$date": { "$numberLong": "1714610142237" } }, - "Node": "SolNode216", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "6632c8fa9123bfc8e8fc1b34" }, - "Region": 8, - "Seed": 72126, - "Activation": { "$date": { "$numberLong": "1714604282034" } }, - "Expiry": { "$date": { "$numberLong": "1714608480109" } }, - "Node": "SolNode118", - "MissionType": "MT_ARTIFACT", - "Modifier": "VoidT3" } ], "GlobalUpgrades": [], "FlashSales": [ { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1735750800000" } }, + "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", "ShowInMarket": true, - "HideFromMarket": true, + "HideFromMarket": false, "SupporterPack": false, "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, "BogoBuy": 0, - "BogoGet": 0 + "BogoGet": 0, + "PremiumOverride": 70, + "StartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EndDate": { "$date": { "$numberLong": "1719838800000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", @@ -1196,16 +1259,30 @@ "BogoGet": 0 }, { - "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "StartDate": { "$date": { "$numberLong": "1661173200000" } }, + "EndDate": { "$date": { "$numberLong": "1735750800000" } }, "ShowInMarket": true, - "HideFromMarket": false, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", + "ShowInMarket": true, + "HideFromMarket": true, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 70, - "StartDate": { "$date": { "$numberLong": "1688216400000" } }, - "EndDate": { "$date": { "$numberLong": "1719838800000" } } + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704187860000" } }, + "EndDate": { "$date": { "$numberLong": "1735723860000" } } }, { "TypeName": "/Lotus/Types/StoreItems/Packages/SanctumPack", @@ -1220,6 +1297,19 @@ "StartDate": { "$date": { "$numberLong": "1702380180000" } }, "EndDate": { "$date": { "$numberLong": "1893517200000" } } }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", + "ShowInMarket": true, + "HideFromMarket": true, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1704187920000" } }, + "EndDate": { "$date": { "$numberLong": "1735723920000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "ShowInMarket": true, @@ -1246,32 +1336,6 @@ "StartDate": { "$date": { "$numberLong": "1704187800000" } }, "EndDate": { "$date": { "$numberLong": "1735723800000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackB", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704187860000" } }, - "EndDate": { "$date": { "$numberLong": "1735723860000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HeirloomPackA", - "ShowInMarket": true, - "HideFromMarket": true, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1704187920000" } }, - "EndDate": { "$date": { "$numberLong": "1735723920000" } } - }, { "TypeName": "/Lotus/Upgrades/Skins/Dragon/ChromaLNYSkin", "ShowInMarket": true, @@ -1285,19 +1349,6 @@ "StartDate": { "$date": { "$numberLong": "1706112000000" } }, "EndDate": { "$date": { "$numberLong": "1895587200000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZMarketBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 35, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709308800000" } }, - "EndDate": { "$date": { "$numberLong": "1893510000000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/2024Bundles/WeaponStarterPack", "ShowInMarket": true, @@ -1311,19 +1362,6 @@ "StartDate": { "$date": { "$numberLong": "1708343940000" } }, "EndDate": { "$date": { "$numberLong": "1767268740000" } } }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/HODMarketBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 465, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709308800000" } }, - "EndDate": { "$date": { "$numberLong": "1893510000000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/TNWMarketBundle", "ShowInMarket": true, @@ -1337,32 +1375,6 @@ "StartDate": { "$date": { "$numberLong": "1709308800000" } }, "EndDate": { "$date": { "$numberLong": "1893510000000" } } }, - { - "TypeName": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneInfested", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 100, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709207460000" } }, - "EndDate": { "$date": { "$numberLong": "1861962660000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TnDeimosSupporterArmourBundle", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 110, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709308800000" } }, - "EndDate": { "$date": { "$numberLong": "1893510000000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "ShowInMarket": true, @@ -1376,6 +1388,71 @@ "StartDate": { "$date": { "$numberLong": "1709206020000" } }, "EndDate": { "$date": { "$numberLong": "1893497220000" } } }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TnDeimosSupporterArmourBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 110, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709308800000" } }, + "EndDate": { "$date": { "$numberLong": "1893510000000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZMarketBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 35, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709308800000" } }, + "EndDate": { "$date": { "$numberLong": "1893510000000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/HODMarketBundle", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 465, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709308800000" } }, + "EndDate": { "$date": { "$numberLong": "1893510000000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterPistolSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 45, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211060000" } }, + "EndDate": { "$date": { "$numberLong": "1861963200000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneInfested", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 100, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709207460000" } }, + "EndDate": { "$date": { "$numberLong": "1861962660000" } } + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/PowerPack", "ShowInMarket": true, @@ -1416,18 +1493,57 @@ "EndDate": { "$date": { "$numberLong": "1861963200000" } } }, { - "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterPistolSkin", + "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterWhipSkin", "ShowInMarket": true, "HideFromMarket": false, "SupporterPack": false, "Discount": 0, "BogoBuy": 0, "BogoGet": 0, - "PremiumOverride": 45, + "PremiumOverride": 50, "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709211060000" } }, + "StartDate": { "$date": { "$numberLong": "1709211240000" } }, "EndDate": { "$date": { "$numberLong": "1861963200000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/Scarves/DeimosSupporterFireFlyBlueScarf", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 95, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211360000" } }, + "EndDate": { "$date": { "$numberLong": "1861966560000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterShotgunSkin", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 60, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211420000" } }, + "EndDate": { "$date": { "$numberLong": "1861966620000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/NewWar2021Glyph", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211360000" } }, + "EndDate": { "$date": { "$numberLong": "1861966560000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/Sigils/ZarimanSupporterPackSigil", "ShowInMarket": true, @@ -1454,19 +1570,6 @@ "StartDate": { "$date": { "$numberLong": "1709211420000" } }, "EndDate": { "$date": { "$numberLong": "1861966680000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorA", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 55, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709211600000" } }, - "EndDate": { "$date": { "$numberLong": "1861966800000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/AvatarImages/DeimosRevolverGlyph", "ShowInMarket": true, @@ -1480,6 +1583,32 @@ "StartDate": { "$date": { "$numberLong": "1709211420000" } }, "EndDate": { "$date": { "$numberLong": "1861966620000" } } }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorL", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 40, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211660000" } }, + "EndDate": { "$date": { "$numberLong": "1861966920000" } } + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorA", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 55, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1709211600000" } }, + "EndDate": { "$date": { "$numberLong": "1861966800000" } } + }, { "TypeName": "/Lotus/Upgrades/Skins/Sigils/NewWar2021Sigil", "ShowInMarket": true, @@ -1493,45 +1622,6 @@ "StartDate": { "$date": { "$numberLong": "1709211540000" } }, "EndDate": { "$date": { "$numberLong": "1861966740000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterShotgunSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 60, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709211420000" } }, - "EndDate": { "$date": { "$numberLong": "1861966620000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterWhipSkin", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 50, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709211240000" } }, - "EndDate": { "$date": { "$numberLong": "1861963200000" } } - }, - { - "TypeName": "/Lotus/Types/StoreItems/AvatarImages/NewWar2021Glyph", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 20, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709211360000" } }, - "EndDate": { "$date": { "$numberLong": "1861966560000" } } - }, { "TypeName": "/Lotus/Upgrades/Skins/Effects/DeimosEphemera", "ShowInMarket": true, @@ -1558,32 +1648,6 @@ "StartDate": { "$date": { "$numberLong": "1709211660000" } }, "EndDate": { "$date": { "$numberLong": "1861966860000" } } }, - { - "TypeName": "/Lotus/Upgrades/Skins/Scarves/DeimosSupporterFireFlyBlueScarf", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 95, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709211360000" } }, - "EndDate": { "$date": { "$numberLong": "1861966560000" } } - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorL", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 40, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1709211660000" } }, - "EndDate": { "$date": { "$numberLong": "1861966920000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/2024Bundles/DanteChroniclesPack", "ShowInMarket": true, @@ -1658,260 +1722,132 @@ }, "Invasions": [ { - "_id": { "$oid": "662e6219e800ab43984a6d53" }, + "_id": { "$oid": "6638e1359466b8936fc0402a" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode217", - "Count": 40670, - "Goal": 48000, + "Node": "SolNode126", + "Count": 22907, + "Goal": 45000, "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "66268aadeb7d3a5b1bbcfba2" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeBlade", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 800137, "faction": "FC_CORPUS" }, + "ChainID": { "$oid": "6636c04917559efb2b356ec6" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHeatsink", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 391632, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalReceiver", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 287178, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1714316370906" } } + "DefenderMissionInfo": { "seed": 784023, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1715004593615" } } }, { - "_id": { "$oid": "66309115f6b851f7adc61b76" }, + "_id": { "$oid": "6638e1359466b8936fc04029" }, "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode203", - "Count": -21746, - "Goal": 31000, + "Node": "SolNode126", + "Count": 0, + "Goal": 37000, "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "66268aadeb7d3a5b1bbcfba2" }, + "ChainID": { "$oid": "6636c04917559efb2b356ec6" }, "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 900420, "faction": "FC_CORPUS" }, + "AttackerMissionInfo": { "seed": 724725, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 18634, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1714459714271" } } + "DefenderMissionInfo": { "seed": 884606, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1715004688257" } } }, { - "_id": { "$oid": "662d4b3200c3c1fad813cc9f" }, - "Faction": "FC_GRINEER", + "_id": { "$oid": "6638b38156c8cd307bc283d7" }, + "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode100", - "Count": 11580, - "Goal": 46000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Node": "SolNode127", + "Count": -29957, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "662d4b3200c3c1fad813cc9f" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "AttackerMissionInfo": { "seed": 844954, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 133693, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1714330057095" } } + "ChainID": { "$oid": "663877bda5513096fcad6678" }, + "AttackerReward": [], + "AttackerMissionInfo": { "seed": 570713, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 415779, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1714992001684" } } }, { - "_id": { "$oid": "6631653143f4cc7059abcbf5" }, + "_id": { "$oid": "6638a8f5d73d895c2adb16aa" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode135", - "Count": -49200, - "Goal": 49000, + "Node": "SolNode147", + "Count": -6421, + "Goal": 40000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "662e4e2d08ef7fe4cd77d180" }, - "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, - "AttackerMissionInfo": { "seed": 635635, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/LatronWraithBlueprint", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 255135, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1714514241718" } } + "Completed": false, + "ChainID": { "$oid": "6638a8f5d73d895c2adb16aa" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/DeraVandalStock", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 828245, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/GrineerCombatKnifeSortieBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 718321, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1715072678801" } } }, { - "_id": { "$oid": "663117d9449c4bb3d9a80d0f" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode99", - "Count": -30029, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": true, - "ChainID": { "$oid": "6630e31d2a68d489e1d39091" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 441126, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 129299, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1714493401206" } } - }, - { - "_id": { "$oid": "6631d935b0c888311ed55a2e" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode4", - "Count": -45838, - "Goal": 45000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6631b28939774a80617f807f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 171004, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 726976, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714542901615" } } - }, - { - "_id": { "$oid": "6631d935b0c888311ed55a2f" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode72", - "Count": -35380, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6631b28939774a80617f807f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 958637, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 500462, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714542901615" } } - }, - { - "_id": { "$oid": "6631f5554b44d3554afc4471" }, - "Faction": "FC_INFESTATION", + "_id": { "$oid": "6638e1359466b8936fc0402b" }, + "Faction": "FC_GRINEER", "DefenderFaction": "FC_CORPUS", "Node": "SolNode21", - "Count": -35604, - "Goal": 35000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6631b28939774a80617f807f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 684087, "faction": "FC_CORPUS" }, + "Count": -7308, + "Goal": 38000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "6638e1359466b8936fc0402b" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "AttackerMissionInfo": { "seed": 941375, "faction": "FC_CORPUS" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 911869, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714550101426" } } + "DefenderMissionInfo": { "seed": 941790, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1715050033164" } } }, { - "_id": { "$oid": "66320b99a21e969ea6954098" }, + "_id": { "$oid": "6639c48e17fcc21e87fbb176" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode56", - "Count": -30359, - "Goal": 30000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode82", + "Count": -40097, + "Goal": 40000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "ChainID": { "$oid": "6639c48e17fcc21e87fbb176" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 727782, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 312302, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714555801552" } } + "AttackerMissionInfo": { "seed": 379548, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 388966, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1715067348598" } } }, { - "_id": { "$oid": "66321ad51c0826ed00d5b648" }, + "_id": { "$oid": "6639efe9a5da56b6ddde9a05" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode43", - "Count": -32561, - "Goal": 32000, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode93", + "Count": -48850, + "Goal": 48000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "ChainID": { "$oid": "6639c48e17fcc21e87fbb176" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 437542, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 2 }] }, - "DefenderMissionInfo": { "seed": 797526, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714559701914" } } + "AttackerMissionInfo": { "seed": 238850, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 758041, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1715073001739" } } }, { - "_id": { "$oid": "6632324590b9929e3a3b58a9" }, + "_id": { "$oid": "6639efe9a5da56b6ddde9a06" }, "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode81", - "Count": -33273, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "6631b28939774a80617f807f" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 898435, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 558573, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714565701723" } } - }, - { - "_id": { "$oid": "66324505089ff47d2753cf80" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode51", - "Count": -8225, + "DefenderFaction": "FC_GRINEER", + "Node": "SolNode32", + "Count": -14628, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", "Completed": false, - "ChainID": { "$oid": "6631b28939774a80617f807f" }, + "ChainID": { "$oid": "6639c48e17fcc21e87fbb176" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 745344, "faction": "FC_CORPUS" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, - "DefenderMissionInfo": { "seed": 661912, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1714570501288" } } - }, - { - "_id": { "$oid": "663299658e0f10f33681815c" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode36", - "Count": -7289, - "Goal": 45000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "663299658e0f10f33681815c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 687118, "faction": "FC_GRINEER" }, + "AttackerMissionInfo": { "seed": 732857, "faction": "FC_GRINEER" }, "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 100342, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714596396298" } } - }, - { - "_id": { "$oid": "6632c13d039bf6d83152c50b" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode99", - "Count": -581, - "Goal": 30000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "663299658e0f10f33681815c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 871201, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 261021, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1714602301478" } } - }, - { - "_id": { "$oid": "6632c13d039bf6d83152c50c" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode113", - "Count": -72, - "Goal": 32000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "663299658e0f10f33681815c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 817725, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 876011, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714602301478" } } - }, - { - "_id": { "$oid": "6632c13d039bf6d83152c50d" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode68", - "Count": -61, - "Goal": 37000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "663299658e0f10f33681815c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 509263, "faction": "FC_GRINEER" }, - "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] }, - "DefenderMissionInfo": { "seed": 871562, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1714602301478" } } + "DefenderMissionInfo": { "seed": 519024, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1715073001739" } } } ], "HubEvents": [], @@ -1919,7 +1855,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9960212 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9969639 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1933,15 +1869,23 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } + }, + { + "_id": { "$oid": "5c7cb0d00000000000000000" }, + "Activation": { "$date": { "$numberLong": "1715097600000" } }, + "Expiry": { "$date": { "$numberLong": "1716307200000" } }, + "Node": "SolNode129", + "Faction": "FC_CORPUS", + "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1714741200000" } }, - "Expiry": { "$date": { "$numberLong": "1714914000000" } }, + "Activation": { "$date": { "$numberLong": "1715950800000" } }, + "Expiry": { "$date": { "$numberLong": "1716123600000" } }, "Character": "Baro'Ki Teel", - "Node": "SaturnHUB" + "Node": "PlutoHUB" } ], "PrimeVaultTraders": [ @@ -2095,52 +2039,53 @@ "Expiry": { "$date": { "$numberLong": "1717696800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1714068000000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" - } + }, + { "Expiry": { "$date": { "$numberLong": "1720116000000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1716487200000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "6632b201d92e097d980be781" }, - "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1714602001832" } }, - "Expiry": { "$date": { "$numberLong": "1714607401832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "6632b201d92e097d980be77d" }, - "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1714602001821" } }, - "Expiry": { "$date": { "$numberLong": "1714607401821" } }, + "_id": { "$oid": "663a7581ced28e18f694b550" }, + "Node": "CrewBattleNode519", + "Activation": { "$date": { "$numberLong": "1715109601821" } }, + "Expiry": { "$date": { "$numberLong": "1715115001821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "6632b201d92e097d980be77f" }, - "Node": "CrewBattleNode534", - "Activation": { "$date": { "$numberLong": "1714602001827" } }, - "Expiry": { "$date": { "$numberLong": "1714607401827" } }, - "ActiveMissionTier": "VoidT2" + "_id": { "$oid": "663a7581ced28e18f694b551" }, + "Node": "CrewBattleNode515", + "Activation": { "$date": { "$numberLong": "1715109601825" } }, + "Expiry": { "$date": { "$numberLong": "1715115001825" } }, + "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "6632b201d92e097d980be780" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1714602001829" } }, - "Expiry": { "$date": { "$numberLong": "1714607401829" } }, + "_id": { "$oid": "663a7581ced28e18f694b554" }, + "Node": "CrewBattleNode536", + "Activation": { "$date": { "$numberLong": "1715109601832" } }, + "Expiry": { "$date": { "$numberLong": "1715115001832" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "663a7581ced28e18f694b555" }, + "Node": "CrewBattleNode539", + "Activation": { "$date": { "$numberLong": "1715109601834" } }, + "Expiry": { "$date": { "$numberLong": "1715115001834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "663a7581ced28e18f694b553" }, + "Node": "CrewBattleNode521", + "Activation": { "$date": { "$numberLong": "1715109601829" } }, + "Expiry": { "$date": { "$numberLong": "1715115001829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "6632b201d92e097d980be77e" }, - "Node": "CrewBattleNode512", - "Activation": { "$date": { "$numberLong": "1714602001825" } }, - "Expiry": { "$date": { "$numberLong": "1714607401825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "6632b201d92e097d980be782" }, - "Node": "CrewBattleNode538", - "Activation": { "$date": { "$numberLong": "1714602001834" } }, - "Expiry": { "$date": { "$numberLong": "1714607401834" } }, - "ActiveMissionTier": "VoidT4" + "_id": { "$oid": "663a7581ced28e18f694b552" }, + "Node": "CrewBattleNode535", + "Activation": { "$date": { "$numberLong": "1715109601827" } }, + "Expiry": { "$date": { "$numberLong": "1715115001827" } }, + "ActiveMissionTier": "VoidT2" } ], "PrimeAccessAvailability": { "State": "PRIME1" }, @@ -2148,45 +2093,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Weapons/Grineer/LongGuns/GrnSpark/GrnSparkRifle", - "Activation": { "$date": { "$numberLong": "1714590000000" } }, - "Expiry": { "$date": { "$numberLong": "1714683600000" } }, - "Discount": 20, - "OriginalPrice": 150, - "SalePrice": 120, - "AmountTotal": 300, - "AmountSold": 7 + "StoreItem": "/Lotus/StoreItems/Upgrades/Focus/PowerLensGreater", + "Activation": { "$date": { "$numberLong": "1715058000000" } }, + "Expiry": { "$date": { "$numberLong": "1715151600000" } }, + "Discount": 50, + "OriginalPrice": 40, + "SalePrice": 20, + "AmountTotal": 50, + "AmountSold": 50 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "662c1a82b8c098235e2441c6" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1714166402124" } }, - "endDate": { "$date": { "$numberLong": "1714771202124" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "662c1a82b8c098235e2441c8" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1714166402124" } }, - "endDate": { "$date": { "$numberLong": "1714771202124" } }, - "params": [{ "n": "ScriptParamValue", "v": 10 }], - "isGenerated": true, - "PVPMode": "PVPMODE_ALL", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_WEEKLY" - }, - { - "_id": { "$oid": "662c1a82b8c098235e2441c7" }, + "_id": { "$oid": "6635562d036ce37f7f98e264" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1714166402124" } }, - "endDate": { "$date": { "$numberLong": "1714771202124" } }, + "startDate": { "$date": { "$numberLong": "1714771501460" } }, + "endDate": { "$date": { "$numberLong": "1715376301460" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2194,21 +2117,54 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "662c1a82b8c098235e2441c9" }, + "_id": { "$oid": "6635562d036ce37f7f98e263" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", + "startDate": { "$date": { "$numberLong": "1714771501460" } }, + "endDate": { "$date": { "$numberLong": "1715376301460" } }, + "params": [{ "n": "ScriptParamValue", "v": 6 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "6635562d036ce37f7f98e265" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", + "startDate": { "$date": { "$numberLong": "1714771501460" } }, + "endDate": { "$date": { "$numberLong": "1715376301460" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], + "isGenerated": true, + "PVPMode": "PVPMODE_ALL", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_WEEKLY" + }, + { + "_id": { "$oid": "6635562d036ce37f7f98e266" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1714166402124" } }, - "endDate": { "$date": { "$numberLong": "1714771202124" } }, + "startDate": { "$date": { "$numberLong": "1714771501460" } }, + "endDate": { "$date": { "$numberLong": "1715376301460" } }, "params": [{ "n": "ScriptParamValue", "v": 0 }], "isGenerated": true, "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "662c1a82b8c098235e2441c6" }, { "$oid": "662c1a82b8c098235e2441c7" }, { "$oid": "662c1a82b8c098235e2441c8" }], + "subChallenges": [{ "$oid": "6635562d036ce37f7f98e263" }, { "$oid": "6635562d036ce37f7f98e264" }, { "$oid": "6635562d036ce37f7f98e265" }], "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" }, { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6b3" }, + "_id": { "$oid": "6639ca6967c1192987d75fee" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_CAPTURETHEFLAG", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6639ca6967c1192987d75fed" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2216,43 +2172,10 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6b4" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_CAPTURETHEFLAG", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6b6" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6b5" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, - "params": [{ "n": "ScriptParamValue", "v": 3 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6b7" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, + "_id": { "$oid": "6639ca6967c1192987d75ff2" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", @@ -2260,34 +2183,56 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6b9" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], + "_id": { "$oid": "6639ca6967c1192987d75ff1" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM", + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6639ca6967c1192987d75fef" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY", + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6639ca6967c1192987d75ff0" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "6639ca6967c1192987d75ff3" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM", + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, + "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6b8" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerHARD", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, + "_id": { "$oid": "6639ca6967c1192987d75ff4" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY", + "startDate": { "$date": { "$numberLong": "1715063401824" } }, + "endDate": { "$date": { "$numberLong": "1715149801824" } }, "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6631dde5dcb4ea049fe4e6ba" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsMEDIUM", - "startDate": { "$date": { "$numberLong": "1714544101684" } }, - "endDate": { "$date": { "$numberLong": "1714630501684" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], - "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" @@ -2296,21 +2241,20 @@ "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [40.26388611295677, 68.54612379406962, 0], + "ProjectPct": [47.16325544797147, 70.88794362074432, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Nidus", "Octavia", "Harrow"] }, - { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } + { "Category": "EXC_NORMAL", "Choices": ["Gara", "Khora", "Revenant"] }, + { "Category": "EXC_HARD", "Choices": ["Zylok", "Sibear", "Dread", "Despair", "Hate"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { "_id": { "$oid": "65316da7934657f5ab0ed2a5" }, "Name": "-JERUSALIM-#350", "Tier": 1, "AllianceId": { "$oid": "61a210b6a411a244c060bd09" }, "OriginalPlatform": 0, "Emblem": true }, - { "_id": { "$oid": "6127757d57b27207ca479a05" }, "Name": "Notes from Underground#723", "Tier": 2, "AllianceId": { "$oid": "5c617675a38e4a601a657a04" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "55230f2006c56fe4557b2ac1" }, "Name": "PRIME 2 PRIME#640", "Tier": 4, "AllianceId": { "$oid": "5a22395bbe87e4b39e4af6fc" }, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "5edcb9fbccafbc3c875f26bd" }, "Name": "The first rule#508", "Tier": 4, "Emblem": true, "OriginalPlatform": 0 }, - { "_id": { "$oid": "56d8b39408c56fd89a1799ec" }, "Name": "Phantom Vanguard#714", "Tier": 5, "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "5d6e8383a38e4ab3d87910b4" }, "Name": "KHAO SAN ROAD#515", "Tier": 1, "AllianceId": { "$oid": "62ca246ada801e95e10faef5" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "57bd5ec906c56f84436a999c" }, "Name": "Survival School#325", "Tier": 2, "Emblem": true, "AllianceId": { "$oid": "628184e496531170b94f5bc2" }, "OriginalPlatform": 0 }, + { "_id": { "$oid": "528baf0608c56fb24a001715" }, "Name": "Fallen Legion GC#476", "Tier": 3, "AllianceId": { "$oid": "5c617675a38e4a601a657a04" }, "Emblem": true, "OriginalPlatform": 0 }, + { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz#996", "Tier": 4, "Emblem": true, "OriginalPlatform": 0 }, { "_id": { "$oid": "63399bb7249b38a885073742" }, "Name": "Star field#756", "Tier": 3, "Emblem": true, "OriginalPlatform": 0 } ], "SeasonInfo": { @@ -2322,69 +2266,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001200230000000000000319" }, + "_id": { "$oid": "001200230000000000000325" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714608000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithPrimary" + "Activation": { "$date": { "$numberLong": "1714867200000" } }, + "Expiry": { "$date": { "$numberLong": "1715126400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithSecondary" }, { - "_id": { "$oid": "001200230000000000000320" }, + "_id": { "$oid": "001200240000000000000333" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1714435200000" } }, - "Expiry": { "$date": { "$numberLong": "1714694400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCompleteMissionMelee" + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715212800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFreeze" }, { - "_id": { "$oid": "001200230000000000000321" }, + "_id": { "$oid": "001200240000000000000334" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1714521600000" } }, - "Expiry": { "$date": { "$numberLong": "1714780800000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyPickUpMods" + "Activation": { "$date": { "$numberLong": "1715040000000" } }, + "Expiry": { "$date": { "$numberLong": "1715299200000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore" }, { - "_id": { "$oid": "001200230000000000000312" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions23" + "_id": { "$oid": "001200240000000000000326" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions24" }, { - "_id": { "$oid": "001200230000000000000313" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus23" + "_id": { "$oid": "001200240000000000000327" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus24" }, { - "_id": { "$oid": "001200230000000000000314" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies23" + "_id": { "$oid": "001200240000000000000328" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies24" }, { - "_id": { "$oid": "001200230000000000000315" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCatchRareVenusFish" + "_id": { "$oid": "001200240000000000000329" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyHorsingAround" }, { - "_id": { "$oid": "001200230000000000000316" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyOpenLockers" + "_id": { "$oid": "001200240000000000000330" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteSortie" }, { - "_id": { "$oid": "001200230000000000000317" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillExploiterOrb" + "_id": { "$oid": "001200240000000000000331" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillEximus" }, { - "_id": { "$oid": "001200230000000000000318" }, - "Activation": { "$date": { "$numberLong": "1714348800000" } }, - "Expiry": { "$date": { "$numberLong": "1714953600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillEnemies" + "_id": { "$oid": "001200240000000000000332" }, + "Activation": { "$date": { "$numberLong": "1714953600000" } }, + "Expiry": { "$date": { "$numberLong": "1715558400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardIndexWinStreak" } ] }, - "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"lqo4\":{\"mt\":[\"Survival\",\"Defense\",\"Assassination\"],\"mv\":[\"NecramechLockout\",\"LostInTranslation\",\"InfiniteTide\"],\"c\":[[\"RegeneratingEnemies\",\"VoidAberration\"],[\"ShieldedFoes\",\"Deflectors\"],[\"PointBlank\",\"Voidburst\"]],\"fv\":[\"Armorless\",\"TimeDilation\",\"OperatorLockout\",\"Starvation\"]},\"lqo5\":{\"mt\":[\"Extermination\",\"Disruption\",\"Alchemy\"],\"mv\":[\"GrowingIncursion\",\"FragileNodes\",\"VolatileGrenades\"],\"c\":[[\"AcceleratedEnemies\",\"EMPBlackHole\"],[\"ExplosiveCrawlers\",\"ShieldedFoes\"],[\"AntiMaterialWeapons\",\"RegeneratingEnemies\"]],\"fv\":[\"ContactDamage\",\"Knifestep\",\"AbilityLockout\",\"Exhaustion\"]},\"sfn\":555}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"cavabegin\":\"1690761600\",\"PurchasePlatformLockEnabled\":true,\"lqo4\":{\"mt\":[\"Survival\",\"Defense\",\"Assassination\"],\"mv\":[\"NecramechLockout\",\"LostInTranslation\",\"InfiniteTide\"],\"c\":[[\"RegeneratingEnemies\",\"VoidAberration\"],[\"ShieldedFoes\",\"Deflectors\"],[\"PointBlank\",\"Voidburst\"]],\"fv\":[\"Armorless\",\"TimeDilation\",\"OperatorLockout\",\"Starvation\"]},\"lqo5\":{\"mt\":[\"Extermination\",\"Disruption\",\"Alchemy\"],\"mv\":[\"GrowingIncursion\",\"FragileNodes\",\"VolatileGrenades\"],\"c\":[[\"AcceleratedEnemies\",\"EMPBlackHole\"],[\"ExplosiveCrawlers\",\"ShieldedFoes\"],[\"AntiMaterialWeapons\",\"RegeneratingEnemies\"]],\"fv\":[\"ContactDamage\",\"Knifestep\",\"AbilityLockout\",\"Exhaustion\"]},\"lqo6\":{\"mt\":[\"Disruption\",\"Survival\",\"Assassination\"],\"mv\":[\"DoubleTrouble\",\"UnpoweredCapsules\",\"Reinforcements\"],\"c\":[[\"VoidAberration\",\"AntiMaterialWeapons\"],[\"Deflectors\",\"Voidburst\"],[\"ExplosiveCrawlers\",\"AcceleratedEnemies\"]],\"fv\":[\"Starvation\",\"ShieldDelay\",\"Gearless\",\"Framecurse\"]},\"sfn\":555}" } -- 2.47.2 From 37ecf29c4d0521fc41c8205272b0b97f355b9489 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 7 May 2024 23:50:38 +0200 Subject: [PATCH 099/522] feat: unlock Steel Path with unlockAllMissions (#188) --- src/controllers/api/inventoryController.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 6d208fb3..f3e08fef 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -42,7 +42,11 @@ const inventoryController: RequestHandler = async (request: Request, response: R inventoryResponse.PremiumCredits = 999999999; } - if (config.unlockAllMissions) inventoryResponse.Missions = allMissions; + if (config.unlockAllMissions) { + inventoryResponse.Missions = allMissions; + inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked"); + } + if (config.unlockAllQuests) inventoryResponse.QuestKeys = allQuestKeys; if (config.unlockAllShipDecorations) inventoryResponse.ShipDecorations = allShipDecorations; if (config.unlockAllFlavourItems) inventoryResponse.FlavourItems = allFlavourItems satisfies IFlavourItem[]; -- 2.47.2 From c3938169fafd8663aa9affb1b7296257253f59da Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 8 May 2024 22:40:21 +0200 Subject: [PATCH 100/522] improve(webui): fix add weapon, improve handling of unknown items, maintain scroll position (#181) Co-authored-by: Sainan --- .../custom/getItemListsController.ts | 2 +- src/services/inventoryService.ts | 2 +- static/webui/index.html | 6 ++++- static/webui/script.js | 26 +++++++++++++------ 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 92eedda0..ec768b83 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -18,7 +18,7 @@ function reduceItems(items: MinItem[]): ListedItem[] { const getItemListsController: RequestHandler = (_req, res) => { res.json({ warframes: reduceItems(warframes), - weapons: reduceItems(weapons) + weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")) }); }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 43675663..d199ccb4 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -178,7 +178,7 @@ export const addWeapon = async ( weaponIndex = inventory.Melee.push({ ItemType: weaponName, Configs: [], XP: 0 }); break; default: - throw new Error("unknown weapon type"); + throw new Error("unknown weapon type: " + weaponType); } const changedInventory = await inventory.save(); diff --git a/static/webui/index.html b/static/webui/index.html index ea91f01b..780792ec 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -26,6 +26,10 @@

Hello, ! Logout

+

+ Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. + Visiting the navigation should be the easiest way to trigger that. +

@@ -50,7 +54,7 @@
- +
diff --git a/static/webui/script.js b/static/webui/script.js index 0a3de30c..c7a0cdc0 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -69,7 +69,7 @@ function updateInventory() { const tr = document.createElement("tr"); { const td = document.createElement("td"); - td.textContent = itemMap[item.ItemType].name; + td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; tr.appendChild(td); } { @@ -78,17 +78,22 @@ function updateInventory() { if (item.XP < 1_600_000) { const a = document.createElement("a"); a.href = "#"; - a.onclick = function () { + a.onclick = function (event) { + event.preventDefault(); addGearExp("Suits", item.ItemId.$oid, 1_600_000 - item.XP); }; a.textContent = "Make Rank 30"; td.appendChild(a); - td.innerHTML += " · "; + + const span = document.createElement("span"); + span.innerHTML = " · "; + td.appendChild(span); } { const a = document.createElement("a"); a.href = "#"; - a.onclick = function () { + a.onclick = function (event) { + event.preventDefault(); disposeOfGear("Suits", item.ItemId.$oid); }; a.textContent = "Remove"; @@ -105,7 +110,7 @@ function updateInventory() { const tr = document.createElement("tr"); { const td = document.createElement("td"); - td.textContent = itemMap[item.ItemType].name; + td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; tr.appendChild(td); } { @@ -114,17 +119,22 @@ function updateInventory() { if (item.XP < 800_000) { const a = document.createElement("a"); a.href = "#"; - a.onclick = function () { + a.onclick = function (event) { + event.preventDefault(); addGearExp(category, item.ItemId.$oid, 800_000 - item.XP); }; a.textContent = "Make Rank 30"; td.appendChild(a); - td.innerHTML += " · "; + + const span = document.createElement("span"); + span.innerHTML = " · "; + td.appendChild(span); } { const a = document.createElement("a"); a.href = "#"; - a.onclick = function () { + a.onclick = function (event) { + event.preventDefault(); disposeOfGear(category, item.ItemId.$oid); }; a.textContent = "Remove"; -- 2.47.2 From 852fdcfc0e952551187f177b1f79efbbed978da2 Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 8 May 2024 22:53:06 +0200 Subject: [PATCH 101/522] feat: implement XPInfo (#200) --- src/controllers/stats/viewController.ts | 20 +++++++++++++++++++- src/services/inventoryService.ts | 23 +++++++++++++++++++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index 82282611..c73eac38 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -1,11 +1,29 @@ import { RequestHandler } from "express"; +import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { IStatsView } from "@/src/types/statTypes"; import config from "@/config.json"; import view from "@/static/fixed_responses/view.json"; import allScans from "@/static/fixed_responses/allScans.json"; -const viewController: RequestHandler = (_req, res) => { +const viewController: RequestHandler = async (req, res) => { + if (!req.query.accountId) { + res.status(400).json({ error: "accountId was not provided" }); + return; + } + const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); + if (!inventory) { + res.status(400).json({ error: "inventory was undefined" }); + return; + } + const responseJson: IStatsView = view; + responseJson.Weapons = []; + for (const item of inventory.XPInfo) { + responseJson.Weapons.push({ + type: item.ItemType, + xp: item.XP + }); + } if (config.unlockAllScans) { responseJson.Scans = allScans; } diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index d199ccb4..4f3acc31 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -201,12 +201,27 @@ const addGearExpByCategory = ( const category = inventory[categoryName]; gearArray?.forEach(({ ItemId, XP }) => { - const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1; - const item = category[itemIndex]; + if (!XP) { + return; + } - if (itemIndex !== -1 && item.XP != undefined) { - item.XP += XP || 0; + const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1; + if (itemIndex !== -1) { + const item = category[itemIndex]; + item.XP ??= 0; + item.XP += XP; inventory.markModified(`${categoryName}.${itemIndex}.XP`); + + const xpinfoIndex = inventory.XPInfo.findIndex(x => x.ItemType == item.ItemType); + if (xpinfoIndex !== -1) { + const xpinfo = inventory.XPInfo[xpinfoIndex]; + xpinfo.XP += XP; + } else { + inventory.XPInfo.push({ + ItemType: item.ItemType, + XP: XP + }); + } } }); }; -- 2.47.2 From bc3fca8ccf041361182a1001d26b8c5495224615 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 00:59:44 +0200 Subject: [PATCH 102/522] feat: implement arcane adapters (#187) --- src/controllers/api/upgradesController.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 50791d53..a3dc72d2 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -35,6 +35,17 @@ export const upgradesController: RequestHandler = async (req, res) => { } } break; + case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker": + case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker": + case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.Features ??= 0; + item.Features |= 32; + break; + } + } + break; default: throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement); } -- 2.47.2 From d62785a883d19e4af4cca8713ee8132f08119dc7 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 01:07:14 +0200 Subject: [PATCH 103/522] feat: implement polarization (forma) (#173) --- src/controllers/api/upgradesController.ts | 15 +++++++++++++++ src/types/inventoryTypes/inventoryTypes.ts | 4 +++- src/types/requestTypes.ts | 3 ++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index a3dc72d2..cfc2907e 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,5 +1,6 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; +import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IGenericItemDatabase, IMiscItem, TGenericItemKey } from "@/src/types/inventoryTypes/inventoryTypes"; import { addMiscItems, getInventory } from "@/src/services/inventoryService"; @@ -42,6 +43,20 @@ export const upgradesController: RequestHandler = async (req, res) => { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 32; + } + } + break; + case "/Lotus/Types/Items/MiscItems/Forma": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.XP = 0; + item.Polarity ??= []; + item.Polarity.push({ + Slot: operation.PolarizeSlot, + Value: operation.PolarizeValue + } satisfies IPolarity); + item.Polarized ??= 0; + item.Polarized += 1; break; } } diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 5fce938b..66d27010 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -91,7 +91,9 @@ export interface IGenericItem { Configs: IItemConfig[]; UpgradeVer: number; ItemId: IOid; - Features?: number; //space suit has this + Features?: number; + Polarity?: IPolarity[]; + Polarized?: number; } export interface IGenericItemDatabase extends Omit { diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index dc99d658..c58217f0 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -1,4 +1,5 @@ import { IOid } from "./commonTypes"; +import { FocusSchool } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IBooster, IChallengeProgress, @@ -78,6 +79,6 @@ export interface IUpgradeOperation { OperationType: string; UpgradeRequirement: string; // uniqueName of item being consumed PolarizeSlot: number; - PolarizeValue: string; // polarity + PolarizeValue: FocusSchool; PolarityRemap: {}[]; } -- 2.47.2 From 971d14912294d0c0ef5ca45f643ca32988e905b4 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 01:27:32 +0200 Subject: [PATCH 104/522] improve: purchases (#161) Co-authored-by: Sainan --- .../api/inventorySlotsController.ts | 2 +- src/services/inventoryService.ts | 10 +++-- src/services/purchaseService.ts | 38 +++++++++++++++++-- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/controllers/api/inventorySlotsController.ts b/src/controllers/api/inventorySlotsController.ts index ad2165a9..52976e15 100644 --- a/src/controllers/api/inventorySlotsController.ts +++ b/src/controllers/api/inventorySlotsController.ts @@ -27,7 +27,7 @@ export const inventorySlotsController: RequestHandler = async (req, res) => { //TODO: check which slot was purchased because pvpBonus is also possible - const currencyChanges = await updateCurrency(-20, true, accountId); + const currencyChanges = await updateCurrency(20, true, accountId); await updateSlots(accountId, SlotNameToInventoryName.LOADOUT, 1, 1); //console.log({ InventoryChanges: currencyChanges }, " added loadout changes:"); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 4f3acc31..611cfd02 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -93,15 +93,19 @@ export const updateSlots = async (accountId: string, slotName: SlotNames, slotAm }; export const updateCurrency = async (price: number, usePremium: boolean, accountId: string) => { + if (config.infiniteResources) { + return {}; + } + const inventory = await getInventory(accountId); if (usePremium) { if (inventory.PremiumCreditsFree > 0) { - inventory.PremiumCreditsFree += price; + inventory.PremiumCreditsFree -= Math.min(price, inventory.PremiumCreditsFree); } - inventory.PremiumCredits += price; + inventory.PremiumCredits -= price; } else { - inventory.RegularCredits += price; + inventory.RegularCredits -= price; } const modifiedPaths = inventory.modifiedPaths(); diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 7865ee00..3a0b78a8 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -5,12 +5,15 @@ import { addBooster, addCustomization, addMechSuit, + addMiscItems, addPowerSuit, addSentinel, addWeapon, + getInventory, updateCurrency, updateSlots } from "@/src/services/inventoryService"; +import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; @@ -44,11 +47,18 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI inventoryChanges = await handleWeaponsPurchase(internalName, accountId); break; case "Types": - inventoryChanges = await handleTypesPurchase(internalName, accountId); + inventoryChanges = await handleTypesPurchase( + internalName, + accountId, + purchaseRequest.PurchaseParams.Quantity + ); break; case "Boosters": inventoryChanges = await handleBoostersPurchase(internalName, accountId); break; + case "Interface": + inventoryChanges = await handleCustomizationPurchase(internalName, accountId); + break; default: const errorMessage = `unknown store category: ${storeCategory} not implemented or new`; logger.error(errorMessage); @@ -163,18 +173,21 @@ const handlePowersuitPurchase = async (powersuitName: string, accountId: string) }; //TODO: change to getInventory, apply changes then save at the end -const handleTypesPurchase = async (typesName: string, accountId: string) => { +const handleTypesPurchase = async (typesName: string, accountId: string, quantity: number) => { const typeCategory = getStoreItemTypesCategory(typesName); logger.debug(`type category ${typeCategory}`); switch (typeCategory) { + case "AvatarImages": case "SuitCustomizations": - return await handleSuitCustomizationsPurchase(typesName, accountId); + return await handleCustomizationPurchase(typesName, accountId); // case "Recipes": // break; case "Sentinels": return await handleSentinelPurchase(typesName, accountId); case "SlotItems": return await handleSlotPurchase(typesName, accountId); + case "Items": + return await handleMiscItemPurchase(typesName, accountId, quantity); default: throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); } @@ -193,7 +206,7 @@ const handleSentinelPurchase = async (sentinelName: string, accountId: string) = }; }; -const handleSuitCustomizationsPurchase = async (customizationName: string, accountId: string) => { +const handleCustomizationPurchase = async (customizationName: string, accountId: string) => { const customization = await addCustomization(customizationName, accountId); return { @@ -228,3 +241,20 @@ const handleBoostersPurchase = async (boosterStoreName: string, accountId: strin } }; }; + +const handleMiscItemPurchase = async (uniqueName: string, accountId: string, quantity: number) => { + const inventory = await getInventory(accountId); + const miscItemChanges = [ + { + ItemType: uniqueName, + ItemCount: quantity + } satisfies IMiscItem + ]; + addMiscItems(inventory, miscItemChanges); + await inventory.save(); + return { + InventoryChanges: { + MiscItems: miscItemChanges + } + }; +}; -- 2.47.2 From a081d065cbf7386092ef6cfb91cbc03b65783002 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 15:09:08 +0200 Subject: [PATCH 105/522] feat: implement purchasing of additional mod & customization slots (#206) --- src/controllers/api/upgradesController.ts | 56 +++++++++++++++++--- src/models/inventoryModels/inventoryModel.ts | 2 + src/types/inventoryTypes/SuitTypes.ts | 1 + src/types/inventoryTypes/inventoryTypes.ts | 2 + src/types/inventoryTypes/weaponTypes.ts | 1 + 5 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index cfc2907e..1b18511f 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -2,19 +2,28 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IGenericItemDatabase, IMiscItem, TGenericItemKey } from "@/src/types/inventoryTypes/inventoryTypes"; -import { addMiscItems, getInventory } from "@/src/services/inventoryService"; +import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; export const upgradesController: RequestHandler = async (req, res) => { const accountId = req.query.accountId as string; const payload = JSON.parse(req.body.toString()) as IUpgradesRequest; const inventory = await getInventory(accountId); + const InventoryChanges: any = {}; for (const operation of payload.Operations) { - addMiscItems(inventory, [ - { - ItemType: operation.UpgradeRequirement, - ItemCount: -1 - } satisfies IMiscItem - ]); + if ( + operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/ModSlotUnlocker" || + operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker" + ) { + updateCurrency(10, true, accountId); + } else { + addMiscItems(inventory, [ + { + ItemType: operation.UpgradeRequirement, + ItemCount: -1 + } satisfies IMiscItem + ]); + } + switch (operation.UpgradeRequirement) { case "/Lotus/Types/Items/MiscItems/OrokinReactor": case "/Lotus/Types/Items/MiscItems/OrokinCatalyst": @@ -43,6 +52,7 @@ export const upgradesController: RequestHandler = async (req, res) => { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 32; + break; } } break; @@ -61,10 +71,40 @@ export const upgradesController: RequestHandler = async (req, res) => { } } break; + case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.ModSlotPurchases ??= 0; + item.ModSlotPurchases += 1; + InventoryChanges[payload.ItemCategory] = { + ItemId: { + $oid: payload.ItemId.$oid + }, + ModSlotPurchases: item.ModSlotPurchases + }; + break; + } + } + break; + case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.CustomizationSlotPurchases ??= 0; + item.CustomizationSlotPurchases += 1; + InventoryChanges[payload.ItemCategory] = { + ItemId: { + $oid: payload.ItemId.$oid + }, + CustomizationSlotPurchases: item.CustomizationSlotPurchases + }; + break; + } + } + break; default: throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement); } } await inventory.save(); - res.end(); + res.json({ InventoryChanges }); }; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 43f15819..fdb3a636 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -193,6 +193,7 @@ const WeaponSchema = new Schema( Polarity: [polaritySchema], FocusLens: String, ModSlotPurchases: Number, + CustomizationSlotPurchases: Number, UpgradeType: Schema.Types.Mixed, //todo UpgradeFingerprint: String, ItemName: String, @@ -275,6 +276,7 @@ const suitSchema = new Schema( Polarity: [polaritySchema], Polarized: Number, ModSlotPurchases: Number, + CustomizationSlotPurchases: Number, FocusLens: String, UnlockLevel: Number }, diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 22b543a8..8fe48081 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -17,6 +17,7 @@ export interface ISuitDatabase { Polarity?: IPolarity[]; Polarized?: number; ModSlotPurchases?: number; + CustomizationSlotPurchases?: number; FocusLens?: string; UnlockLevel?: number; _id: Types.ObjectId; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 66d27010..8bf01538 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -94,6 +94,8 @@ export interface IGenericItem { Features?: number; Polarity?: IPolarity[]; Polarized?: number; + ModSlotPurchases?: number; + CustomizationSlotPurchases?: number; } export interface IGenericItemDatabase extends Omit { diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 7cc390f3..46d11d01 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -17,6 +17,7 @@ export interface IWeaponDatabase { Polarity?: IPolarity[]; FocusLens?: string; ModSlotPurchases?: number; + CustomizationSlotPurchases?: number; UpgradeType?: string; UpgradeFingerprint?: string; ItemName?: string; -- 2.47.2 From b79d0034e74f912b7abc71396c81830006da19f5 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 15:10:13 +0200 Subject: [PATCH 106/522] fix: errors with `npm run build && npm run start` (#168) --- package-lock.json | 240 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 5 +- src/pathman.ts | 12 +++ 3 files changed, 236 insertions(+), 21 deletions(-) create mode 100644 src/pathman.ts diff --git a/package-lock.json b/package-lock.json index e3aa30c8..432ade5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "license": "GNU", "dependencies": { + "copyfiles": "^2.4.1", "dotenv": "^16.1.3", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", @@ -1007,7 +1008,6 @@ "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" } @@ -1016,7 +1016,6 @@ "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" }, @@ -1074,8 +1073,7 @@ "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 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/basic-auth": { "version": "2.0.1", @@ -1148,7 +1146,6 @@ "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" @@ -1270,6 +1267,16 @@ "node": ">= 6" } }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/color": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", @@ -1283,7 +1290,6 @@ "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" }, @@ -1330,8 +1336,7 @@ "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 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/content-disposition": { "version": "0.5.4", @@ -1365,6 +1370,29 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dependencies": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "bin": { + "copyfiles": "copyfiles", + "copyup": "copyfiles" + } + }, + "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/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -1490,6 +1518,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "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/enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", @@ -1522,6 +1555,14 @@ "node": ">= 0.4" } }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1989,8 +2030,7 @@ "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 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { "version": "1.1.2", @@ -2000,6 +2040,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -2022,7 +2070,6 @@ "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", @@ -2231,7 +2278,6 @@ "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" @@ -2288,6 +2334,14 @@ "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-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2323,6 +2377,11 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" }, + "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/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2522,7 +2581,6 @@ "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" }, @@ -2543,7 +2601,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -2714,6 +2771,31 @@ "node": ">= 0.6" } }, + "node_modules/noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, + "node_modules/noms/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/noms/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/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -2764,7 +2846,6 @@ "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" } @@ -2938,6 +3019,11 @@ "node": ">=6.0.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==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -3039,6 +3125,14 @@ "node": ">=8.10.0" } }, + "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/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -3374,11 +3468,23 @@ "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/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" }, @@ -3458,6 +3564,47 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "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==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/through2/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==", + "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/through2/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/through2/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3705,6 +3852,14 @@ "node": ">= 0.8" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3855,27 +4010,74 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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/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 + "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==", - "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==", + "engines": { + "node": ">=10" + } + }, "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/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 1c987971..04654aa7 100644 --- a/package.json +++ b/package.json @@ -4,15 +4,16 @@ "description": "WF Emulator", "main": "index.ts", "scripts": { - "start": "node build/index.js", + "start": "node --import ./build/src/pathman.js build/src/index.js", "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts ", - "build": "tsc", + "build": "tsc && copyfiles static/webui/* build", "lint": "eslint --ext .ts .", "lint:fix": "eslint --fix --ext .ts .", "prettier": "prettier --write ." }, "license": "GNU", "dependencies": { + "copyfiles": "^2.4.1", "dotenv": "^16.1.3", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", diff --git a/src/pathman.ts b/src/pathman.ts new file mode 100644 index 00000000..1e1d5127 --- /dev/null +++ b/src/pathman.ts @@ -0,0 +1,12 @@ +// Hooks node to support require from "@/" paths for `npm run build && npm run start`. +// Based on https://github.com/dividab/tsconfig-paths + +const Module = require("module"); +const originalResolveFilename = Module._resolveFilename; +Module._resolveFilename = function (request: string, _parent: any): string { + if (request.substring(0, 2) == "@/") { + const modifiedArguments = [process.cwd() + "/build/" + request.substr(2), ...[].slice.call(arguments, 1)]; // Passes all arguments. Even those that is not specified above. + return originalResolveFilename.apply(this, modifiedArguments); + } + return originalResolveFilename.apply(this, arguments); +}; -- 2.47.2 From b9c7daf4f6af9249f548fbc809f2782213195b19 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 16:04:31 +0200 Subject: [PATCH 107/522] feat: implement purchasing of blueprints & gear items (#208) --- src/services/inventoryService.ts | 7 ++--- src/services/purchaseService.ts | 46 +++++++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 611cfd02..117891a4 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -12,7 +12,8 @@ import { IInventoryDatabaseDocument, IMiscItem, IMission, - IRawUpgrade + IRawUpgrade, + ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate } from "../types/genericUpdate"; import { IArtifactsRequest, IMissionInventoryUpdateRequest, IThemeUpdateRequest } from "../types/requestTypes"; @@ -245,7 +246,7 @@ export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: }); }; -const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { +export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { const { Consumables } = inventory; itemsArray?.forEach(({ ItemCount, ItemType }) => { @@ -260,7 +261,7 @@ const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: ICons }); }; -const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { +export const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined) => { const { Recipes } = inventory; itemsArray?.forEach(({ ItemCount, ItemType }) => { diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 3a0b78a8..d9ca8e14 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -3,17 +3,19 @@ import { getWeaponType } from "@/src/services/itemDataService"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addBooster, + addConsumables, addCustomization, addMechSuit, addMiscItems, addPowerSuit, + addRecipes, addSentinel, addWeapon, getInventory, updateCurrency, updateSlots } from "@/src/services/inventoryService"; -import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IConsumable, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; @@ -180,14 +182,18 @@ const handleTypesPurchase = async (typesName: string, accountId: string, quantit case "AvatarImages": case "SuitCustomizations": return await handleCustomizationPurchase(typesName, accountId); - // case "Recipes": - // break; case "Sentinels": return await handleSentinelPurchase(typesName, accountId); case "SlotItems": return await handleSlotPurchase(typesName, accountId); case "Items": return await handleMiscItemPurchase(typesName, accountId, quantity); + case "Recipes": + case "Consumables": // Blueprints for Ciphers, Antitoxins + return await handleRecipesPurchase(typesName, accountId, quantity); + case "Restoratives": // Codex Scanner, Remote Observer, Starburst + return await handleRestorativesPurchase(typesName, accountId, quantity); + break; default: throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); } @@ -258,3 +264,37 @@ const handleMiscItemPurchase = async (uniqueName: string, accountId: string, qua } }; }; + +const handleRecipesPurchase = async (uniqueName: string, accountId: string, quantity: number) => { + const inventory = await getInventory(accountId); + const recipeChanges = [ + { + ItemType: uniqueName, + ItemCount: quantity + } satisfies ITypeCount + ]; + addRecipes(inventory, recipeChanges); + await inventory.save(); + return { + InventoryChanges: { + Recipes: recipeChanges + } + }; +}; + +const handleRestorativesPurchase = async (uniqueName: string, accountId: string, quantity: number) => { + const inventory = await getInventory(accountId); + const consumablesChanges = [ + { + ItemType: uniqueName, + ItemCount: quantity + } satisfies IConsumable + ]; + addConsumables(inventory, consumablesChanges); + await inventory.save(); + return { + InventoryChanges: { + Consumables: consumablesChanges + } + }; +}; -- 2.47.2 From 8a6d55e22ed5e289633237a6a58e0e06f82db7d7 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 16:07:19 +0200 Subject: [PATCH 108/522] fix: duplicated code in getShipController (#158) --- src/controllers/api/getShipController.ts | 11 +---------- src/controllers/api/setActiveShipController.ts | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index 56485606..cc2794bf 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -2,6 +2,7 @@ import { RequestHandler } from "express"; import config from "@/config.json"; import allShipFeatures from "@/static/fixed_responses/allShipFeatures.json"; import { parseString } from "@/src/helpers/general"; +import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { getShip } from "@/src/services/shipService"; import { PersonalRooms } from "@/src/models/personalRoomsModel"; import { Loadout } from "@/src/models/inventoryModels/loadoutModel"; @@ -48,13 +49,3 @@ export const getLoadout = async (accountId: string) => { return loadout; }; - -export const getPersonalRooms = async (accountId: string) => { - const personalRooms = await PersonalRooms.findOne({ personalRoomsOwnerId: accountId }); - - if (!personalRooms) { - logger.error(`personal rooms not found for account ${accountId}`); - throw new Error("personal rooms not found"); - } - return personalRooms; -}; diff --git a/src/controllers/api/setActiveShipController.ts b/src/controllers/api/setActiveShipController.ts index ed896b4e..2b7f7868 100644 --- a/src/controllers/api/setActiveShipController.ts +++ b/src/controllers/api/setActiveShipController.ts @@ -1,4 +1,4 @@ -import { getPersonalRooms } from "@/src/controllers/api/getShipController"; +import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { parseString } from "@/src/helpers/general"; import { RequestHandler } from "express"; import { Types } from "mongoose"; -- 2.47.2 From 61450b04bb22c3396e37eb9506956113313b0fe9 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 22:34:47 +0200 Subject: [PATCH 109/522] feat(webui): add "Add Items" to acquire various items (#209) Co-authored-by: Sainan --- .../custom/getItemListsController.ts | 5 +-- static/webui/index.html | 19 ++++++++--- static/webui/script.js | 33 +++++++++++++++---- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index ec768b83..5eeacdc9 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { MinItem, warframes, weapons } from "@/src/services/itemDataService"; +import { MinItem, warframes, weapons, items } from "@/src/services/itemDataService"; interface ListedItem { uniqueName: string; @@ -18,7 +18,8 @@ function reduceItems(items: MinItem[]): ListedItem[] { const getItemListsController: RequestHandler = (_req, res) => { res.json({ warframes: reduceItems(warframes), - weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")) + weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")), + miscitems: reduceItems(items.filter(item => item.category == "Misc" || item.category == "Resources")) }); }; diff --git a/static/webui/index.html b/static/webui/index.html index 780792ec..d3770b59 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -26,35 +26,43 @@

Hello, ! Logout

-

+

Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.

+
+
Add Items
+
+ + + +
+
-
+
Warframes
- +
-
+
Weapons
- +
@@ -64,6 +72,7 @@
+ + + diff --git a/static/webui/script.js b/static/webui/script.js index ef61d4f8..cf9d05fb 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -1,6 +1,7 @@ function doLogin() { localStorage.setItem("email", $("#email").val()); localStorage.setItem("password", $("#password").val()); + $("#email, #password").val(""); loginFromLocalStorage(); } @@ -20,10 +21,12 @@ function loginFromLocalStorage() { }) }); req.done(data => { - $("#login-view").addClass("d-none"); - $("#main-view").removeClass("d-none"); + if (single.getCurrentPath() == "/webui/") { + single.loadRoute("/webui/inventory"); + } $(".displayname").text(data.DisplayName); window.accountId = data.id; + window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce; updateInventory(); }); req.fail(() => { @@ -35,14 +38,25 @@ function loginFromLocalStorage() { function logout() { localStorage.removeItem("email"); localStorage.removeItem("password"); - $("#login-view").removeClass("d-none"); - $("#main-view").addClass("d-none"); } if (localStorage.getItem("email") && localStorage.getItem("password")) { loginFromLocalStorage(); } +single.on("route_load", function (event) { + if (event.route.paths[0] != "/webui/") { + // Authorised route? + if (!localStorage.getItem("email")) { + // Not logged in? + return single.loadRoute("/webui/"); // Show login screen + } + $("body").addClass("logged-in"); + } else { + $("body").removeClass("logged-in"); + } +}); + window.itemListPromise = new Promise(resolve => { const req = $.get("/custom/getItemLists"); req.done(data => { @@ -61,7 +75,7 @@ window.itemListPromise = new Promise(resolve => { }); function updateInventory() { - const req = $.get("/api/inventory.php?accountId=" + window.accountId); + const req = $.get("/api/inventory.php?" + window.authz); req.done(data => { window.itemListPromise.then(itemMap => { document.getElementById("warframe-list").innerHTML = ""; @@ -215,7 +229,7 @@ function addGearExp(category, oid, xp) { } ]; $.post({ - url: "/api/missionInventoryUpdate.php?accountId=" + window.accountId, + url: "/api/missionInventoryUpdate.php?" + window.authz, contentType: "text/plain", data: JSON.stringify(data) }).done(function () { @@ -235,7 +249,7 @@ function disposeOfGear(category, oid) { } ]; $.post({ - url: "/api/sell.php?accountId=" + window.accountId, + url: "/api/sell.php?" + window.authz, contentType: "text/plain", data: JSON.stringify(data) }).done(function () { @@ -250,7 +264,7 @@ function doAcquireMiscItems() { return; } $.post({ - url: "/api/missionInventoryUpdate.php?accountId=" + window.accountId, + url: "/api/missionInventoryUpdate.php?" + window.authz, contentType: "text/plain", data: JSON.stringify({ MiscItems: [ @@ -268,3 +282,66 @@ function doAcquireMiscItems() { $("#miscitem-name").on("input", () => { $("#miscitem-name").removeClass("is-invalid"); }); + +function doAcquireRiven() { + let fingerprint; + try { + fingerprint = JSON.parse($("#addriven-fingerprint").val()); + if (typeof fingerprint !== "object") { + fingerprint = JSON.parse(fingerprint); + } + } catch (e) {} + if ( + typeof fingerprint !== "object" || + !("compat" in fingerprint) || + !("pol" in fingerprint) || + !("buffs" in fingerprint) + ) { + $("#addriven-fingerprint").addClass("is-invalid").focus(); + return; + } + const uniqueName = "/Lotus/Upgrades/Mods/Randomized/" + $("#addriven-type").val(); + // Add riven type to inventory + $.post({ + url: "/api/missionInventoryUpdate.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + RawUpgrades: [ + { + ItemType: uniqueName, + ItemCount: 1 + } + ] + }) + }).done(function () { + // Get riven's assigned id + $.get("/api/inventory.php?" + window.authz).done(data => { + for (const rawUpgrade of data.RawUpgrades) { + if (rawUpgrade.ItemType === uniqueName) { + // Add fingerprint to riven + $.post({ + url: "/api/artifacts.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + Upgrade: { + ItemType: uniqueName, + UpgradeFingerprint: JSON.stringify(fingerprint), + ItemId: rawUpgrade.LastAdded + }, + LevelDiff: 0, + Cost: 0, + FusionPointCost: 0 + }) + }).done(function () { + alert("Successfully added."); + }); + break; + } + } + }); + }); +} + +$("#addriven-fingerprint").on("input", () => { + $("#addriven-fingerprint").removeClass("is-invalid"); +}); diff --git a/static/webui/single.js b/static/webui/single.js new file mode 100644 index 00000000..928d58e3 --- /dev/null +++ b/static/webui/single.js @@ -0,0 +1,317 @@ +(function () { + let head_include = document.body == null, + style = document.createElement("style"); + style.textContent = `[data-route]:not(.route-visible){display:none}`; + document.head.appendChild(style); + + class EventEmitter { + constructor() { + this.event_handlers = {}; + } + + on(event_name, func) { + if (typeof func != "function") { + throw "Event handler has to be a function."; + } + this.event_handlers[event_name] = func; + return this; + } + + off(event_name) { + delete this.event_handlers[event_name]; + return this; + } + + fire(event_name, args) { + if (event_name in this.event_handlers) { + this.event_handlers[event_name].call(this, args); + } + return this; + } + } + + class Route extends EventEmitter { + constructor(overlay, elm, paths) { + super(); + this.overlay = overlay; + this.elm = elm; + this.paths = paths; + this.title = undefined; + if (elm.hasAttribute("data-title")) { + this.title = this.elm.getAttribute("data-title"); + this.elm.removeAttribute("data-title"); + } else if (document.querySelector("title") != null) { + this.title = document.querySelector("title").textContent; + } else { + this.title = this.paths[0]; + } + } + + get element() { + return this.elm; + } + + isCurrent() { + return this.elm.classList.contains("route-current"); + } + + isVisible() { + return this.elm.classList.contains("route-visible"); + } + } + + class MultiRoute extends Route { + constructor(overlay, elm, paths_data) { + if (overlay) { + paths_data = paths_data.substr(9); + } + let paths = []; + paths_data.split(",").forEach(name => { + paths.push(name.trim()); + }); + super(overlay, elm, paths); + } + + getCanonicalPath() { + if (this.paths[0].substr(0, 1) == "/") { + return this.paths[0]; + } + if (this.paths.length > 1) { + return this.paths[1]; + } + return "/" + this.paths[0]; + } + } + + class StandardRoute extends MultiRoute { + constructor(overlay, elm, paths) { + super(overlay, elm, elm.getAttribute("data-route")); + } + } + + class RegexRoute extends Route { + constructor(overlay, elm) { + let regexp = elm.getAttribute("data-route").substr(2); + if (overlay) { + regexp = regexp.substr(9); + } + super(overlay, elm, [regexp]); + this.regex = new RegExp(regexp); + } + + getArgs(path) { + if (path === undefined) { + path = single.getCurrentPath(); + } + let res = this.regex.exec(path); + if (res && res.length > 0) { + return res; + } + return false; + } + } + + class SingleApp extends EventEmitter { + constructor() { + super(); + this.routes = []; + this.routes_populated = false; + if (!head_include) { + this.populateRoutes(); + } + window.onpopstate = event => { + event.preventDefault(); + single.loadRoute(); + }; + this.timeouts = []; + this.intervals = []; + } + + populateRoutes() { + if (this.routes_populated) { + return; + } + document.body.querySelectorAll("[data-route]").forEach(elm => { + let data = elm.getAttribute("data-route"), + overlay = false; + if (data.substr(0, 9) == "overlay: ") { + data = data.substr(9); + overlay = true; + } + if (data.substr(0, 2) == "~ ") { + this.routes.push(new RegexRoute(overlay, elm)); + } else { + this.routes.push(new StandardRoute(overlay, elm)); + } + }); + if (this.routes.length == 0) { + console.error("[single.js] You need to define at least one route"); + } + this.routes.forEach(route => { + route.paths.forEach(path => { + for (let i = 0; i < this.routes; i++) { + if (this.routes[i] !== route && this.routes[i].paths.indexOf(path) > -1) { + console.error("[single.js] Duplicate path: " + path); + } + } + }); + }); + document.body.addEventListener("click", event => { + let elm = event.target; + while (elm && !(elm instanceof HTMLAnchorElement)) { + elm = elm.parentNode; + } + if ( + elm instanceof HTMLAnchorElement && + !elm.hasAttribute("target") && + elm.hasAttribute("href") && + elm.getAttribute("href").substr(0, 1) == "/" + ) { + event.preventDefault(); + single.loadRoute(new URL(elm.href)); + } + }); + this.routes_populated = true; + } + + getRoute(route) { + this.populateRoutes(); + let is_elm = route instanceof HTMLElement; + if (is_elm) { + if (!route.hasAttribute("data-route")) { + throw "Invalid route element: " + route; + } + route = route.getAttribute("data-route"); + if (route.substr(0, 9) == "overlay: ") { + route = route.substr(9); + } + if (route.substr(0, 2) == "~ ") { + route = route.substr(2); + } else { + route = route.split(",")[0]; + } + } else { + if (route.substr(0, 9) == "overlay: ") { + route = route.substr(9); + } + if (route.substr(0, 2) == "~ ") { + route = route.substr(2); + } + } + for (let i = 0; i < this.routes.length; i++) { + if (this.routes[i].paths.indexOf(route) > -1) { + return this.routes[i]; + } + } + if (!is_elm) { + return this.getRoutes(route)[0]; + } + } + + getRoutes(route) { + let routes = []; + try { + document.querySelectorAll(route).forEach(elm => { + try { + let route = this.getRoute(elm); + if (route) { + routes.push(route); + } + } catch (ignored) {} + }); + } catch (ignored) {} + return routes; + } + + loadRoute(path) { + this.populateRoutes(); + this.timeouts.forEach(clearTimeout); + this.intervals.forEach(clearInterval); + if (path === undefined) { + path = new URL(location.href); + } else if (typeof path == "string" && path.substr(0, 1) == "/") { + path = new URL(location.protocol + location.hostname + path); + } + let route, + args = false, + urlextra = ""; + if (path instanceof URL) { + urlextra = path.search + path.hash; + path = decodeURIComponent(path.pathname); + } + for (let i = 0; i < this.routes.length; i++) { + if (this.routes[i] instanceof RegexRoute) { + args = this.routes[i].getArgs(path); + if (args !== false) { + route = this.routes[i]; + break; + } + } else if (this.routes[i].paths.indexOf(path) > -1) { + route = this.routes[i]; + break; + } + } + if (route === undefined) { + route = this.getRoute("404"); + if (route === null) { + route = this.routes[0]; + path = route.getCanonicalPath(); + } + } + if (path.substr(0, 1) != "/") { + path = route.getCanonicalPath(); + } + if (args === false) { + args = [path]; + } + route.fire("beforeload", args); + this.fire("route_beforeload", { + route: route, + args: args + }); + this.routes.forEach(r => { + if (r !== route) { + r.elm.classList.remove("route-current"); + if (!route.overlay || r.overlay) { + r.elm.classList.remove("route-visible"); + } + } + }); + route.elm.classList.add("route-current", "route-visible"); + path += urlextra; + if (this.getCurrentPath() != path) { + history.pushState({}, route.title, path); + } + document.querySelector("title").textContent = route.title; + this.fire("route_load", { + route: route, + args: args + }); + route.fire("load", args); + } + + getCurrentRoute() { + return this.getRoute(".route-current"); + } + + getCurrentPath() { + return location.pathname + location.search + location.hash; + } + + setTimeout(f, i) { + this.timeouts.push(window.setTimeout(f, i)); + } + + setInterval(f, i) { + this.intervals.push(window.setInterval(f, i)); + } + } + + console.assert(!("single" in window)); + window.single = new SingleApp(); + if (["interactive", "complete"].indexOf(document.readyState) > -1) { + window.single.loadRoute(); + } else { + document.addEventListener("DOMContentLoaded", () => window.single.loadRoute()); + } +})(); diff --git a/static/webui/style.css b/static/webui/style.css new file mode 100644 index 00000000..ac9bf2a1 --- /dev/null +++ b/static/webui/style.css @@ -0,0 +1,17 @@ +@media (min-width: 992px) { + body.logged-in #main-view { + display: grid; + grid-template-columns: 1fr 8fr; + gap: 1.5rem; + } + + body:not(.logged-in) #sidebar { + display: none; + } +} + +body:not(.logged-in) .navbar-toggler, +body:not(.logged-in) .nav-item.dropdown, +body:not(.logged-in) #refresh-note { + display: none; +} -- 2.47.2 From 6294a315a8abca84c3f3ee485f9193dda054e5ff Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 28 May 2024 13:45:06 +0200 Subject: [PATCH 123/522] feat: properly implement nonce (#220) --- .../api/addFriendImageController.ts | 3 ++- src/controllers/api/artifactsController.ts | 3 ++- .../api/claimCompletedRecipeController.ts | 3 ++- src/controllers/api/createGuildController.ts | 4 ++- .../api/genericUpdateController.ts | 3 ++- src/controllers/api/getCreditsController.ts | 4 +-- src/controllers/api/getGuildController.ts | 8 +++--- src/controllers/api/getShipController.ts | 4 +-- src/controllers/api/hostSessionController.ts | 6 +++-- src/controllers/api/inventoryController.ts | 16 ++++++++--- .../api/inventorySlotsController.ts | 4 +-- src/controllers/api/loginController.ts | 13 ++++++--- src/controllers/api/logoutController.ts | 11 +++++++- .../api/missionInventoryUpdateController.ts | 4 +-- src/controllers/api/purchaseController.ts | 4 +-- src/controllers/api/saveLoadout.ts | 4 +-- src/controllers/api/sellController.ts | 4 ++- .../api/setActiveShipController.ts | 3 ++- .../api/setBootLocationController.ts | 4 ++- .../api/setSupportedSyndicateController.ts | 4 ++- .../api/shipDecorationsController.ts | 4 +-- src/controllers/api/startRecipeController.ts | 4 +-- .../api/trainingResultController.ts | 4 +-- src/controllers/api/updateThemeController.ts | 3 ++- src/controllers/api/upgradesController.ts | 3 ++- src/controllers/stats/viewController.ts | 6 ++--- src/helpers/customHelpers/customHelpers.ts | 3 ++- src/models/loginModel.ts | 3 ++- src/services/loginService.ts | 27 ++++++++++++++++--- src/types/loginTypes.ts | 2 +- static/fixed_responses/login_static.ts | 2 -- 31 files changed, 112 insertions(+), 58 deletions(-) diff --git a/src/controllers/api/addFriendImageController.ts b/src/controllers/api/addFriendImageController.ts index a5a164c6..979bb9fb 100644 --- a/src/controllers/api/addFriendImageController.ts +++ b/src/controllers/api/addFriendImageController.ts @@ -1,10 +1,11 @@ import { RequestHandler } from "express"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { IUpdateGlyphRequest } from "@/src/types/requestTypes"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; const addFriendImageController: RequestHandler = async (req, res) => { - const accountId = req.query.accountId as string; + const accountId = await getAccountIdForRequest(req); const json = getJSONfromString(req.body.toString()) as IUpdateGlyphRequest; const inventory = await getInventory(accountId); inventory.ActiveAvatarImageType = json.AvatarImageType; diff --git a/src/controllers/api/artifactsController.ts b/src/controllers/api/artifactsController.ts index a56c586c..65041eca 100644 --- a/src/controllers/api/artifactsController.ts +++ b/src/controllers/api/artifactsController.ts @@ -1,12 +1,13 @@ import { parseString } from "@/src/helpers/general"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { upgradeMod } from "@/src/services/inventoryService"; import { IArtifactsRequest } from "@/src/types/requestTypes"; import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const artifactsController: RequestHandler = async (req, res) => { - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); try { // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts index 37a8536b..291516ef 100644 --- a/src/controllers/api/claimCompletedRecipeController.ts +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -6,6 +6,7 @@ import { logger } from "@/src/utils/logger"; import { getItemByBlueprint, getItemCategoryByUniqueName } from "@/src/services/itemDataService"; import { IOid } from "@/src/types/commonTypes"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; import { IInventoryDatabase } from "@/src/types/inventoryTypes/inventoryTypes"; @@ -16,7 +17,7 @@ export interface IClaimCompletedRecipeRequest { // eslint-disable-next-line @typescript-eslint/no-misused-promises export const claimCompletedRecipeController: RequestHandler = async (req, res) => { const claimCompletedRecipeRequest = getJSONfromString(req.body.toString()) as IClaimCompletedRecipeRequest; - const accountId = req.query.accountId as string; + const accountId = await getAccountIdForRequest(req); if (!accountId) throw new Error("no account id"); console.log(claimCompletedRecipeRequest); diff --git a/src/controllers/api/createGuildController.ts b/src/controllers/api/createGuildController.ts index 88cace67..f0f56f1b 100644 --- a/src/controllers/api/createGuildController.ts +++ b/src/controllers/api/createGuildController.ts @@ -1,10 +1,12 @@ import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Guild } from "@/src/models/guildModel"; import { ICreateGuildRequest } from "@/src/types/guildTypes"; const createGuildController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); const payload: ICreateGuildRequest = getJSONfromString(req.body.toString()); // Create guild on database @@ -14,7 +16,7 @@ const createGuildController: RequestHandler = async (req, res) => { await guild.save(); // Update inventory - const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); + const inventory = await Inventory.findOne({ accountOwnerId: accountId }); if (inventory) { // Set GuildId inventory.GuildId = guild._id; diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index 4e96ac6e..f2d29fc1 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -1,10 +1,11 @@ +import { getAccountIdForRequest } from "@/src/services/loginService"; import { updateGeneric } from "@/src/services/inventoryService"; import { RequestHandler } from "express"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const genericUpdateController: RequestHandler = async (request, response) => { - const accountId = request.query.accountId as string; + const accountId = await getAccountIdForRequest(request); const update = getJSONfromString(request.body.toString()); response.json(await updateGeneric(update, accountId)); }; diff --git a/src/controllers/api/getCreditsController.ts b/src/controllers/api/getCreditsController.ts index e7be097e..e6b88241 100644 --- a/src/controllers/api/getCreditsController.ts +++ b/src/controllers/api/getCreditsController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { config } from "@/src/services/configService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; -import { parseString } from "@/src/helpers/general"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const getCreditsController: RequestHandler = async (req, res) => { @@ -15,7 +15,7 @@ export const getCreditsController: RequestHandler = async (req, res) => { return; } - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); res.json({ diff --git a/src/controllers/api/getGuildController.ts b/src/controllers/api/getGuildController.ts index a91bf5dd..d112f996 100644 --- a/src/controllers/api/getGuildController.ts +++ b/src/controllers/api/getGuildController.ts @@ -1,14 +1,12 @@ import { RequestHandler } from "express"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Guild } from "@/src/models/guildModel"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { toOid } from "@/src/helpers/inventoryHelpers"; const getGuildController: RequestHandler = async (req, res) => { - if (!req.query.accountId) { - res.status(400).json({ error: "accountId was not provided" }); - return; - } - const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); + const accountId = await getAccountIdForRequest(req); + const inventory = await Inventory.findOne({ accountOwnerId: accountId }); if (!inventory) { res.status(400).json({ error: "inventory was undefined" }); return; diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index de89bdc1..3459548e 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { config } from "@/src/services/configService"; import allShipFeatures from "@/static/fixed_responses/allShipFeatures.json"; -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { getShip } from "@/src/services/shipService"; import { PersonalRooms } from "@/src/models/personalRoomsModel"; @@ -12,7 +12,7 @@ import { IGetShipResponse } from "@/src/types/shipTypes"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const getShipController: RequestHandler = async (req, res) => { - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); const personalRooms = await getPersonalRooms(accountId); const loadout = await getLoadout(accountId); const ship = await getShip(personalRooms.activeShipId, "ShipInteriorColors ShipAttachments SkinFlavourItem"); diff --git a/src/controllers/api/hostSessionController.ts b/src/controllers/api/hostSessionController.ts index 7adaee90..1745d994 100644 --- a/src/controllers/api/hostSessionController.ts +++ b/src/controllers/api/hostSessionController.ts @@ -1,12 +1,14 @@ import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { createNewSession } from "@/src/managers/sessionManager"; import { logger } from "@/src/utils/logger"; import { ISession } from "@/src/types/session"; -const hostSessionController: RequestHandler = (req, res) => { +const hostSessionController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); const hostSessionRequest = JSON.parse(req.body as string) as ISession; logger.debug("HostSession Request", { hostSessionRequest }); - const session = createNewSession(hostSessionRequest, req.query.accountId as string); + const session = createNewSession(hostSessionRequest, accountId); logger.debug(`New Session Created`, { session }); res.json({ sessionId: { $oid: session.sessionId }, rewardSeed: 99999999 }); diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 4f64314a..22a0e3d3 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-misused-promises */ +import { getAccountIdForRequest } from "@/src/services/loginService"; import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Request, RequestHandler, Response } from "express"; @@ -11,10 +12,17 @@ import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; import { IShipInventory, IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { - const accountId = request.query.accountId; - - if (!accountId) { - response.status(400).json({ error: "accountId was not provided" }); + let accountId; + try { + accountId = await getAccountIdForRequest(request); + } catch (e) { + if ((e as Error).message == "Invalid accountId-nonce pair") { + // TODO: Figure out some way to tell the game to stop trying with this nonce. + // For now, we'll have to be a little nasty. + response.destroy(); + return; + } + response.status(400).json({ error: (e as Error).message }); return; } diff --git a/src/controllers/api/inventorySlotsController.ts b/src/controllers/api/inventorySlotsController.ts index 52976e15..fc3c68a7 100644 --- a/src/controllers/api/inventorySlotsController.ts +++ b/src/controllers/api/inventorySlotsController.ts @@ -1,4 +1,4 @@ -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { updateCurrency } from "@/src/services/inventoryService"; import { RequestHandler } from "express"; import { updateSlots } from "@/src/services/inventoryService"; @@ -20,7 +20,7 @@ import { SlotNameToInventoryName } from "@/src/types/purchaseTypes"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const inventorySlotsController: RequestHandler = async (req, res) => { - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); //const body = JSON.parse(req.body as string) as IInventorySlotsRequest; //console.log(body); diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 17481713..4b0dc26b 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -8,7 +8,7 @@ import { toLoginRequest } from "@/src/helpers/loginHelpers"; import { Account } from "@/src/models/loginModel"; import { createAccount, isCorrectPassword } from "@/src/services/loginService"; import { ILoginResponse } from "@/src/types/loginTypes"; -import { DTLS, groups, HUB, Nonce, platformCDNs } from "@/static/fixed_responses/login_static"; +import { DTLS, groups, HUB, platformCDNs } from "@/static/fixed_responses/login_static"; import { logger } from "@/src/utils/logger"; // eslint-disable-next-line @typescript-eslint/no-misused-promises @@ -18,6 +18,7 @@ const loginController: RequestHandler = async (request, response) => { const loginRequest = toLoginRequest(body); const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 } + const nonce = Math.round(Math.random() * Number.MAX_SAFE_INTEGER); if (!account && config.autoCreateAccount && loginRequest.ClientType != "webui") { try { @@ -30,7 +31,8 @@ const loginController: RequestHandler = async (request, response) => { CrossPlatformAllowed: true, ForceLogoutVersion: 0, ConsentNeeded: false, - TrackedSettings: [] + TrackedSettings: [], + Nonce: nonce }); logger.debug("created new account"); // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -39,7 +41,6 @@ const loginController: RequestHandler = async (request, response) => { ...databaseAccount, Groups: groups, platformCDNs: platformCDNs, - Nonce: Nonce, NRS: [config.myAddress], DTLS: DTLS, IRC: [config.myAddress], @@ -63,12 +64,16 @@ const loginController: RequestHandler = async (request, response) => { return; } + if (account.Nonce == 0 || loginRequest.ClientType != "webui") { + account.Nonce = nonce; + account.save(); + } + const { email, password, ...databaseAccount } = account.toJSON(); const newLoginResponse: ILoginResponse = { ...databaseAccount, Groups: groups, platformCDNs: platformCDNs, - Nonce: Nonce, NRS: [config.myAddress], DTLS: DTLS, IRC: [config.myAddress], diff --git a/src/controllers/api/logoutController.ts b/src/controllers/api/logoutController.ts index 6dab1cc8..16181d7f 100644 --- a/src/controllers/api/logoutController.ts +++ b/src/controllers/api/logoutController.ts @@ -1,6 +1,15 @@ import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { Account } from "@/src/models/loginModel"; +import { IDatabaseAccountDocument } from "@/src/types/loginTypes"; -const logoutController: RequestHandler = (_req, res) => { +const logoutController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const account = await Account.findOne({ _id: accountId }); + if (account) { + account.Nonce = 0; + account.save(); + } res.writeHead(200, { "Content-Type": "text/html", "Content-Length": 1 diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index e53ff359..79b4632e 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -2,7 +2,7 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; import { combineRewardAndLootInventory, getRewards } from "@/src/services/missionInventoryUpdateService "; import { getJSONfromString } from "@/src/helpers/stringHelpers"; -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes"; /* **** INPUT **** @@ -46,7 +46,7 @@ import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const missionInventoryUpdateController: RequestHandler = async (req, res): Promise => { - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); try { // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call diff --git a/src/controllers/api/purchaseController.ts b/src/controllers/api/purchaseController.ts index c0c34e47..cf32a95d 100644 --- a/src/controllers/api/purchaseController.ts +++ b/src/controllers/api/purchaseController.ts @@ -1,11 +1,11 @@ -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { toPurchaseRequest } from "@/src/helpers/purchaseHelpers"; import { handlePurchase } from "@/src/services/purchaseService"; import { Request, Response } from "express"; export const purchaseController = async (req: Request, res: Response) => { const purchaseRequest = toPurchaseRequest(JSON.parse(String(req.body))); - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); const response = await handlePurchase(purchaseRequest, accountId); res.json(response); }; diff --git a/src/controllers/api/saveLoadout.ts b/src/controllers/api/saveLoadout.ts index 3942a3ea..e5c180ed 100644 --- a/src/controllers/api/saveLoadout.ts +++ b/src/controllers/api/saveLoadout.ts @@ -1,13 +1,13 @@ import { RequestHandler } from "express"; import { ISaveLoadoutRequest } from "@/src/types/saveLoadoutTypes"; import { handleInventoryItemConfigChange } from "@/src/services/saveLoadoutService"; -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { logger } from "@/src/utils/logger"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const saveLoadoutController: RequestHandler = async (req, res) => { //validate here - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); try { const body: ISaveLoadoutRequest = JSON.parse(req.body as string) as ISaveLoadoutRequest; diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts index c80dfb7a..0eb9fc46 100644 --- a/src/controllers/api/sellController.ts +++ b/src/controllers/api/sellController.ts @@ -1,10 +1,12 @@ import { RequestHandler } from "express"; import { ISellRequest } from "@/src/types/sellTypes"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; export const sellController: RequestHandler = async (req, res) => { const payload: ISellRequest = JSON.parse(req.body.toString()); - const inventory = await getInventory(req.query.accountId as string); + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); // Give currency if (payload.SellCurrency == "SC_RegularCredits") { diff --git a/src/controllers/api/setActiveShipController.ts b/src/controllers/api/setActiveShipController.ts index 2b7f7868..eec3e8f4 100644 --- a/src/controllers/api/setActiveShipController.ts +++ b/src/controllers/api/setActiveShipController.ts @@ -1,11 +1,12 @@ import { getPersonalRooms } from "@/src/services/personalRoomsService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { parseString } from "@/src/helpers/general"; import { RequestHandler } from "express"; import { Types } from "mongoose"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const setActiveShipController: RequestHandler = async (req, res) => { - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); const shipId = parseString(req.query.shipId); const personalRooms = await getPersonalRooms(accountId); diff --git a/src/controllers/api/setBootLocationController.ts b/src/controllers/api/setBootLocationController.ts index 62fcd680..599044a0 100644 --- a/src/controllers/api/setBootLocationController.ts +++ b/src/controllers/api/setBootLocationController.ts @@ -1,9 +1,11 @@ import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { TBootLocation } from "@/src/types/shipTypes"; export const setBootLocationController: RequestHandler = async (req, res) => { - const personalRooms = await getPersonalRooms(req.query.accountId as string); + const accountId = await getAccountIdForRequest(req); + const personalRooms = await getPersonalRooms(accountId); personalRooms.Ship.BootLocation = req.query.bootLocation as string as TBootLocation; await personalRooms.save(); res.end(); diff --git a/src/controllers/api/setSupportedSyndicateController.ts b/src/controllers/api/setSupportedSyndicateController.ts index 78ef26f3..e22b659f 100644 --- a/src/controllers/api/setSupportedSyndicateController.ts +++ b/src/controllers/api/setSupportedSyndicateController.ts @@ -1,8 +1,10 @@ import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; export const setSupportedSyndicateController: RequestHandler = async (req, res) => { - const inventory = await getInventory(req.query.accountId as string); + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); inventory.SupportedSyndicate = req.query.syndicate as string; await inventory.save(); res.end(); diff --git a/src/controllers/api/shipDecorationsController.ts b/src/controllers/api/shipDecorationsController.ts index 97230d5e..414bd5a2 100644 --- a/src/controllers/api/shipDecorationsController.ts +++ b/src/controllers/api/shipDecorationsController.ts @@ -1,4 +1,4 @@ -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { IShipDecorationsRequest } from "@/src/types/shipTypes"; import { logger } from "@/src/utils/logger"; import { RequestHandler } from "express"; @@ -6,7 +6,7 @@ import { handleSetShipDecorations } from "@/src/services/shipCustomizationsServi // eslint-disable-next-line @typescript-eslint/no-misused-promises export const shipDecorationsController: RequestHandler = async (req, res) => { - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); const shipDecorationsRequest = JSON.parse(req.body as string) as IShipDecorationsRequest; try { diff --git a/src/controllers/api/startRecipeController.ts b/src/controllers/api/startRecipeController.ts index 1ce3da22..5f770476 100644 --- a/src/controllers/api/startRecipeController.ts +++ b/src/controllers/api/startRecipeController.ts @@ -1,4 +1,4 @@ -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { startRecipe } from "@/src/services/recipeService"; import { logger } from "@/src/utils/logger"; @@ -14,7 +14,7 @@ export const startRecipeController: RequestHandler = async (req, res) => { const startRecipeRequest = getJSONfromString(req.body.toString()) as IStartRecipeRequest; logger.debug("StartRecipe Request", { startRecipeRequest }); - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); const newRecipeId = await startRecipe(startRecipeRequest.RecipeName, accountId); res.json(newRecipeId); diff --git a/src/controllers/api/trainingResultController.ts b/src/controllers/api/trainingResultController.ts index 09aa0fc6..fcfe6734 100644 --- a/src/controllers/api/trainingResultController.ts +++ b/src/controllers/api/trainingResultController.ts @@ -1,4 +1,4 @@ -import { parseString } from "@/src/helpers/general"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getInventory } from "@/src/services/inventoryService"; import { IMongoDate } from "@/src/types/commonTypes"; @@ -17,7 +17,7 @@ interface ITrainingResultsResponse { // eslint-disable-next-line @typescript-eslint/no-misused-promises const trainingResultController: RequestHandler = async (req, res): Promise => { - const accountId = parseString(req.query.accountId); + const accountId = await getAccountIdForRequest(req); const trainingResults = getJSONfromString(req.body.toString()) as ITrainingResultsRequest; diff --git a/src/controllers/api/updateThemeController.ts b/src/controllers/api/updateThemeController.ts index 5da05cb3..3736aa60 100644 --- a/src/controllers/api/updateThemeController.ts +++ b/src/controllers/api/updateThemeController.ts @@ -1,3 +1,4 @@ +import { getAccountIdForRequest } from "@/src/services/loginService"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { updateTheme } from "@/src/services/inventoryService"; import { IThemeUpdateRequest } from "@/src/types/requestTypes"; @@ -5,7 +6,7 @@ import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const updateThemeController: RequestHandler = async (request, response) => { - const accountId = request.query.accountId as string; + const accountId = await getAccountIdForRequest(request); const body = String(request.body); try { diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 1b18511f..f617b70a 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -2,10 +2,11 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IGenericItemDatabase, IMiscItem, TGenericItemKey } from "@/src/types/inventoryTypes/inventoryTypes"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; export const upgradesController: RequestHandler = async (req, res) => { - const accountId = req.query.accountId as string; + const accountId = await getAccountIdForRequest(req); const payload = JSON.parse(req.body.toString()) as IUpgradesRequest; const inventory = await getInventory(accountId); const InventoryChanges: any = {}; diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index 374c0d8e..2e014507 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -1,4 +1,5 @@ import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { IStatsView } from "@/src/types/statTypes"; import { config } from "@/src/services/configService"; @@ -6,10 +7,7 @@ import view from "@/static/fixed_responses/view.json"; import allScans from "@/static/fixed_responses/allScans.json"; const viewController: RequestHandler = async (req, res) => { - if (!req.query.accountId) { - res.status(400).json({ error: "accountId was not provided" }); - return; - } + const accountId = await getAccountIdForRequest(req); const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); if (!inventory) { res.status(400).json({ error: "inventory was undefined" }); diff --git a/src/helpers/customHelpers/customHelpers.ts b/src/helpers/customHelpers/customHelpers.ts index d96c7680..cb4d154a 100644 --- a/src/helpers/customHelpers/customHelpers.ts +++ b/src/helpers/customHelpers/customHelpers.ts @@ -47,7 +47,8 @@ const toDatabaseAccount = (createAccount: IAccountCreation): IDatabaseAccount => ConsentNeeded: false, CrossPlatformAllowed: true, ForceLogoutVersion: 0, - TrackedSettings: [] + TrackedSettings: [], + Nonce: 0 } satisfies IDatabaseAccount; }; diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index b21c5906..d100e4c2 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -32,7 +32,8 @@ const databaseAccountSchema = new Schema( AmazonAuthToken: { type: String }, AmazonRefreshToken: { type: String }, ConsentNeeded: { type: Boolean, required: true }, - TrackedSettings: { type: [String], default: [] } + TrackedSettings: { type: [String], default: [] }, + Nonce: { type: Number, required: true } }, opts ); diff --git a/src/services/loginService.ts b/src/services/loginService.ts index aa74732c..3ddb7982 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -6,12 +6,13 @@ import { Types } from "mongoose"; import { Loadout } from "@/src/models/inventoryModels/loadoutModel"; import { PersonalRooms } from "@/src/models/personalRoomsModel"; import new_personal_rooms from "@/static/fixed_responses/personalRooms.json"; +import { Request } from "express"; -const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => { +export const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => { return requestPassword === databasePassword; }; -const createAccount = async (accountData: IDatabaseAccount) => { +export const createAccount = async (accountData: IDatabaseAccount) => { const account = new Account(accountData); try { await account.save(); @@ -28,8 +29,6 @@ const createAccount = async (accountData: IDatabaseAccount) => { } }; -export { isCorrectPassword, createAccount }; - export const createLoadout = async (accountId: Types.ObjectId) => { const loadout = new Loadout({ loadoutOwnerId: accountId }); const savedLoadout = await loadout.save(); @@ -44,3 +43,23 @@ export const createPersonalRooms = async (accountId: Types.ObjectId, shipId: Typ }); await personalRooms.save(); }; + +export const getAccountIdForRequest = async (req: Request): Promise => { + if (!req.query.accountId) { + throw new Error("Request is missing accountId parameter"); + } + if (!req.query.nonce || parseInt(req.query.nonce as string) === 0) { + throw new Error("Request is missing nonce parameter"); + } + const account = await Account.findOne( + { + _id: req.query.accountId, + Nonce: req.query.nonce + }, + "_id" + ); + if (!account) { + throw new Error("Invalid accountId-nonce pair"); + } + return account._id.toString(); +}; diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index 472a5d5f..f5dcfaf6 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -1,6 +1,5 @@ export interface ILoginResponse extends Omit { Groups: IGroup[]; - Nonce: number; BuildLabel: string; MatchmakingBuildId: string; platformCDNs: string[]; @@ -32,6 +31,7 @@ export interface IDatabaseAccount { AmazonRefreshToken?: string; ConsentNeeded: boolean; TrackedSettings: string[]; + Nonce: number; } export interface ILoginRequest { diff --git a/static/fixed_responses/login_static.ts b/static/fixed_responses/login_static.ts index ef6213a9..d5e5ea1a 100644 --- a/static/fixed_responses/login_static.ts +++ b/static/fixed_responses/login_static.ts @@ -22,8 +22,6 @@ export const platformCDNs = [ "https://content-mob.warframe.com/" ]; -export const Nonce = 1231231233; - export const DTLS = 99; export const HUB = "https://arbiter.warframe.com/api/"; -- 2.47.2 From 03704d0f963cfa74cdc4dc8468fbffcdf41bf139 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 28 May 2024 13:52:27 +0200 Subject: [PATCH 124/522] feat: handle updateChallengeProgress (#235) --- .../api/updateChallengeProgressController.ts | 17 +++++++++++++++-- src/services/inventoryService.ts | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/updateChallengeProgressController.ts b/src/controllers/api/updateChallengeProgressController.ts index b822d818..887224e3 100644 --- a/src/controllers/api/updateChallengeProgressController.ts +++ b/src/controllers/api/updateChallengeProgressController.ts @@ -1,7 +1,20 @@ import { RequestHandler } from "express"; +import { IChallengeProgress } from "@/src/types/inventoryTypes/inventoryTypes"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory, addChallenges } from "@/src/services/inventoryService"; -const updateChallengeProgressController: RequestHandler = (_request, response) => { - response.sendStatus(200); +interface IUpdateChallengeProgessRequest { + ChallengeProgress: IChallengeProgress[]; +} + +const updateChallengeProgressController: RequestHandler = async (req, res) => { + const payload: IUpdateChallengeProgessRequest = getJSONfromString(req.body.toString()); + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + addChallenges(inventory, payload.ChallengeProgress); + inventory.save(); + res.status(200).end(); }; export { updateChallengeProgressController }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 0d685258..550cbc62 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -290,7 +290,7 @@ const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[ }); }; -const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { +export const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { const category = inventory.ChallengeProgress; itemsArray?.forEach(({ Name, Progress }) => { -- 2.47.2 From 32362633996c8be3e959903864267955e5c5e9b3 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 28 May 2024 13:55:29 +0200 Subject: [PATCH 125/522] improve: remove buildConfig.json from git (#227) --- .github/workflows/build.yml | 1 + .gitignore | 3 ++- static/data/.gitkeep | 0 static/data/buildConfig.json | 5 ----- 4 files changed, 3 insertions(+), 6 deletions(-) create mode 100644 static/data/.gitkeep delete mode 100644 static/data/buildConfig.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 795b187a..a5bff297 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,4 +16,5 @@ jobs: node-version: "20.x" - run: npm ci - run: cp config.json.example config.json + - run: echo '{"version":"","buildLabel":"","matchmakingBuildId":""}' > static/data/buildConfig.json - run: npm run build diff --git a/.gitignore b/.gitignore index 0b1cf50b..d1ec7373 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ /.env /config.json -/static/data/*.bin +/static/data/** +!/static/data/.gitkeep yarn.lock /tmp diff --git a/static/data/.gitkeep b/static/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/static/data/buildConfig.json b/static/data/buildConfig.json deleted file mode 100644 index 405d395a..00000000 --- a/static/data/buildConfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "35.6.0", - "buildLabel": "2024.05.15.11.07/4mPWinb13ZgMDySNQo3VeA", - "matchmakingBuildId": "6945333874579955227" -} -- 2.47.2 From a0b293685dcc6b21f5498eb238a79d36e4a03c8b Mon Sep 17 00:00:00 2001 From: WhoTao <36767025+0kolya0@users.noreply.github.com> Date: Tue, 28 May 2024 14:59:20 +0300 Subject: [PATCH 126/522] temp fix: Add XP for SpaceSuits (#233) --- src/models/inventoryModels/inventoryModel.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index fdb3a636..14a13bdf 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -321,7 +321,13 @@ const GenericItemSchema = new Schema( { ItemType: String, Configs: [ItemConfigSchema], - UpgradeVer: Number //this is probably just __v + UpgradeVer: Number, + XP: Number, + Features: Number, + Polarity: [polaritySchema], + Polarized: Number, + ModSlotPurchases: Number, + CustomizationSlotPurchases: Number }, { id: false } ); -- 2.47.2 From b1e0de862f8a9042131c89c22c1433ea5a6ff1ee Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 29 May 2024 16:18:41 +0200 Subject: [PATCH 127/522] feat: implement selling/dissolving of mods (#240) --- src/controllers/api/sellController.ts | 15 +++++++++++++-- src/models/inventoryModels/inventoryModel.ts | 2 ++ src/services/inventoryService.ts | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts index 0eb9fc46..b240475b 100644 --- a/src/controllers/api/sellController.ts +++ b/src/controllers/api/sellController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { ISellRequest } from "@/src/types/sellTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getInventory } from "@/src/services/inventoryService"; +import { getInventory, addMods } from "@/src/services/inventoryService"; export const sellController: RequestHandler = async (req, res) => { const payload: ISellRequest = JSON.parse(req.body.toString()); @@ -43,7 +43,18 @@ export const sellController: RequestHandler = async (req, res) => { // Note: sellItem.String is a uniqueName in this case } if (payload.Items.Upgrades) { - // TODO + payload.Items.Upgrades.forEach(sellItem => { + if (sellItem.Count == 0) { + inventory.Upgrades.pull({ _id: sellItem.String }); + } else { + addMods(inventory, [ + { + ItemType: sellItem.String, + ItemCount: sellItem.Count * -1 + } + ]); + } + }); } await inventory.save(); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 14a13bdf..7efd2ee2 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -2,6 +2,7 @@ import { Model, Schema, Types, model } from "mongoose"; import { IFlavourItem, IRawUpgrade, + ICrewShipSalvagedWeaponSkin, IMiscItem, IInventoryDatabase, IBooster, @@ -1001,6 +1002,7 @@ type InventoryDocumentProps = { Melee: Types.DocumentArray; FlavourItems: Types.DocumentArray; RawUpgrades: Types.DocumentArray; + Upgrades: Types.DocumentArray; MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; OperatorLoadOuts: Types.DocumentArray; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 550cbc62..bc10e555 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -276,7 +276,7 @@ export const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IT }); }; -const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => { +export const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => { const { RawUpgrades } = inventory; itemsArray?.forEach(({ ItemType, ItemCount }) => { const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType); -- 2.47.2 From 5f2adb7b47c2247291988ff55e5e920ac7a43633 Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 29 May 2024 16:19:41 +0200 Subject: [PATCH 128/522] improve(webui): Handle nonce being invalidated by client logging in (#239) --- static/webui/script.js | 227 +++++++++++++++++++++++------------------ 1 file changed, 130 insertions(+), 97 deletions(-) diff --git a/static/webui/script.js b/static/webui/script.js index cf9d05fb..73fbb5cd 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -6,6 +6,24 @@ function doLogin() { } function loginFromLocalStorage() { + doLoginRequest( + data => { + if (single.getCurrentPath() == "/webui/") { + single.loadRoute("/webui/inventory"); + } + $(".displayname").text(data.DisplayName); + window.accountId = data.id; + window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce; + updateInventory(); + }, + () => { + logout(); + alert("Login failed"); + } + ); +} + +function doLoginRequest(succ_cb, fail_cb) { const req = $.post({ url: "/api/login.php", contentType: "text/plain", @@ -20,19 +38,22 @@ function loginFromLocalStorage() { PS: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==" // anti-cheat data }) }); - req.done(data => { - if (single.getCurrentPath() == "/webui/") { - single.loadRoute("/webui/inventory"); + req.done(succ_cb); + req.fail(fail_cb); +} + +function revalidateAuthz(succ_cb) { + return doLoginRequest( + data => { + window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce; + succ_cb(); + }, + () => { + logout(); + alert("Your credentials are no longer valid."); + single.loadRoute("/webui/"); // Show login screen } - $(".displayname").text(data.DisplayName); - window.accountId = data.id; - window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce; - updateInventory(); - }); - req.fail(() => { - logout(); - alert("Login failed"); - }); + ); } function logout() { @@ -176,18 +197,20 @@ function doAcquireWarframe() { $("#warframe-to-acquire").addClass("is-invalid").focus(); return; } - const req = $.post({ - url: "/custom/addItem", - contentType: "application/json", - data: JSON.stringify({ - type: "Powersuit", - internalName: uniqueName, - accountId: window.accountId - }) - }); - req.done(() => { - document.getElementById("warframe-to-acquire").value = ""; - updateInventory(); + revalidateAuthz(() => { + const req = $.post({ + url: "/custom/addItem", + contentType: "application/json", + data: JSON.stringify({ + type: "Powersuit", + internalName: uniqueName, + accountId: window.accountId + }) + }); + req.done(() => { + document.getElementById("warframe-to-acquire").value = ""; + updateInventory(); + }); }); } @@ -201,18 +224,20 @@ function doAcquireWeapon() { $("#weapon-to-acquire").addClass("is-invalid").focus(); return; } - const req = $.post({ - url: "/custom/addItem", - contentType: "application/json", - data: JSON.stringify({ - type: "Weapon", - internalName: uniqueName, - accountId: window.accountId - }) - }); - req.done(() => { - document.getElementById("weapon-to-acquire").value = ""; - updateInventory(); + revalidateAuthz(() => { + const req = $.post({ + url: "/custom/addItem", + contentType: "application/json", + data: JSON.stringify({ + type: "Weapon", + internalName: uniqueName, + accountId: window.accountId + }) + }); + req.done(() => { + document.getElementById("weapon-to-acquire").value = ""; + updateInventory(); + }); }); } @@ -228,12 +253,14 @@ function addGearExp(category, oid, xp) { XP: xp } ]; - $.post({ - url: "/api/missionInventoryUpdate.php?" + window.authz, - contentType: "text/plain", - data: JSON.stringify(data) - }).done(function () { - updateInventory(); + revalidateAuthz(() => { + $.post({ + url: "/api/missionInventoryUpdate.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify(data) + }).done(function () { + updateInventory(); + }); }); } @@ -248,12 +275,14 @@ function disposeOfGear(category, oid) { String: oid } ]; - $.post({ - url: "/api/sell.php?" + window.authz, - contentType: "text/plain", - data: JSON.stringify(data) - }).done(function () { - updateInventory(); + revalidateAuthz(() => { + $.post({ + url: "/api/sell.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify(data) + }).done(function () { + updateInventory(); + }); }); } @@ -263,19 +292,21 @@ function doAcquireMiscItems() { $("#miscitem-type").addClass("is-invalid").focus(); return; } - $.post({ - url: "/api/missionInventoryUpdate.php?" + window.authz, - contentType: "text/plain", - data: JSON.stringify({ - MiscItems: [ - { - ItemType: uniqueName, - ItemCount: $("#miscitem-count").val() - } - ] - }) - }).done(function () { - alert("Successfully added."); + revalidateAuthz(() => { + $.post({ + url: "/api/missionInventoryUpdate.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + MiscItems: [ + { + ItemType: uniqueName, + ItemCount: $("#miscitem-count").val() + } + ] + }) + }).done(function () { + alert("Successfully added."); + }); }); } @@ -301,43 +332,45 @@ function doAcquireRiven() { return; } const uniqueName = "/Lotus/Upgrades/Mods/Randomized/" + $("#addriven-type").val(); - // Add riven type to inventory - $.post({ - url: "/api/missionInventoryUpdate.php?" + window.authz, - contentType: "text/plain", - data: JSON.stringify({ - RawUpgrades: [ - { - ItemType: uniqueName, - ItemCount: 1 + revalidateAuthz(() => { + // Add riven type to inventory + $.post({ + url: "/api/missionInventoryUpdate.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + RawUpgrades: [ + { + ItemType: uniqueName, + ItemCount: 1 + } + ] + }) + }).done(function () { + // Get riven's assigned id + $.get("/api/inventory.php?" + window.authz).done(data => { + for (const rawUpgrade of data.RawUpgrades) { + if (rawUpgrade.ItemType === uniqueName) { + // Add fingerprint to riven + $.post({ + url: "/api/artifacts.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + Upgrade: { + ItemType: uniqueName, + UpgradeFingerprint: JSON.stringify(fingerprint), + ItemId: rawUpgrade.LastAdded + }, + LevelDiff: 0, + Cost: 0, + FusionPointCost: 0 + }) + }).done(function () { + alert("Successfully added."); + }); + break; + } } - ] - }) - }).done(function () { - // Get riven's assigned id - $.get("/api/inventory.php?" + window.authz).done(data => { - for (const rawUpgrade of data.RawUpgrades) { - if (rawUpgrade.ItemType === uniqueName) { - // Add fingerprint to riven - $.post({ - url: "/api/artifacts.php?" + window.authz, - contentType: "text/plain", - data: JSON.stringify({ - Upgrade: { - ItemType: uniqueName, - UpgradeFingerprint: JSON.stringify(fingerprint), - ItemId: rawUpgrade.LastAdded - }, - LevelDiff: 0, - Cost: 0, - FusionPointCost: 0 - }) - }).done(function () { - alert("Successfully added."); - }); - break; - } - } + }); }); }); } -- 2.47.2 From 5975aa711e7911270f1f213b929f39526f3141f4 Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 29 May 2024 22:08:41 +0200 Subject: [PATCH 129/522] feat: add unlockAllSkins option (#232) --- config.json.example | 1 + src/controllers/api/inventoryController.ts | 13 + src/services/configService.ts | 1 + static/fixed_responses/allSkins.json | 4031 ++++++++++++++++++++ 4 files changed, 4046 insertions(+) create mode 100644 static/fixed_responses/allSkins.json diff --git a/config.json.example b/config.json.example index 651d971b..8d634d8f 100644 --- a/config.json.example +++ b/config.json.example @@ -18,5 +18,6 @@ "unlockallShipFeatures": true, "unlockAllShipDecorations": true, "unlockAllFlavourItems": true, + "unlockAllSkins": true, "spoofMasteryRank": -1 } diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 22a0e3d3..7712fafb 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -8,6 +8,7 @@ import allMissions from "@/static/fixed_responses/allMissions.json"; import allQuestKeys from "@/static/fixed_responses/allQuestKeys.json"; import allShipDecorations from "@/static/fixed_responses/allShipDecorations.json"; import allFlavourItems from "@/static/fixed_responses/allFlavourItems.json"; +import allSkins from "@/static/fixed_responses/allSkins.json"; import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; import { IShipInventory, IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; @@ -59,6 +60,18 @@ const inventoryController: RequestHandler = async (request: Request, response: R if (config.unlockAllShipDecorations) inventoryResponse.ShipDecorations = allShipDecorations; if (config.unlockAllFlavourItems) inventoryResponse.FlavourItems = allFlavourItems satisfies IFlavourItem[]; + if (config.unlockAllSkins) { + inventoryResponse.WeaponSkins = []; + for (let skin of allSkins) { + inventoryResponse.WeaponSkins.push({ + ItemId: { + $oid: "000000000000000000000000" + }, + ItemType: skin + }); + } + } + if ( typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0 && diff --git a/src/services/configService.ts b/src/services/configService.ts index f6f7509a..b7922349 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -16,6 +16,7 @@ interface IConfig { unlockallShipFeatures?: boolean; unlockAllShipDecorations?: boolean; unlockAllFlavourItems?: boolean; + unlockAllSkins?: boolean; spoofMasteryRank?: number; } diff --git a/static/fixed_responses/allSkins.json b/static/fixed_responses/allSkins.json new file mode 100644 index 00000000..28c4a9c8 --- /dev/null +++ b/static/fixed_responses/allSkins.json @@ -0,0 +1,4031 @@ +[ + "/Lotus/Upgrades/Skins/Alchemist/AlchemistAgileAnims", + "/Lotus/Upgrades/Skins/Alchemist/AlchemistAltHelmet", + "/Lotus/Upgrades/Skins/Alchemist/AlchemistHelmet", + "/Lotus/Upgrades/Skins/Alchemist/AlchemistNobleAnims", + "/Lotus/Upgrades/Skins/Alchemist/AlchemistSkin", + "/Lotus/Upgrades/Skins/Alchemist/SWLavosKuvaelHelmet", + "/Lotus/Upgrades/Skins/Alchemist/SWLavosKuvaelSkin", + "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistAgile", + "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistNoble", + "/Lotus/Upgrades/Skins/Anima/AnimaAgileAnims", + "/Lotus/Upgrades/Skins/Anima/AnimaAltHelmet", + "/Lotus/Upgrades/Skins/Anima/AnimaAltHelmetTwo", + "/Lotus/Upgrades/Skins/Anima/AnimaDayAgileAnims", + "/Lotus/Upgrades/Skins/Anima/AnimaDayNobleAnims", + "/Lotus/Upgrades/Skins/Anima/AnimaHelmet", + "/Lotus/Upgrades/Skins/Anima/AnimaNightAgileAnims", + "/Lotus/Upgrades/Skins/Anima/AnimaNightNobleAnims", + "/Lotus/Upgrades/Skins/Anima/AnimaNobleAnims", + "/Lotus/Upgrades/Skins/Anima/SWDivisaHelmet", + "/Lotus/Upgrades/Skins/Anima/SWDivisaSkin", + "/Lotus/Upgrades/Skins/Anima/SWInsomniaHelmet", + "/Lotus/Upgrades/Skins/Anima/SWInsomniaSkin", + "/Lotus/Upgrades/Skins/Anima/SWMegaeraHelmet", + "/Lotus/Upgrades/Skins/Anima/SWMegaeraSkin", + "/Lotus/Upgrades/Skins/Anima/UnlockAnimaAgile", + "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayAgile", + "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayNoble", + "/Lotus/Upgrades/Skins/Anima/UnlockAnimaNoble", + "/Lotus/Upgrades/Skins/AntiMatter/AntiAltHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/AntiAltHelmetStatless", + "/Lotus/Upgrades/Skins/AntiMatter/AntiHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/AntiMatterAgileAnims", + "/Lotus/Upgrades/Skins/AntiMatter/AntiMatterNobleAnims", + "/Lotus/Upgrades/Skins/AntiMatter/NovaAlternateSkin", + "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeIIHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeIISuit", + "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeSuit", + "/Lotus/Upgrades/Skins/AntiMatter/NovaPrimeHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/NovaPrimeSkin", + "/Lotus/Upgrades/Skins/AntiMatter/NovaQuantumHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/NovaSkin", + "/Lotus/Upgrades/Skins/AntiMatter/NovaSlipstreamHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/NovaVoidShellHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/NovaVoidShellSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWCorpraHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWCorpraSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWGraxxNovaHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWGraxxNovaSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWNovaMithraHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWNovaMithraSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWRFourNovaFusionHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeCygniHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeCygniSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeDeviceHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeDeviceSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeGnovaHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeGnovaSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeLamiaHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeLamiaSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeStingerHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeStingerSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeVisageHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeVisageSkin", + "/Lotus/Upgrades/Skins/AntiMatter/SWTachyonHelmet", + "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterAgile", + "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterNoble", + "/Lotus/Upgrades/Skins/Archer/ArcherCape", + "/Lotus/Upgrades/Skins/Archer/IvaraDeluxeBallisticaSkin", + "/Lotus/Upgrades/Skins/Archer/IvaraDeluxeHelmet", + "/Lotus/Upgrades/Skins/Archer/IvaraDeluxeSuit", + "/Lotus/Upgrades/Skins/Archer/IvaraPrimeHelmet", + "/Lotus/Upgrades/Skins/Archer/IvaraPrimeSkin", + "/Lotus/Upgrades/Skins/Archer/ObsidianIvaraExaltedBowSkin", + "/Lotus/Upgrades/Skins/Archer/ObsidianIvaraHelmet", + "/Lotus/Upgrades/Skins/Archer/ObsidianIvaraSkin", + "/Lotus/Upgrades/Skins/Archer/SWArcuataHelmet", + "/Lotus/Upgrades/Skins/Archer/SWArcuataSkin", + "/Lotus/Upgrades/Skins/Archer/SWAstreaHelmet", + "/Lotus/Upgrades/Skins/Archer/SWAstreaSkin", + "/Lotus/Upgrades/Skins/Archer/SWIvaraGraxxHelmet", + "/Lotus/Upgrades/Skins/Archer/SWIvaraGraxxSkin", + "/Lotus/Upgrades/Skins/Archer/SWIvaraZamariuHelmet", + "/Lotus/Upgrades/Skins/Archer/SWIvaraZamariuSkin", + "/Lotus/Upgrades/Skins/Archer/SWKuvaelHelmet", + "/Lotus/Upgrades/Skins/Archer/SWKuvaelSkin", + "/Lotus/Upgrades/Skins/Archer/SWYoukaiHelmet", + "/Lotus/Upgrades/Skins/Archer/SWYoukaiSkin", + "/Lotus/Upgrades/Skins/Archer/WinterSolsticeSalix", + "/Lotus/Upgrades/Skins/Archwing/DemolitionDefaultArchwingSkin", + "/Lotus/Upgrades/Skins/Archwing/GrendelArchwingSkin", + "/Lotus/Upgrades/Skins/Archwing/PrimeDefaultArchwingSkin", + "/Lotus/Upgrades/Skins/Archwing/StandardDefaultArchwingSkin", + "/Lotus/Upgrades/Skins/Archwing/StealthDefaultArchwingSkin", + "/Lotus/Upgrades/Skins/Archwing/SupportDefaultArchwingSkin", + "/Lotus/Upgrades/Skins/Archwing/TitaniaPrimeArchwingSkin", + "/Lotus/Upgrades/Skins/Armor/ArbiterOfHexisArmor/ArbiterOfHexisArmorA", + "/Lotus/Upgrades/Skins/Armor/ArbiterOfHexisArmor/ArbiterOfHexisArmorC", + "/Lotus/Upgrades/Skins/Armor/ArbiterOfHexisArmor/ArbiterOfHexisArmorL", + "/Lotus/Upgrades/Skins/Armor/BaroArmour/BaroArmourA", + "/Lotus/Upgrades/Skins/Armor/BaroArmour/BaroArmourC", + "/Lotus/Upgrades/Skins/Armor/BaroArmour/BaroArmourL", + "/Lotus/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", + "/Lotus/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", + "/Lotus/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", + "/Lotus/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoA", + "/Lotus/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoC", + "/Lotus/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoL", + "/Lotus/Upgrades/Skins/Armor/BillowingArmor/BillowingArmorA", + "/Lotus/Upgrades/Skins/Armor/BillowingArmor/BillowingArmorC", + "/Lotus/Upgrades/Skins/Armor/BillowingArmor/BillowingArmorL", + "/Lotus/Upgrades/Skins/Armor/CephArmor/CephArmorA", + "/Lotus/Upgrades/Skins/Armor/CephArmor/CephArmorC", + "/Lotus/Upgrades/Skins/Armor/CephArmor/CephArmorL", + "/Lotus/Upgrades/Skins/Armor/ChromaPrimeArmor/ChromaPrimeArmorA", + "/Lotus/Upgrades/Skins/Armor/ChromaPrimeArmor/ChromaPrimeArmorC", + "/Lotus/Upgrades/Skins/Armor/ChromaPrimeArmor/ChromaPrimeArmorL", + "/Lotus/Upgrades/Skins/Armor/CorpusFencer/CrpFncAArmor", + "/Lotus/Upgrades/Skins/Armor/CorpusFencer/CrpFncLArmor", + "/Lotus/Upgrades/Skins/Armor/CorpusFencer/PS4CrpFncAArmor", + "/Lotus/Upgrades/Skins/Armor/CorpusFencer/PS4CrpFncLArmor", + "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/CrpCircA", + "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/CrpCircC", + "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/CrpCircL", + "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircA", + "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircC", + "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircL", + "/Lotus/Upgrades/Skins/Armor/CrpCubinatorArmor/CrpCubinatorArmorA", + "/Lotus/Upgrades/Skins/Armor/CrpCubinatorArmor/CrpCubinatorArmorC", + "/Lotus/Upgrades/Skins/Armor/CrpCubinatorArmor/CrpCubinatorArmorL", + "/Lotus/Upgrades/Skins/Armor/CrpHighArmor/CrpHighArmorA", + "/Lotus/Upgrades/Skins/Armor/CrpHighArmor/CrpHighArmorC", + "/Lotus/Upgrades/Skins/Armor/CrpHighArmor/CrpHighArmorL", + "/Lotus/Upgrades/Skins/Armor/CrpIndexTwo/CrpIndexTwoAArmor", + "/Lotus/Upgrades/Skins/Armor/CrpIndexTwo/CrpIndexTwoCArmor", + "/Lotus/Upgrades/Skins/Armor/CrpIndexTwo/CrpIndexTwoLArmor", + "/Lotus/Upgrades/Skins/Armor/CrpModular/CrpModularAArmorTwitch", + "/Lotus/Upgrades/Skins/Armor/CrpModular/CrpModularCArmorTwitch", + "/Lotus/Upgrades/Skins/Armor/CrpModular/CrpModularLArmorTwitch", + "/Lotus/Upgrades/Skins/Armor/CrpShoulderArmor/CrpShoulderArmorL", + "/Lotus/Upgrades/Skins/Armor/CrpSisters/CrpSistersA", + "/Lotus/Upgrades/Skins/Armor/CrpSisters/CrpSistersC", + "/Lotus/Upgrades/Skins/Armor/CrpSisters/CrpSistersL", + "/Lotus/Upgrades/Skins/Armor/Daybreak/DaybreakArmourA", + "/Lotus/Upgrades/Skins/Armor/Daybreak/DaybreakArmourC", + "/Lotus/Upgrades/Skins/Armor/Daybreak/DaybreakArmourL", + "/Lotus/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorAArmor", + "/Lotus/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorCArmor", + "/Lotus/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorLArmor", + "/Lotus/Upgrades/Skins/Armor/DuvArmor/DuvArmorA", + "/Lotus/Upgrades/Skins/Armor/DuvArmor/DuvArmorC", + "/Lotus/Upgrades/Skins/Armor/DuvArmor/DuvArmorL", + "/Lotus/Upgrades/Skins/Armor/FocusSchool/MaduraiCArmor", + "/Lotus/Upgrades/Skins/Armor/FocusSchool/NaramonCArmor", + "/Lotus/Upgrades/Skins/Armor/FocusSchool/UnairuCArmor", + "/Lotus/Upgrades/Skins/Armor/FocusSchool/VazarinCArmor", + "/Lotus/Upgrades/Skins/Armor/FocusSchool/ZenurikCArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/FurisAArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/FurisCArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/FurisLArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/PrismaFurisAArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/PrismaFurisCArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/PrismaFurisLArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/SolsticeFurisAArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/SolsticeFurisCArmor", + "/Lotus/Upgrades/Skins/Armor/FurisArmor/SolsticeFurisLArmor", + "/Lotus/Upgrades/Skins/Armor/GrineerQueenArmour/GrineerQueenArmourA", + "/Lotus/Upgrades/Skins/Armor/GrineerQueenArmour/GrineerQueenArmourC", + "/Lotus/Upgrades/Skins/Armor/GrineerQueenArmour/GrineerQueenArmourL", + "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/GrineerTurbinesArmArmor", + "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/GrineerTurbinesChestArmor", + "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/GrineerTurbinesLegArmor", + "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesArmArmor", + "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesChestArmor", + "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesLegArmor", + "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/GrineerVHA", + "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/GrineerVHC", + "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/GrineerVHL", + "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/SummerSolsticeMaggorA", + "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/SummerSolsticeMaggorC", + "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/SummerSolsticeMaggorL", + "/Lotus/Upgrades/Skins/Armor/GrnAmphisArmor/GrnAmphisAArmor", + "/Lotus/Upgrades/Skins/Armor/GrnAmphisArmor/GrnAmphisCArmor", + "/Lotus/Upgrades/Skins/Armor/GrnAmphisArmor/GrnAmphisLArmor", + "/Lotus/Upgrades/Skins/Armor/GrnFaceMaskArmour/GrnFaceMaskArmour", + "/Lotus/Upgrades/Skins/Armor/GrnFaceMaskArmour/ObsidianFaceMaskArmour", + "/Lotus/Upgrades/Skins/Armor/GrnSteelMeridianArmor/GrnSteelMeridianAArmor", + "/Lotus/Upgrades/Skins/Armor/GrnSteelMeridianArmor/GrnSteelMeridianCArmor", + "/Lotus/Upgrades/Skins/Armor/GrnSteelMeridianArmor/GrnSteelMeridianLArmor", + "/Lotus/Upgrades/Skins/Armor/GuideOfTheLotus/GuideOfTheLotusArmArmor", + "/Lotus/Upgrades/Skins/Armor/Halloween2014Wings/Halloween2014ArmArmor", + "/Lotus/Upgrades/Skins/Armor/Halloween2014Wings/PrismaNaberusArmArmor", + "/Lotus/Upgrades/Skins/Armor/HarrowDeluxe/HarrowDeluxeAArmor", + "/Lotus/Upgrades/Skins/Armor/HarrowDeluxe/HarrowDeluxeCArmor", + "/Lotus/Upgrades/Skins/Armor/HarrowDeluxe/HarrowDeluxeLArmor", + "/Lotus/Upgrades/Skins/Armor/InfEmbolistArmor/InfEmbolistArmorA", + "/Lotus/Upgrades/Skins/Armor/InfEmbolistArmor/InfEmbolistArmorC", + "/Lotus/Upgrades/Skins/Armor/InfEmbolistArmor/InfEmbolistArmorL", + "/Lotus/Upgrades/Skins/Armor/InfestedFins/InfestedFinsArmArmor", + "/Lotus/Upgrades/Skins/Armor/InfestedFins/InfestedFinsChestArmor", + "/Lotus/Upgrades/Skins/Armor/InfestedFins/InfestedFinsLegArmor", + "/Lotus/Upgrades/Skins/Armor/InfestedShoulderArmor/InfestedShoulderArmorA", + "/Lotus/Upgrades/Skins/Armor/IvaraPrimeArmor/IvaraPrimeAArmor", + "/Lotus/Upgrades/Skins/Armor/IvaraPrimeArmor/IvaraPrimeCArmor", + "/Lotus/Upgrades/Skins/Armor/IvaraPrimeArmor/IvaraPrimeLArmor", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetA/KuvaLichArmourAChest", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetA/KuvaLichArmourALegs", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetB/KuvaLichArmourBArms", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetB/KuvaLichArmourBChest", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetC/KuvaLichArmourCArms", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetC/KuvaLichArmourCChest", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetD/KuvaLichArmourDChest", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetE/KuvaLichArmourEChest", + "/Lotus/Upgrades/Skins/Armor/KuvaLichSetF/KuvaLichArmourFChest", + "/Lotus/Upgrades/Skins/Armor/LokiDeluxeArmour/LokiDeluxeAArmor", + "/Lotus/Upgrades/Skins/Armor/LokiDeluxeArmour/LokiDeluxeCArmor", + "/Lotus/Upgrades/Skins/Armor/LokiDeluxeArmour/LokiDeluxeLArmor", + "/Lotus/Upgrades/Skins/Armor/LunaroSetA/LunaroSetAA", + "/Lotus/Upgrades/Skins/Armor/LunaroSetA/LunaroSetAC", + "/Lotus/Upgrades/Skins/Armor/LunaroSetA/LunaroSetAL", + "/Lotus/Upgrades/Skins/Armor/LunaroSetB/LunaroSetBA", + "/Lotus/Upgrades/Skins/Armor/LunaroSetB/LunaroSetBC", + "/Lotus/Upgrades/Skins/Armor/LunaroSetB/LunaroSetBL", + "/Lotus/Upgrades/Skins/Armor/LunaroSetC/LunaroSetCA", + "/Lotus/Upgrades/Skins/Armor/LunaroSetC/LunaroSetCC", + "/Lotus/Upgrades/Skins/Armor/LunaroSetC/LunaroSetCL", + "/Lotus/Upgrades/Skins/Armor/Microsoft/JadeAxaArmourA", + "/Lotus/Upgrades/Skins/Armor/Microsoft/JadeAxaArmourC", + "/Lotus/Upgrades/Skins/Armor/Microsoft/JadeAxaArmourL", + "/Lotus/Upgrades/Skins/Armor/NLokaArmor/NLokaAArmor", + "/Lotus/Upgrades/Skins/Armor/NLokaArmor/NLokaCArmor", + "/Lotus/Upgrades/Skins/Armor/NLokaArmor/NLokaLArmor", + "/Lotus/Upgrades/Skins/Armor/NWIIIBossArmor/NWIIIBossAArmor", + "/Lotus/Upgrades/Skins/Armor/NecraArmor/NecraArmorA", + "/Lotus/Upgrades/Skins/Armor/NecraArmor/NecraArmorC", + "/Lotus/Upgrades/Skins/Armor/NecraArmor/NecraArmorL", + "/Lotus/Upgrades/Skins/Armor/OstronCrewArmor/OstronCrewArmorA", + "/Lotus/Upgrades/Skins/Armor/OstronCrewArmor/OstronCrewArmorC", + "/Lotus/Upgrades/Skins/Armor/OstronCrewArmor/OstronCrewArmorL", + "/Lotus/Upgrades/Skins/Armor/PS5Armor/PS5ArmorA", + "/Lotus/Upgrades/Skins/Armor/PS5Armor/PS5ArmorC", + "/Lotus/Upgrades/Skins/Armor/PS5Armor/PS5ArmorL", + "/Lotus/Upgrades/Skins/Armor/PerrinSequenceArmor/PerrinSequenceArmorA", + "/Lotus/Upgrades/Skins/Armor/PerrinSequenceArmor/PerrinSequenceArmorC", + "/Lotus/Upgrades/Skins/Armor/PerrinSequenceArmor/PerrinSequenceArmorL", + "/Lotus/Upgrades/Skins/Armor/PersianArmour/TnPersianAArmor", + "/Lotus/Upgrades/Skins/Armor/PersianArmour/TnPersianCArmor", + "/Lotus/Upgrades/Skins/Armor/PersianArmour/TnPersianLArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeArmorEquinox/PrimeArmorEquinoxA", + "/Lotus/Upgrades/Skins/Armor/PrimeArmorEquinox/PrimeArmorEquinoxC", + "/Lotus/Upgrades/Skins/Armor/PrimeArmorEquinox/PrimeArmorEquinoxL", + "/Lotus/Upgrades/Skins/Armor/PrimeAviaArmor/PrimeAviaAArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeAviaArmor/PrimeAviaCArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeAviaArmor/PrimeAviaLArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeGarudaArmor/PrimeGarudaAArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeGarudaArmor/PrimeGarudaCArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeGarudaArmor/PrimeGarudaLArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeGaussArmour/PrimeGaussArmourA", + "/Lotus/Upgrades/Skins/Armor/PrimeGaussArmour/PrimeGaussArmourC", + "/Lotus/Upgrades/Skins/Armor/PrimeGaussArmour/PrimeGaussArmourL", + "/Lotus/Upgrades/Skins/Armor/PrimeInarosArmor/PrimeInarosArmorA", + "/Lotus/Upgrades/Skins/Armor/PrimeInarosArmor/PrimeInarosArmorC", + "/Lotus/Upgrades/Skins/Armor/PrimeInarosArmor/PrimeInarosArmorL", + "/Lotus/Upgrades/Skins/Armor/PrimeNezhaArmor/PrimeNezhaArmorA", + "/Lotus/Upgrades/Skins/Armor/PrimeNezhaArmor/PrimeNezhaArmorC", + "/Lotus/Upgrades/Skins/Armor/PrimeNezhaArmor/PrimeNezhaArmorL", + "/Lotus/Upgrades/Skins/Armor/PrimeOctaviaArmour/PrimeOctaviaArmourA", + "/Lotus/Upgrades/Skins/Armor/PrimeOctaviaArmour/PrimeOctaviaArmourC", + "/Lotus/Upgrades/Skins/Armor/PrimeOctaviaArmour/PrimeOctaviaArmourL", + "/Lotus/Upgrades/Skins/Armor/PrimeRevenantArmour/PrimeRevenantArmourA", + "/Lotus/Upgrades/Skins/Armor/PrimeRevenantArmour/PrimeRevenantArmourC", + "/Lotus/Upgrades/Skins/Armor/PrimeRevenantArmour/PrimeRevenantArmourL", + "/Lotus/Upgrades/Skins/Armor/PrimeSetFour/PrimeSetFourA", + "/Lotus/Upgrades/Skins/Armor/PrimeSetFour/PrimeSetFourC", + "/Lotus/Upgrades/Skins/Armor/PrimeSetFour/PrimeSetFourL", + "/Lotus/Upgrades/Skins/Armor/PrimeSetMirage/PrimeSetMirageA", + "/Lotus/Upgrades/Skins/Armor/PrimeSetMirage/PrimeSetMirageC", + "/Lotus/Upgrades/Skins/Armor/PrimeSetMirage/PrimeSetMirageL", + "/Lotus/Upgrades/Skins/Armor/PrimeSetOne/PrimeSetOneArmArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeSetOne/PrimeSetOneChestArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeSetOne/PrimeSetOneLegArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeSetThree/PrimeSetThreeA", + "/Lotus/Upgrades/Skins/Armor/PrimeSetThree/PrimeSetThreeC", + "/Lotus/Upgrades/Skins/Armor/PrimeSetThree/PrimeSetThreeL", + "/Lotus/Upgrades/Skins/Armor/PrimeSetTwo/PrimeSetTwoArmArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeSetTwo/PrimeSetTwoChestArmor", + "/Lotus/Upgrades/Skins/Armor/PrimeSetTwo/PrimeSetTwoLegArmor", + "/Lotus/Upgrades/Skins/Armor/RailjackArmor/ItzalArmourA", + "/Lotus/Upgrades/Skins/Armor/RailjackArmor/ItzalArmourC", + "/Lotus/Upgrades/Skins/Armor/RailjackArmor/ItzalArmourL", + "/Lotus/Upgrades/Skins/Armor/RailjackArmor/RailjackAArmor", + "/Lotus/Upgrades/Skins/Armor/RailjackArmor/RailjackCArmor", + "/Lotus/Upgrades/Skins/Armor/RailjackArmor/RailjackLArmor", + "/Lotus/Upgrades/Skins/Armor/RedVeilArmor/RedVeilAArmor", + "/Lotus/Upgrades/Skins/Armor/RedVeilArmor/RedVeilCArmor", + "/Lotus/Upgrades/Skins/Armor/RedVeilArmor/RedVeilLArmor", + "/Lotus/Upgrades/Skins/Armor/RevenantArmor/RevenantArmorA", + "/Lotus/Upgrades/Skins/Armor/RevenantArmor/RevenantArmorC", + "/Lotus/Upgrades/Skins/Armor/RevenantArmor/RevenantArmorL", + "/Lotus/Upgrades/Skins/Armor/SWAsakageArmor/SWAsakageA", + "/Lotus/Upgrades/Skins/Armor/SWAsteriaChestArmor/SWAsteriaChestArmorC", + "/Lotus/Upgrades/Skins/Armor/SWAvyrdiShoulderArmor/SWAvyrdiShoulderArmorA", + "/Lotus/Upgrades/Skins/Armor/SWDivaArmor/SWDivaArmourC", + "/Lotus/Upgrades/Skins/Armor/SWEucyonArmor/SWEucyonChestArmor", + "/Lotus/Upgrades/Skins/Armor/SWFhanEpakArmor/SWFhanEpakArmourC", + "/Lotus/Upgrades/Skins/Armor/SWInflatableShoulderArmor/SWInflatableShoulderArmorA", + "/Lotus/Upgrades/Skins/Armor/SWIonShoulderArmor/SWIonShoulderArmorA", + "/Lotus/Upgrades/Skins/Armor/SWJotunheimMusicShoulder/SWJotunheimMusicShoulder", + "/Lotus/Upgrades/Skins/Armor/SWKishikamiArmor/SWKishikamiC", + "/Lotus/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorA", + "/Lotus/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorC", + "/Lotus/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorL", + "/Lotus/Upgrades/Skins/Armor/SWLamassuShoulderArmor/SWLamassuShoulderArmorA", + "/Lotus/Upgrades/Skins/Armor/SWPaxisArmor/SWPaxisArmourC", + "/Lotus/Upgrades/Skins/Armor/SWPaxisShoulderArmor/SWPaxisShoulderArmor", + "/Lotus/Upgrades/Skins/Armor/SWPiercingEyeShoulderArmor/SWPiercingEyeChestArmor", + "/Lotus/Upgrades/Skins/Armor/SWPiercingEyeShoulderArmor/SWPiercingEyeShoulderArmor", + "/Lotus/Upgrades/Skins/Armor/SWRaigoChestArmor/SWRaigoChestArmor", + "/Lotus/Upgrades/Skins/Armor/SWSeraphimArmor/SWSeraphimChestArmor", + "/Lotus/Upgrades/Skins/Armor/SWVikasaAegisArmor/SWVikasaAegisArmorC", + "/Lotus/Upgrades/Skins/Armor/SWVikasaPlatingShoulderArmor/SWVikasaPlatingShoulderArmor", + "/Lotus/Upgrades/Skins/Armor/SWXulatuChest/SWXulatuChestArmor", + "/Lotus/Upgrades/Skins/Armor/SWZhiviraShoulderArmor/SWZhiviraShoulderArmorA", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1A", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1C", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1L", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2A", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2C", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2L", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3A", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3C", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3L", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/JadeSetThreeArmArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/JadeSetThreeChestArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/JadeSetThreeLegArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SetThreeArmArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SetThreeChestArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SetThreeLegArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SolsticeSetThreeArmArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SolsticeSetThreeChestArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SolsticeSetThreeLegArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmLeftArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmRightArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeChestArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegLeftArmor", + "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegRightArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/SetTwoArmArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/SetTwoChestArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/SetTwoLegArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmLeftArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmRightArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoChestArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegLeftArmor", + "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegRightArmor", + "/Lotus/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", + "/Lotus/Upgrades/Skins/Armor/SolarisUnitedArmor/SolarisUnitedAArmor", + "/Lotus/Upgrades/Skins/Armor/SolarisUnitedArmor/SolarisUnitedCArmor", + "/Lotus/Upgrades/Skins/Armor/SolarisUnitedArmor/SolarisUnitedLArmor", + "/Lotus/Upgrades/Skins/Armor/Sony/OAArmorA", + "/Lotus/Upgrades/Skins/Armor/Sony/OAArmorC", + "/Lotus/Upgrades/Skins/Armor/Sony/OAArmorL", + "/Lotus/Upgrades/Skins/Armor/StalkArmour/StalkA", + "/Lotus/Upgrades/Skins/Armor/StalkArmour/StalkC", + "/Lotus/Upgrades/Skins/Armor/StalkArmour/StalkL", + "/Lotus/Upgrades/Skins/Armor/Sundial/SundialA", + "/Lotus/Upgrades/Skins/Armor/Sundial/SundialC", + "/Lotus/Upgrades/Skins/Armor/Sundial/SundialL", + "/Lotus/Upgrades/Skins/Armor/TennoCon2018Armor/TennoCon2018ArmorA", + "/Lotus/Upgrades/Skins/Armor/TennoCon2018Armor/TennoCon2018ArmorC", + "/Lotus/Upgrades/Skins/Armor/TennoCon2018Armor/TennoCon2018ArmorL", + "/Lotus/Upgrades/Skins/Armor/TennoCon2019Armor/TennoCon2019AArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2019Armor/TennoCon2019CArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2019Armor/TennoCon2019LArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2021Armor/TennoCon2021AArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2021Armor/TennoCon2021CArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2021Armor/TennoCon2021LArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2022Armor/TennoCon2022AArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2022Armor/TennoCon2022CArmor", + "/Lotus/Upgrades/Skins/Armor/TennoCon2022Armor/TennoCon2022LArmor", + "/Lotus/Upgrades/Skins/Armor/TitaniaDeluxeArmor/TitaniaDeluxeArmorA", + "/Lotus/Upgrades/Skins/Armor/TitaniaDeluxeArmor/TitaniaDeluxeArmorC", + "/Lotus/Upgrades/Skins/Armor/TitaniaDeluxeArmor/TitaniaDeluxeArmorL", + "/Lotus/Upgrades/Skins/Armor/TnArmorCurve/TnArmorCurveA", + "/Lotus/Upgrades/Skins/Armor/TnArmorCurve/TnArmorCurveC", + "/Lotus/Upgrades/Skins/Armor/TnArmorCurve/TnArmorCurveL", + "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorA", + "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorC", + "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorL", + "/Lotus/Upgrades/Skins/Armor/TnCeramicArmor/TnCeramicArmorA", + "/Lotus/Upgrades/Skins/Armor/TnCeramicArmor/TnCeramicArmorC", + "/Lotus/Upgrades/Skins/Armor/TnCeramicArmor/TnCeramicArmorL", + "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", + "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorL", + "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", + "/Lotus/Upgrades/Skins/Armor/TnHvArmour/TnHvArmourA", + "/Lotus/Upgrades/Skins/Armor/TnHvArmour/TnHvArmourC", + "/Lotus/Upgrades/Skins/Armor/TnHvArmour/TnHvArmourL", + "/Lotus/Upgrades/Skins/Armor/TnIceArmor/TnIceArmorA", + "/Lotus/Upgrades/Skins/Armor/TnIceArmor/TnIceArmorC", + "/Lotus/Upgrades/Skins/Armor/TnIceArmor/TnIceArmorL", + "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorElixis", + "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorPrisma", + "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorElixis", + "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorPrisma", + "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorElixis", + "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorPrisma", + "/Lotus/Upgrades/Skins/Armor/TnNewPlayerArmor/TnNewPlayerAArmor", + "/Lotus/Upgrades/Skins/Armor/TnNewPlayerArmor/TnNewPlayerCArmor", + "/Lotus/Upgrades/Skins/Armor/TnNewPlayerArmor/TnNewPlayerLArmor", + "/Lotus/Upgrades/Skins/Armor/TnPagemasterArmor/TnPagemasterArmorA", + "/Lotus/Upgrades/Skins/Armor/TnPagemasterArmor/TnPagemasterArmorC", + "/Lotus/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorA", + "/Lotus/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorC", + "/Lotus/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorL", + "/Lotus/Upgrades/Skins/Armor/TnoCharityRibbon/TnoCharityRibbon", + "/Lotus/Upgrades/Skins/Armor/Twitch2021Armor/TwitchArmor2021A", + "/Lotus/Upgrades/Skins/Armor/Twitch2021Armor/TwitchArmor2021C", + "/Lotus/Upgrades/Skins/Armor/Twitch2021Armor/TwitchArmor2021L", + "/Lotus/Upgrades/Skins/Armor/UmbraArmour/UmbraAArmor", + "/Lotus/Upgrades/Skins/Armor/UmbraArmour/UmbraCArmor", + "/Lotus/Upgrades/Skins/Armor/UmbraArmour/UmbraLArmor", + "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosALArmor", + "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosARArmor", + "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosChestArmor", + "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosLLArmor", + "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosLRArmor", + "/Lotus/Upgrades/Skins/Armor/ValkyrDeluxeArmor/ValkyrDeluxeArmorA", + "/Lotus/Upgrades/Skins/Armor/ValkyrDeluxeArmor/ValkyrDeluxeArmorC", + "/Lotus/Upgrades/Skins/Armor/ValkyrDeluxeArmor/ValkyrDeluxeArmorL", + "/Lotus/Upgrades/Skins/Armor/VeilShoulderArmor/VeilShoulderArmorA", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/BansheeArmLeftArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/BansheePrimeArmLeftArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/DagathArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmberDeluxeIIArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmberDeluxeIIChestArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmberPrimeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmptyCustomization", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/ExcaliburDeluxeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostEmperorArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostGrostArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostHeirloomArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostPrimeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostVoidshellArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/HildrynPrimeChestArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/HydroidPrimeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/LavosArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/MagPrimeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/OberonArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/OberonPrimeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/RevenantDeluxeCape", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/RevenantPrimeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWBansheeBotLArmLeftArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWFrostStrigidArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWHisameArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWIonFrostArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWLavosKuvaelArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWOberonBotLArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWOberonYoukaiArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWSonorityArmLeftArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/VoltArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/VoltChameleonArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/VoltPrimeArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/WerewolfArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/WerewolfVoidshellArmArmor", + "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/WukongDeluxeArmArmor", + "/Lotus/Upgrades/Skins/Armor/Wolf/TennoWolfAArmor", + "/Lotus/Upgrades/Skins/Armor/Wolf/TennoWolfCArmor", + "/Lotus/Upgrades/Skins/Armor/Wolf/TennoWolfLArmor", + "/Lotus/Upgrades/Skins/Armor/SetOneArmArmor", + "/Lotus/Upgrades/Skins/Armor/SetOneChestArmor", + "/Lotus/Upgrades/Skins/Armor/SetOneLegArmor", + "/Lotus/Upgrades/Skins/Arrows/AlternateArrowA", + "/Lotus/Upgrades/Skins/Arrows/AlternateArrowB", + "/Lotus/Upgrades/Skins/Arrows/AlternateArrowC", + "/Lotus/Upgrades/Skins/Asp/AspAgileAnims", + "/Lotus/Upgrades/Skins/Asp/AspAltHelmet", + "/Lotus/Upgrades/Skins/Asp/AspAltHelmetB", + "/Lotus/Upgrades/Skins/Asp/AspAltHelmetBStatless", + "/Lotus/Upgrades/Skins/Asp/AspAltHelmetStatless", + "/Lotus/Upgrades/Skins/Asp/AspHelmet", + "/Lotus/Upgrades/Skins/Asp/AspNobleAnims", + "/Lotus/Upgrades/Skins/Asp/SarynAlternateSkin", + "/Lotus/Upgrades/Skins/Asp/UnlockAspAgile", + "/Lotus/Upgrades/Skins/Asp/UnlockAspNoble", + "/Lotus/Upgrades/Skins/Axe/DaggerAxe", + "/Lotus/Upgrades/Skins/Axe/SarynDeluxeSickle", + "/Lotus/Upgrades/Skins/Axe/SolsticeScindo", + "/Lotus/Upgrades/Skins/Bard/BardAgileAnims", + "/Lotus/Upgrades/Skins/Bard/BardAltCloakA", + "/Lotus/Upgrades/Skins/Bard/BardAltCloakB", + "/Lotus/Upgrades/Skins/Bard/BardAltHelmet", + "/Lotus/Upgrades/Skins/Bard/BardHelmet", + "/Lotus/Upgrades/Skins/Bard/BardNobleAnims", + "/Lotus/Upgrades/Skins/Bard/BardSkin", + "/Lotus/Upgrades/Skins/Bard/BardTwitchAltHelmet", + "/Lotus/Upgrades/Skins/Bard/BardTwitchHelmet", + "/Lotus/Upgrades/Skins/Bard/BardTwitchSkin", + "/Lotus/Upgrades/Skins/Bard/OctaviaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Bard/OctaviaDeluxeSkin", + "/Lotus/Upgrades/Skins/Bard/OctaviaPrimeHelmet", + "/Lotus/Upgrades/Skins/Bard/OctaviaPrimeSkin", + "/Lotus/Upgrades/Skins/Bard/SWDivaHelmet", + "/Lotus/Upgrades/Skins/Bard/SWDivaSkin", + "/Lotus/Upgrades/Skins/Bard/SWGiocosoHelmet", + "/Lotus/Upgrades/Skins/Bard/SWMandachoralystHelmet", + "/Lotus/Upgrades/Skins/Bard/SWMandachoralystSkin", + "/Lotus/Upgrades/Skins/Bard/SWOctaviaYoukaiHelmet", + "/Lotus/Upgrades/Skins/Bard/SWOctaviaYoukaiSkin", + "/Lotus/Upgrades/Skins/Bard/UnlockBardAgile", + "/Lotus/Upgrades/Skins/Bard/UnlockBardNoble", + "/Lotus/Upgrades/Skins/Berserker/BerserkerAgileAnims", + "/Lotus/Upgrades/Skins/Berserker/BerserkerBastetHelmet", + "/Lotus/Upgrades/Skins/Berserker/BerserkerDangles", + "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeAgileAnims", + "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeHelmet", + "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeNobleAnims", + "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeSuit", + "/Lotus/Upgrades/Skins/Berserker/BerserkerHelmet", + "/Lotus/Upgrades/Skins/Berserker/BerserkerNobleAnims", + "/Lotus/Upgrades/Skins/Berserker/BerserkerSkin", + "/Lotus/Upgrades/Skins/Berserker/JadeValkyrHelmet", + "/Lotus/Upgrades/Skins/Berserker/JadeValkyrSkin", + "/Lotus/Upgrades/Skins/Berserker/SWDelusionHelmet", + "/Lotus/Upgrades/Skins/Berserker/SWDelusionSkin", + "/Lotus/Upgrades/Skins/Berserker/SWIonHelmet", + "/Lotus/Upgrades/Skins/Berserker/SWLeonessaHelmet", + "/Lotus/Upgrades/Skins/Berserker/SWLeonessaSkin", + "/Lotus/Upgrades/Skins/Berserker/SWMithraValkyrHelmet", + "/Lotus/Upgrades/Skins/Berserker/SWMithraValkyrSkin", + "/Lotus/Upgrades/Skins/Berserker/SWRFiveValkyrCheetahHelmet", + "/Lotus/Upgrades/Skins/Berserker/SWRFourValkyrGraxxHelmet", + "/Lotus/Upgrades/Skins/Berserker/SWRFourValkyrGraxxSkin", + "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerAgile", + "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeAgile", + "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeNoble", + "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerNoble", + "/Lotus/Upgrades/Skins/Berserker/ValkyrAltBHelmet", + "/Lotus/Upgrades/Skins/Berserker/ValkyrAlternateSkin", + "/Lotus/Upgrades/Skins/Berserker/ValkyrDeluxeFistSkin", + "/Lotus/Upgrades/Skins/Berserker/ValkyrDeluxeHelmet", + "/Lotus/Upgrades/Skins/Berserker/ValkyrDeluxeSkin", + "/Lotus/Upgrades/Skins/Berserker/ValkyrPrimeDangles", + "/Lotus/Upgrades/Skins/Berserker/ValkyrPrimeHelmet", + "/Lotus/Upgrades/Skins/Berserker/ValkyrPrimeSkin", + "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldAkbolto", + "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldBolto", + "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldDaikyu", + "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldTipedo", + "/Lotus/Upgrades/Skins/Brawler/AtlasDeluxeHelmet", + "/Lotus/Upgrades/Skins/Brawler/AtlasDeluxeSkin", + "/Lotus/Upgrades/Skins/Brawler/AtlasPrimeHelmet", + "/Lotus/Upgrades/Skins/Brawler/AtlasPrimeSkin", + "/Lotus/Upgrades/Skins/Brawler/BrawlerAgileAnims", + "/Lotus/Upgrades/Skins/Brawler/BrawlerAlt2Helmet", + "/Lotus/Upgrades/Skins/Brawler/BrawlerAltHelmet", + "/Lotus/Upgrades/Skins/Brawler/BrawlerHelmet", + "/Lotus/Upgrades/Skins/Brawler/BrawlerNobleAnims", + "/Lotus/Upgrades/Skins/Brawler/BrawlerSkin", + "/Lotus/Upgrades/Skins/Brawler/SWAtlasBotLHelmet", + "/Lotus/Upgrades/Skins/Brawler/SWAtlasBotLSkin", + "/Lotus/Upgrades/Skins/Brawler/SWAtlasGraxxHelmet", + "/Lotus/Upgrades/Skins/Brawler/SWAtlasGraxxSkin", + "/Lotus/Upgrades/Skins/Brawler/SWMonolithHelmet", + "/Lotus/Upgrades/Skins/Brawler/SWMonolithSkin", + "/Lotus/Upgrades/Skins/Brawler/SWRFiveAtlasArhatHelmet", + "/Lotus/Upgrades/Skins/Brawler/SWRSixAtlasTelamonHelmet", + "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerAgile", + "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerNoble", + "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameAgileAnims", + "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameAltHelmet", + "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameHelmet", + "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameNobleAnims", + "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameSkin", + "/Lotus/Upgrades/Skins/BrokenFrame/SWXakuDeatheaHelmet", + "/Lotus/Upgrades/Skins/BrokenFrame/SWXakuDeatheaSkin", + "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameAgile", + "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameNoble", + "/Lotus/Upgrades/Skins/BrokenFrame/XakuDeluxeHelmet", + "/Lotus/Upgrades/Skins/BrokenFrame/XakuDeluxeSkin", + "/Lotus/Upgrades/Skins/Camo/AkimboViperCamo", + "/Lotus/Upgrades/Skins/Camo/DesertAtteraxSkin", + "/Lotus/Upgrades/Skins/Camo/DesertDirigaSkin", + "/Lotus/Upgrades/Skins/Camo/DesertGrinlokSkin", + "/Lotus/Upgrades/Skins/Camo/DesertHekSkin", + "/Lotus/Upgrades/Skins/Camo/DesertKarakSkin", + "/Lotus/Upgrades/Skins/Camo/DesertMarelokSkin", + "/Lotus/Upgrades/Skins/Camo/DesertTonkorSkin", + "/Lotus/Upgrades/Skins/Camo/GorgonCamo", + "/Lotus/Upgrades/Skins/Camo/GrakataCamo", + "/Lotus/Upgrades/Skins/Camo/GrnAkimboPistolsCamo", + "/Lotus/Upgrades/Skins/Camo/KrackenCamo", + "/Lotus/Upgrades/Skins/Camo/SobekCamo", + "/Lotus/Upgrades/Skins/Camo/ViperCamo", + "/Lotus/Upgrades/Skins/Camo/VulkarCamo", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorA", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorB", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorC", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorDuviri", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorGaraPrime", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorHalloweenA", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorPrime", + "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorVoidTraderA", + "/Lotus/Upgrades/Skins/Catbrows/Armor/EmpyreanKavatArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/GrnAmphisKavatArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/GrnQueenCatbrowArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/RevenantKavatArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/TnTigrisKavatArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/Twitch2021MyrdinCatbrowArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/UmbraKavatArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/VermillionKavatArmor", + "/Lotus/Upgrades/Skins/Catbrows/Armor/WispKavatArmor", + "/Lotus/Upgrades/Skins/Catbrows/CephalonCatbrowFur", + "/Lotus/Upgrades/Skins/Catbrows/ContestCatbrowFur", + "/Lotus/Upgrades/Skins/Catbrows/DaybreakCatbrowFur", + "/Lotus/Upgrades/Skins/Catbrows/GaraPrimeCatbrowFur", + "/Lotus/Upgrades/Skins/Catbrows/NexusCatbrowFur", + "/Lotus/Upgrades/Skins/Catbrows/PrimeCatbrowFur", + "/Lotus/Upgrades/Skins/Catbrows/SolsticeCatbrowFur", + "/Lotus/Upgrades/Skins/Catbrows/XmasCatbrowSkin", + "/Lotus/Upgrades/Skins/CephWepSkins/CephGaundaoSkin", + "/Lotus/Upgrades/Skins/CephWepSkins/CephPyranaSkin", + "/Lotus/Upgrades/Skins/CephWepSkins/CephRubicoSkin", + "/Lotus/Upgrades/Skins/Clan/Focus/MaduraiBadgeItem", + "/Lotus/Upgrades/Skins/Clan/Focus/NaramonBadgeItem", + "/Lotus/Upgrades/Skins/Clan/Focus/UnairuBadgeItem", + "/Lotus/Upgrades/Skins/Clan/Focus/VazarinBadgeItem", + "/Lotus/Upgrades/Skins/Clan/Focus/ZenurikBadgeItem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearGroundIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearGroundIIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearGroundIIIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearOperationIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearOperationIIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearOperationIIIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearSpaceIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearSpaceIIEmblem", + "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearSpaceIIIEmblem", + "/Lotus/Upgrades/Skins/Clan/AggressionEventCorpusBadgeItem", + "/Lotus/Upgrades/Skins/Clan/AggressionEventGrineerBadgeItem", + "/Lotus/Upgrades/Skins/Clan/AllianceEmblemItem", + "/Lotus/Upgrades/Skins/Clan/AmalgamEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/AmbulasEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/BaroKavatBadgeItem", + "/Lotus/Upgrades/Skins/Clan/BaroKubrowBadgeItem", + "/Lotus/Upgrades/Skins/Clan/BaroQuantumBadgeItem", + "/Lotus/Upgrades/Skins/Clan/BountyHunterBadgeItem", + "/Lotus/Upgrades/Skins/Clan/CNY2021EmblemItem", + "/Lotus/Upgrades/Skins/Clan/CNY2022EmblemItem", + "/Lotus/Upgrades/Skins/Clan/CNY2023EmblemItem", + "/Lotus/Upgrades/Skins/Clan/CY17173MediaBadge", + "/Lotus/Upgrades/Skins/Clan/CYCCBBadgeItem", + "/Lotus/Upgrades/Skins/Clan/CYDuowanMediaBadge", + "/Lotus/Upgrades/Skins/Clan/CYOBBadgeItem", + "/Lotus/Upgrades/Skins/Clan/CYPlayBadgeItem", + "/Lotus/Upgrades/Skins/Clan/ClanEmblemItem", + "/Lotus/Upgrades/Skins/Clan/Community10YearEmblemItem", + "/Lotus/Upgrades/Skins/Clan/ConservationBadgeBItem", + "/Lotus/Upgrades/Skins/Clan/ConservationBadgeCItem", + "/Lotus/Upgrades/Skins/Clan/ConservationBadgeDeimosItem", + "/Lotus/Upgrades/Skins/Clan/ConservationBadgeItem", + "/Lotus/Upgrades/Skins/Clan/CorpusLichBadgeItem", + "/Lotus/Upgrades/Skins/Clan/CorpusVoidBadgeItem", + "/Lotus/Upgrades/Skins/Clan/DefectorRescueEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/DogDaysBadgeItem", + "/Lotus/Upgrades/Skins/Clan/Dragon2024BadgeItem", + "/Lotus/Upgrades/Skins/Clan/DrakeRifleBadgeItem", + "/Lotus/Upgrades/Skins/Clan/EliteAlertBadgeItem", + "/Lotus/Upgrades/Skins/Clan/EntratiEventEmblemItem", + "/Lotus/Upgrades/Skins/Clan/ExcaliburUmbraBadgeItem", + "/Lotus/Upgrades/Skins/Clan/ExcavationEvenetBadgeItem", + "/Lotus/Upgrades/Skins/Clan/FalseProfitEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/FoundersBadgeDiscipleItem", + "/Lotus/Upgrades/Skins/Clan/FoundersBadgeGrandMasterItem", + "/Lotus/Upgrades/Skins/Clan/FoundersBadgeHunterItem", + "/Lotus/Upgrades/Skins/Clan/FoundersBadgeMasterItem", + "/Lotus/Upgrades/Skins/Clan/GlassmakerEmblemItem", + "/Lotus/Upgrades/Skins/Clan/GolemRaidBadgeItem", + "/Lotus/Upgrades/Skins/Clan/GrnSeaLabEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/Halloween2023OwlBadgeItem", + "/Lotus/Upgrades/Skins/Clan/Halloween2023RamBadgeItem", + "/Lotus/Upgrades/Skins/Clan/HiveSabotageEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/HolidayDeathMatchBadgeItem", + "/Lotus/Upgrades/Skins/Clan/IndexEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/InfTacAlertDiseasedAncientBadgeItem", + "/Lotus/Upgrades/Skins/Clan/InfTacAlertNaniteMoaAncientBadgeItem", + "/Lotus/Upgrades/Skins/Clan/InfTacAlertPussAncientBadgeItem", + "/Lotus/Upgrades/Skins/Clan/InfTacAlertSlowBombMoaAncientBadgeItem", + "/Lotus/Upgrades/Skins/Clan/InfestationEventEmblemItem", + "/Lotus/Upgrades/Skins/Clan/JungleEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/KelaEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/LeaderBadgeGhostItem", + "/Lotus/Upgrades/Skins/Clan/LeaderBadgeMoonItem", + "/Lotus/Upgrades/Skins/Clan/LeaderBadgeMountainItem", + "/Lotus/Upgrades/Skins/Clan/LeaderBadgeShadowItem", + "/Lotus/Upgrades/Skins/Clan/LeaderBadgeStormItem", + "/Lotus/Upgrades/Skins/Clan/LichKillerBadgeItem", + "/Lotus/Upgrades/Skins/Clan/LotusGuideBadgeItem", + "/Lotus/Upgrades/Skins/Clan/MechEventEmblemItem", + "/Lotus/Upgrades/Skins/Clan/MutalistIncursionsBadgeItem", + "/Lotus/Upgrades/Skins/Clan/NightmareSevantiHaloBadgeItem", + "/Lotus/Upgrades/Skins/Clan/NoraSeasonTwoBadgeItem", + "/Lotus/Upgrades/Skins/Clan/OrbBadgeItem", + "/Lotus/Upgrades/Skins/Clan/OrokinSabotageBadgeItem", + "/Lotus/Upgrades/Skins/Clan/OrokittyBadgeItem", + "/Lotus/Upgrades/Skins/Clan/PS5OkinaBadgeItem", + "/Lotus/Upgrades/Skins/Clan/PlagueStarBadgeItem", + "/Lotus/Upgrades/Skins/Clan/PrismaLotusEmblem", + "/Lotus/Upgrades/Skins/Clan/ProjectSinisterBadgeItem", + "/Lotus/Upgrades/Skins/Clan/PvpRepBadgeItem", + "/Lotus/Upgrades/Skins/Clan/RadioLegionBadgeItem", + "/Lotus/Upgrades/Skins/Clan/RescueEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/SevantiHaloBadgeItem", + "/Lotus/Upgrades/Skins/Clan/SevantiLegacyHaloBadgeItem", + "/Lotus/Upgrades/Skins/Clan/ShipyardsEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/ShipyardsEventQuantumBadgeItem", + "/Lotus/Upgrades/Skins/Clan/SkullBadgeBronzeItem", + "/Lotus/Upgrades/Skins/Clan/SkullBadgeGoldItem", + "/Lotus/Upgrades/Skins/Clan/SkullBadgeSilverItem", + "/Lotus/Upgrades/Skins/Clan/SlingStone2EmblemItem", + "/Lotus/Upgrades/Skins/Clan/SlingStoneEmblemItem", + "/Lotus/Upgrades/Skins/Clan/SolarisBadgeItem", + "/Lotus/Upgrades/Skins/Clan/SurvivalEventBadgeItem", + "/Lotus/Upgrades/Skins/Clan/TenYearAnniversaryBadgeItem", + "/Lotus/Upgrades/Skins/Clan/TennoCon2016BadgeItem", + "/Lotus/Upgrades/Skins/Clan/TennoGenBadgeItem", + "/Lotus/Upgrades/Skins/Clan/TranslatorBadgeItem", + "/Lotus/Upgrades/Skins/Clan/TwitchNecraloidBadgeItem", + "/Lotus/Upgrades/Skins/Clan/TwitchPromo2021BadgeItem", + "/Lotus/Upgrades/Skins/Clan/WikiaBadgeItem", + "/Lotus/Upgrades/Skins/Clan/WolfBadgeItem", + "/Lotus/Upgrades/Skins/Clan/XBoneJadeClemBadgeItem", + "/Lotus/Upgrades/Skins/Clan/ZarimanEvolvingSekharaBadgeItemA", + "/Lotus/Upgrades/Skins/Clan/ZarimanEvolvingSekharaBadgeItemB", + "/Lotus/Upgrades/Skins/Clan/ZarimanEvolvingSekharaBadgeItemC", + "/Lotus/Upgrades/Skins/Clan/ZawVariantBadgeItemA", + "/Lotus/Upgrades/Skins/Clan/ZawVariantBadgeItemB", + "/Lotus/Upgrades/Skins/Clan/ZawVariantBadgeItemC", + "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteAgileAnims", + "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteFrameAltHelmet", + "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteFrameHelmet", + "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteFrameSkin", + "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteNobleAnims", + "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteAgile", + "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteNoble", + "/Lotus/Upgrades/Skins/Contests/LongGuns/VectisSharpshooter", + "/Lotus/Upgrades/Skins/Contests/LongGuns/VectisSilferer", + "/Lotus/Upgrades/Skins/Contests/Melee/DualZorenCombustion", + "/Lotus/Upgrades/Skins/Contests/Melee/DualZorenKuberus", + "/Lotus/Upgrades/Skins/Contests/Melee/ScindoCombustion", + "/Lotus/Upgrades/Skins/Contests/Melee/ScindoKuberus", + "/Lotus/Upgrades/Skins/Contests/Pistols/AkmagnusDakila", + "/Lotus/Upgrades/Skins/Contests/Pistols/AkmagnusHiveLight", + "/Lotus/Upgrades/Skins/Contests/Pistols/MagnusDakila", + "/Lotus/Upgrades/Skins/Contests/Pistols/MagnusHiveLight", + "/Lotus/Upgrades/Skins/Cowgirl/CowgirlAgileAnims", + "/Lotus/Upgrades/Skins/Cowgirl/CowgirlAltHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/CowgirlHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/CowgirlNobleAnims", + "/Lotus/Upgrades/Skins/Cowgirl/CowgirlSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaAltBHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeArmGunSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeDualPistolSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxePistolSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeV2ArmGunSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeV2Helmet", + "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeV2Skin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaImmortallSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaPrimeAltHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/MesaPrimeHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/MesaPrimeSkin", + "/Lotus/Upgrades/Skins/Cowgirl/MesaVoidShellHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/MesaVoidShellSkin", + "/Lotus/Upgrades/Skins/Cowgirl/SWCowgirlInsomniaHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/SWCowgirlInsomniaSkin", + "/Lotus/Upgrades/Skins/Cowgirl/SWDevilRangerHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/SWDevilRangerSkin", + "/Lotus/Upgrades/Skins/Cowgirl/SWGraxxMesaHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/SWGraxxMesaSkin", + "/Lotus/Upgrades/Skins/Cowgirl/SWKudegraHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/SWKudegraSkin", + "/Lotus/Upgrades/Skins/Cowgirl/SWMarletHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/SWMarletSkin", + "/Lotus/Upgrades/Skins/Cowgirl/SWMesnificentHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/SWMesnificentSkin", + "/Lotus/Upgrades/Skins/Cowgirl/SWRThreeDeadEyeHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/SWRThreeFalconHelmet", + "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlAgile", + "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlNoble", + "/Lotus/Upgrades/Skins/Crowns/DexVinesCrown", + "/Lotus/Upgrades/Skins/Crowns/HeirloomFrostCrown", + "/Lotus/Upgrades/Skins/Crowns/HeirloomMagCrown", + "/Lotus/Upgrades/Skins/Crowns/LaurelHaloCrown", + "/Lotus/Upgrades/Skins/CrpArSniper/CrpArSniperLichSkin", + "/Lotus/Upgrades/Skins/Dagath/DagathAgileAnims", + "/Lotus/Upgrades/Skins/Dagath/DagathAltHelmet", + "/Lotus/Upgrades/Skins/Dagath/DagathHelmet", + "/Lotus/Upgrades/Skins/Dagath/DagathNobleAnims", + "/Lotus/Upgrades/Skins/Dagath/DagathSkin", + "/Lotus/Upgrades/Skins/Dagath/UnlockDagathAgile", + "/Lotus/Upgrades/Skins/Dagath/UnlockDagathNoble", + "/Lotus/Upgrades/Skins/Dazzle/BratonDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/CestraDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/DeraDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/DetronDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/DualCestraDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/FluxRifleDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/LankaDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/LectaDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/ObexDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/OpticorDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/PentaDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/ProvaDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/ShockExergisSkin", + "/Lotus/Upgrades/Skins/Dazzle/ShockFalcorSkin", + "/Lotus/Upgrades/Skins/Dazzle/ShockPlinxSkin", + "/Lotus/Upgrades/Skins/Dazzle/SnipetronDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/SpectraDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/SupraDazzleCamo", + "/Lotus/Upgrades/Skins/Dazzle/TetraDazzleCamo", + "/Lotus/Upgrades/Skins/Decree/BansheeAlternateSkin", + "/Lotus/Upgrades/Skins/Decree/BansheeDeluxeArmLeftArmor", + "/Lotus/Upgrades/Skins/Decree/BansheeDeluxeHelmet", + "/Lotus/Upgrades/Skins/Decree/BansheeDeluxeSuit", + "/Lotus/Upgrades/Skins/Decree/BansheePrimeHelmet", + "/Lotus/Upgrades/Skins/Decree/BansheePrimeSkin", + "/Lotus/Upgrades/Skins/Decree/BansheeSkin", + "/Lotus/Upgrades/Skins/Decree/BansheeVoidShellArmLeftArmor", + "/Lotus/Upgrades/Skins/Decree/BansheeVoidShellHelmet", + "/Lotus/Upgrades/Skins/Decree/BansheeVoidShellSkin", + "/Lotus/Upgrades/Skins/Decree/DecreeAgileAnims", + "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmet", + "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmetB", + "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmetBStatless", + "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmetStatless", + "/Lotus/Upgrades/Skins/Decree/DecreeHelmet", + "/Lotus/Upgrades/Skins/Decree/DecreeNobleAnims", + "/Lotus/Upgrades/Skins/Decree/SWBansheeBotLHelmet", + "/Lotus/Upgrades/Skins/Decree/SWBansheeBotLSkin", + "/Lotus/Upgrades/Skins/Decree/SWDominiaHelmet", + "/Lotus/Upgrades/Skins/Decree/SWRSixBansheeEchoHelmet", + "/Lotus/Upgrades/Skins/Decree/SWSonorityHelmet", + "/Lotus/Upgrades/Skins/Decree/SWSonoritySkin", + "/Lotus/Upgrades/Skins/Decree/UnlockDecreeAgile", + "/Lotus/Upgrades/Skins/Decree/UnlockDecreeNoble", + "/Lotus/Upgrades/Skins/Deluxe/AshDeluxeIIBowSkin", + "/Lotus/Upgrades/Skins/Deluxe/AtlasDeluxeSparring", + "/Lotus/Upgrades/Skins/Deluxe/BansheeDeluxeSonicor", + "/Lotus/Upgrades/Skins/Deluxe/ChromaDeluxeSword", + "/Lotus/Upgrades/Skins/Deluxe/FrostDeluxeDualSword", + "/Lotus/Upgrades/Skins/Deluxe/FrostDeluxeSword", + "/Lotus/Upgrades/Skins/Deluxe/IvaraDeluxeBowSkin", + "/Lotus/Upgrades/Skins/Deluxe/LimboDeluxeCardSkin", + "/Lotus/Upgrades/Skins/Deluxe/LokiDeluxeDualKamas", + "/Lotus/Upgrades/Skins/Deluxe/NovaDeluxeIISniperSkin", + "/Lotus/Upgrades/Skins/Deluxe/NovaDeluxePolearm", + "/Lotus/Upgrades/Skins/Deluxe/NyxDeluxeShotgunSkin", + "/Lotus/Upgrades/Skins/Deluxe/OberonDeluxeAckBrunt", + "/Lotus/Upgrades/Skins/Deluxe/OberonDeluxeParis", + "/Lotus/Upgrades/Skins/Deluxe/OctaviaDeluxeBoltor", + "/Lotus/Upgrades/Skins/Deluxe/ProteaDeluxeSkinTonkor", + "/Lotus/Upgrades/Skins/Deluxe/ProteaDeluxeThrowingSkin", + "/Lotus/Upgrades/Skins/Deluxe/StyanaxDeluxeSpearSkin", + "/Lotus/Upgrades/Skins/Deluxe/WispDeluxeFulminSkin", + "/Lotus/Upgrades/Skins/Deluxe/WukongDeluxeWhipSkin", + "/Lotus/Upgrades/Skins/Devourer/DevourerAgileAnims", + "/Lotus/Upgrades/Skins/Devourer/DevourerAltHelmet", + "/Lotus/Upgrades/Skins/Devourer/DevourerHelmet", + "/Lotus/Upgrades/Skins/Devourer/DevourerNobleAnims", + "/Lotus/Upgrades/Skins/Devourer/DevourerSkin", + "/Lotus/Upgrades/Skins/Devourer/GrendelDeluxeHelmet", + "/Lotus/Upgrades/Skins/Devourer/GrendelDeluxeSkin", + "/Lotus/Upgrades/Skins/Devourer/GrendelPrimeHelmet", + "/Lotus/Upgrades/Skins/Devourer/GrendelPrimeSkin", + "/Lotus/Upgrades/Skins/Devourer/GrendelVoidshellHelmet", + "/Lotus/Upgrades/Skins/Devourer/GrendelVoidshellSkin", + "/Lotus/Upgrades/Skins/Devourer/SWMolochHelmet", + "/Lotus/Upgrades/Skins/Devourer/SWMolochSkin", + "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerAgile", + "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerNoble", + "/Lotus/Upgrades/Skins/DexTheSecond/NintendoDexDakra", + "/Lotus/Upgrades/Skins/DexTheSecond/ObsidianDexDakra", + "/Lotus/Upgrades/Skins/Dragon/ChromaAgileAnims", + "/Lotus/Upgrades/Skins/Dragon/ChromaAltBHelmet", + "/Lotus/Upgrades/Skins/Dragon/ChromaAlternateSkin", + "/Lotus/Upgrades/Skins/Dragon/ChromaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Dragon/ChromaDeluxeSkin", + "/Lotus/Upgrades/Skins/Dragon/ChromaDeluxeWings", + "/Lotus/Upgrades/Skins/Dragon/ChromaLNYHelmet", + "/Lotus/Upgrades/Skins/Dragon/ChromaLNYSkin", + "/Lotus/Upgrades/Skins/Dragon/ChromaLNYWings", + "/Lotus/Upgrades/Skins/Dragon/ChromaNobleAnims", + "/Lotus/Upgrades/Skins/Dragon/ChromaPrimeHelmet", + "/Lotus/Upgrades/Skins/Dragon/ChromaPrimeSkin", + "/Lotus/Upgrades/Skins/Dragon/ChromaSkin", + "/Lotus/Upgrades/Skins/Dragon/DragonAltHelmet", + "/Lotus/Upgrades/Skins/Dragon/DragonHelmet", + "/Lotus/Upgrades/Skins/Dragon/SWGraxxChromaHelmet", + "/Lotus/Upgrades/Skins/Dragon/SWGraxxChromaSkin", + "/Lotus/Upgrades/Skins/Dragon/SWMorkaiHelmet", + "/Lotus/Upgrades/Skins/Dragon/SWMorkaiSkin", + "/Lotus/Upgrades/Skins/Dragon/SWRFiveChromaDrevniSkin", + "/Lotus/Upgrades/Skins/Dragon/SWRSixChromaVojnikSkin", + "/Lotus/Upgrades/Skins/Dragon/SWRThreeKaijuHelmet", + "/Lotus/Upgrades/Skins/Dragon/SWRThreeTarrasqueHelmet", + "/Lotus/Upgrades/Skins/Dragon/SWThyrusHelmet", + "/Lotus/Upgrades/Skins/Dragon/SWThyrusSkin", + "/Lotus/Upgrades/Skins/Dragon/UnlockChromaAgile", + "/Lotus/Upgrades/Skins/Dragon/UnlockChromaNoble", + "/Lotus/Upgrades/Skins/DualAxe/DaggerAxe", + "/Lotus/Upgrades/Skins/Duviri/DuviriSwordTowerShieldSkin", + "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaFireEphemera", + "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaIceEphemera", + "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaImpactEphemera", + "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaLightningEphemera", + "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaMagneticEphemera", + "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaToxinEphemera", + "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaTricksterEphemera", + "/Lotus/Upgrades/Skins/Effects/ArchonShardEphemera", + "/Lotus/Upgrades/Skins/Effects/ArchonShardEphemeraB", + "/Lotus/Upgrades/Skins/Effects/AvatarBloodA", + "/Lotus/Upgrades/Skins/Effects/AvatarSmokeA", + "/Lotus/Upgrades/Skins/Effects/BaroEphemeraA", + "/Lotus/Upgrades/Skins/Effects/BaroEphemeraB", + "/Lotus/Upgrades/Skins/Effects/BaruukPrimeEphemera", + "/Lotus/Upgrades/Skins/Effects/BaseFootsteps", + "/Lotus/Upgrades/Skins/Effects/BatWingsEphemera", + "/Lotus/Upgrades/Skins/Effects/BatsEphemera", + "/Lotus/Upgrades/Skins/Effects/Conquera2022Ephemera", + "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", + "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraA", + "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraB", + "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraC", + "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraD", + "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraE", + "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraF", + "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraG", + "/Lotus/Upgrades/Skins/Effects/CupidWingsEphemera", + "/Lotus/Upgrades/Skins/Effects/DeimosEphemera", + "/Lotus/Upgrades/Skins/Effects/DogDaysEphemera", + "/Lotus/Upgrades/Skins/Effects/EphemeraGaraPrime", + "/Lotus/Upgrades/Skins/Effects/EphemeraNezhaPrime", + "/Lotus/Upgrades/Skins/Effects/EphemeraPrimeA", + "/Lotus/Upgrades/Skins/Effects/FootstepsEasterEggs", + "/Lotus/Upgrades/Skins/Effects/FootstepsEidolon", + "/Lotus/Upgrades/Skins/Effects/FootstepsElectrical", + "/Lotus/Upgrades/Skins/Effects/FootstepsHeat", + "/Lotus/Upgrades/Skins/Effects/FootstepsIce", + "/Lotus/Upgrades/Skins/Effects/FootstepsMaple", + "/Lotus/Upgrades/Skins/Effects/FootstepsPetals", + "/Lotus/Upgrades/Skins/Effects/GarudaPrimeEphemera", + "/Lotus/Upgrades/Skins/Effects/GrendelPrimeEphemera", + "/Lotus/Upgrades/Skins/Effects/HydroidDeluxeEphemera", + "/Lotus/Upgrades/Skins/Effects/InfestedEphemeraA", + "/Lotus/Upgrades/Skins/Effects/LNYDragonEphemera", + "/Lotus/Upgrades/Skins/Effects/LotusFlowers", + "/Lotus/Upgrades/Skins/Effects/LunarEphemera", + "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraB", + "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraC", + "/Lotus/Upgrades/Skins/Effects/NightwaveIntermissionEphemera", + "/Lotus/Upgrades/Skins/Effects/ObsidianEphemeraA", + "/Lotus/Upgrades/Skins/Effects/OrbsEphemera", + "/Lotus/Upgrades/Skins/Effects/OvergrowthEphemera", + "/Lotus/Upgrades/Skins/Effects/PeachBlossomsEphemera", + "/Lotus/Upgrades/Skins/Effects/ProteaPrimeEphemera", + "/Lotus/Upgrades/Skins/Effects/SandmanEphemera", + "/Lotus/Upgrades/Skins/Effects/SentientDeadEphemera", + "/Lotus/Upgrades/Skins/Effects/SmokeEphemera", + "/Lotus/Upgrades/Skins/Effects/SnowEphemera", + "/Lotus/Upgrades/Skins/Effects/TatsuSkullEphemera", + "/Lotus/Upgrades/Skins/Effects/TennoCon2021Ephemera", + "/Lotus/Upgrades/Skins/Effects/TwitchEphemera", + "/Lotus/Upgrades/Skins/Effects/VoidAngelEphemeraA", + "/Lotus/Upgrades/Skins/Effects/VoidAngelEphemeraB", + "/Lotus/Upgrades/Skins/Effects/WebEphemera", + "/Lotus/Upgrades/Skins/Effects/WerewolfEphemera", + "/Lotus/Upgrades/Skins/Effects/XakuDeluxeEphemera", + "/Lotus/Upgrades/Skins/EliteAlerts/EliteAlertAmprex", + "/Lotus/Upgrades/Skins/EliteAlerts/EliteAlertAtomos", + "/Lotus/Upgrades/Skins/EliteAlerts/EliteAlertAtterax", + "/Lotus/Upgrades/Skins/Ember/EmberAgileAnims", + "/Lotus/Upgrades/Skins/Ember/EmberAlternateSkin", + "/Lotus/Upgrades/Skins/Ember/EmberDeluxeDualPistolSkin", + "/Lotus/Upgrades/Skins/Ember/EmberDeluxeHelmet", + "/Lotus/Upgrades/Skins/Ember/EmberDeluxeIIFlamethrowerSkin", + "/Lotus/Upgrades/Skins/Ember/EmberDeluxeIIHelmet", + "/Lotus/Upgrades/Skins/Ember/EmberDeluxeIISkin", + "/Lotus/Upgrades/Skins/Ember/EmberDeluxePistolSkin", + "/Lotus/Upgrades/Skins/Ember/EmberDeluxeSkin", + "/Lotus/Upgrades/Skins/Ember/EmberHelmet", + "/Lotus/Upgrades/Skins/Ember/EmberHelmetAlt", + "/Lotus/Upgrades/Skins/Ember/EmberHelmetAltB", + "/Lotus/Upgrades/Skins/Ember/EmberHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Ember/EmberHelmetAltStatless", + "/Lotus/Upgrades/Skins/Ember/EmberNobleAnims", + "/Lotus/Upgrades/Skins/Ember/EmberPrimeHelmet", + "/Lotus/Upgrades/Skins/Ember/EmberPrimeSkin", + "/Lotus/Upgrades/Skins/Ember/EmberSkin", + "/Lotus/Upgrades/Skins/Ember/EmberVoidshellHelmet", + "/Lotus/Upgrades/Skins/Ember/EmberVoidshellSkin", + "/Lotus/Upgrades/Skins/Ember/SWIgnitionHelmet", + "/Lotus/Upgrades/Skins/Ember/SWIgnitionSkin", + "/Lotus/Upgrades/Skins/Ember/SWMagestyHelmet", + "/Lotus/Upgrades/Skins/Ember/SWMagestySkin", + "/Lotus/Upgrades/Skins/Ember/SWRSixEmberGraxxHelmet", + "/Lotus/Upgrades/Skins/Ember/SWRSixEmberGraxxSkin", + "/Lotus/Upgrades/Skins/Ember/UnlockEmberAgile", + "/Lotus/Upgrades/Skins/Ember/UnlockEmberNoble", + "/Lotus/Upgrades/Skins/Events/AcolyteStalkerMios", + "/Lotus/Upgrades/Skins/Events/ArchRocketCrossbowGrineer", + "/Lotus/Upgrades/Skins/Events/BlackoutOrthos", + "/Lotus/Upgrades/Skins/Events/BunnyEars", + "/Lotus/Upgrades/Skins/Events/GlaxionPolar", + "/Lotus/Upgrades/Skins/Events/InfQuantaInfestedAladV", + "/Lotus/Upgrades/Skins/Events/PremiumBunnyEars", + "/Lotus/Upgrades/Skins/Events/WolfStalkerMask", + "/Lotus/Upgrades/Skins/Excalibur/DiscordExcalibur", + "/Lotus/Upgrades/Skins/Excalibur/DiscordExcaliburHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburAgileAnims", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburAlternateSkin", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeAgileAnims", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeNobleAnims", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeSkin", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeSugatra", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDexHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDexSkin", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAlt", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAltB", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAltStatless", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetMordred", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetSWROne", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburNobleAnims", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburPrimeAlabasterSkin", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburPrimeHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburPrimeSkin", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburProtoHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburProtoSuit", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburSkin", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraAgileAnims", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraAltHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraNobleAnims", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburVeilBreakerHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ExcaliburVeilBreakerSkin", + "/Lotus/Upgrades/Skins/Excalibur/NintendoExcalibur", + "/Lotus/Upgrades/Skins/Excalibur/NintendoExcaliburHelmet", + "/Lotus/Upgrades/Skins/Excalibur/ObsidianExcaliburHelmetB", + "/Lotus/Upgrades/Skins/Excalibur/ObsidianExcaliburSkinB", + "/Lotus/Upgrades/Skins/Excalibur/SWArturiusExcaliburHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWCorpraHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWCorpraSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWExaltationHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWExaltationSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWExcaliburBotLHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWExcaliburBotLSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWIonExcaliburHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWIonExcaliburSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWIsurusExcaliburHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWOgrantExcaliburHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburApexHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburApexSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburCadutoHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburCadutoSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburGraxxHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburGraxxSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWRFourGraxxAltHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWROneExcaliburSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWRThreeSentientSlayerHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWRThreeSentientSlayerSkin", + "/Lotus/Upgrades/Skins/Excalibur/SWRoninHelmet", + "/Lotus/Upgrades/Skins/Excalibur/SWRoninSkin", + "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburAgile", + "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeAgile", + "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeNoble", + "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburNoble", + "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraAgile", + "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraNoble", + "/Lotus/Upgrades/Skins/Fairy/FaerieAltHelm", + "/Lotus/Upgrades/Skins/Fairy/FairyAgileAnims", + "/Lotus/Upgrades/Skins/Fairy/FairyAltHelmet", + "/Lotus/Upgrades/Skins/Fairy/FairyHelmet", + "/Lotus/Upgrades/Skins/Fairy/FairyNobleAnims", + "/Lotus/Upgrades/Skins/Fairy/FairySkin", + "/Lotus/Upgrades/Skins/Fairy/SWLympharisHelmet", + "/Lotus/Upgrades/Skins/Fairy/SWLympharisSkin", + "/Lotus/Upgrades/Skins/Fairy/SWPixialystHelmet", + "/Lotus/Upgrades/Skins/Fairy/SWPixialystSkin", + "/Lotus/Upgrades/Skins/Fairy/SWUnseelieHelmet", + "/Lotus/Upgrades/Skins/Fairy/SWUnseelieSkin", + "/Lotus/Upgrades/Skins/Fairy/SWVirajiHelmet", + "/Lotus/Upgrades/Skins/Fairy/SolsticeFairySkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeArchwingPistolsSkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeArchwingSwordSkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeGunbladeSkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIArchwingPistolsSkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIArchwingSwordSkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIAuxWings", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIHelmet", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIISkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeSkin", + "/Lotus/Upgrades/Skins/Fairy/TitaniaPrimeHelmet", + "/Lotus/Upgrades/Skins/Fairy/TitaniaPrimeSkin", + "/Lotus/Upgrades/Skins/Fairy/UnlockFairyAgile", + "/Lotus/Upgrades/Skins/Fairy/UnlockFairyNoble", + "/Lotus/Upgrades/Skins/Festivities/JingleKnuckles", + "/Lotus/Upgrades/Skins/Festivities/PumpkinHead", + "/Lotus/Upgrades/Skins/Festivities/XmasGlaxion", + "/Lotus/Upgrades/Skins/Festivities/XmasSonicor", + "/Lotus/Upgrades/Skins/Frost/FrostAgileAnims", + "/Lotus/Upgrades/Skins/Frost/FrostAlternateSkin", + "/Lotus/Upgrades/Skins/Frost/FrostDeluxeHelmet", + "/Lotus/Upgrades/Skins/Frost/FrostDeluxeSuit", + "/Lotus/Upgrades/Skins/Frost/FrostHeirloomHelmet", + "/Lotus/Upgrades/Skins/Frost/FrostHeirloomSkin", + "/Lotus/Upgrades/Skins/Frost/FrostHelmet", + "/Lotus/Upgrades/Skins/Frost/FrostHelmetAlt", + "/Lotus/Upgrades/Skins/Frost/FrostHelmetAltB", + "/Lotus/Upgrades/Skins/Frost/FrostHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Frost/FrostHelmetAltStatless", + "/Lotus/Upgrades/Skins/Frost/FrostNobleAnims", + "/Lotus/Upgrades/Skins/Frost/FrostPrimeBodyCoat", + "/Lotus/Upgrades/Skins/Frost/FrostPrimeHelmet", + "/Lotus/Upgrades/Skins/Frost/FrostPrimeLegsCoat", + "/Lotus/Upgrades/Skins/Frost/FrostPrimeSkin", + "/Lotus/Upgrades/Skins/Frost/FrostSkin", + "/Lotus/Upgrades/Skins/Frost/FrostVoidShellHelmet", + "/Lotus/Upgrades/Skins/Frost/FrostVoidShellSkin", + "/Lotus/Upgrades/Skins/Frost/FrostXmasSkin", + "/Lotus/Upgrades/Skins/Frost/NintendoFrost", + "/Lotus/Upgrades/Skins/Frost/NintendoFrostHelmet", + "/Lotus/Upgrades/Skins/Frost/SWFrostStrigidSkin", + "/Lotus/Upgrades/Skins/Frost/SWHimavatHelmet", + "/Lotus/Upgrades/Skins/Frost/SWHisameHelmet", + "/Lotus/Upgrades/Skins/Frost/SWHisameSkin", + "/Lotus/Upgrades/Skins/Frost/SWIonFrostHelmet", + "/Lotus/Upgrades/Skins/Frost/SWIonFrostSkin", + "/Lotus/Upgrades/Skins/Frost/SWMantaZHelmet", + "/Lotus/Upgrades/Skins/Frost/SWRFourFrostJotunHelmet", + "/Lotus/Upgrades/Skins/Frost/SWRSixFrostEmperorHelmet", + "/Lotus/Upgrades/Skins/Frost/SWRSixFrostEmperorSkin", + "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostGrostHelmet", + "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostGrostSkin", + "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostHailstormHelmet", + "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostHailstormSkin", + "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostVojnikHelmet", + "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostVojnikSkin", + "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostZastrugaHelmet", + "/Lotus/Upgrades/Skins/Frost/SWStrigidHelmet", + "/Lotus/Upgrades/Skins/Frost/SWSummitHelmet", + "/Lotus/Upgrades/Skins/Frost/UnlockFrostAgile", + "/Lotus/Upgrades/Skins/Frost/UnlockFrostNoble", + "/Lotus/Upgrades/Skins/Garuda/GarudaAgileAnims", + "/Lotus/Upgrades/Skins/Garuda/GarudaAltHelmet", + "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeClawsSkin", + "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeSkin", + "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeWarfanSkin", + "/Lotus/Upgrades/Skins/Garuda/GarudaHelmet", + "/Lotus/Upgrades/Skins/Garuda/GarudaNobleAnims", + "/Lotus/Upgrades/Skins/Garuda/GarudaPrimeHelmet", + "/Lotus/Upgrades/Skins/Garuda/GarudaPrimeSkin", + "/Lotus/Upgrades/Skins/Garuda/GarudaSkin", + "/Lotus/Upgrades/Skins/Garuda/SWGarudaTengushinHelmet", + "/Lotus/Upgrades/Skins/Garuda/SWGarudaTengushinSkin", + "/Lotus/Upgrades/Skins/Garuda/SWSakhuraHelmet", + "/Lotus/Upgrades/Skins/Garuda/SWSuccessorHelmet", + "/Lotus/Upgrades/Skins/Garuda/SWSuccessorSkin", + "/Lotus/Upgrades/Skins/Garuda/SWTiamatHelmet", + "/Lotus/Upgrades/Skins/Garuda/SWTiamatSkin", + "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaAgile", + "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaNoble", + "/Lotus/Upgrades/Skins/Geode/GeodeAgileAnims", + "/Lotus/Upgrades/Skins/Geode/GeodeAltHelmet", + "/Lotus/Upgrades/Skins/Geode/GeodeHelmet", + "/Lotus/Upgrades/Skins/Geode/GeodeNobleAnims", + "/Lotus/Upgrades/Skins/Geode/GeodeSkin", + "/Lotus/Upgrades/Skins/Geode/UnlockGeodeAgile", + "/Lotus/Upgrades/Skins/Geode/UnlockGeodeNoble", + "/Lotus/Upgrades/Skins/Glass/GaraAlternateSkin", + "/Lotus/Upgrades/Skins/Glass/GaraDeluxeSword", + "/Lotus/Upgrades/Skins/Glass/GaraPrimeHelmet", + "/Lotus/Upgrades/Skins/Glass/GaraPrimeSkin", + "/Lotus/Upgrades/Skins/Glass/GlassAgileAnims", + "/Lotus/Upgrades/Skins/Glass/GlassAltHelmet", + "/Lotus/Upgrades/Skins/Glass/GlassDeluxeHelmet", + "/Lotus/Upgrades/Skins/Glass/GlassDeluxeSkin", + "/Lotus/Upgrades/Skins/Glass/GlassDeluxeWings", + "/Lotus/Upgrades/Skins/Glass/GlassHelmet", + "/Lotus/Upgrades/Skins/Glass/GlassNobleAnims", + "/Lotus/Upgrades/Skins/Glass/GlassSkin", + "/Lotus/Upgrades/Skins/Glass/SWGaraAdoraHelmet", + "/Lotus/Upgrades/Skins/Glass/SWRouenHelmet", + "/Lotus/Upgrades/Skins/Glass/SWSilicaHelmet", + "/Lotus/Upgrades/Skins/Glass/SWZamariuHelmet", + "/Lotus/Upgrades/Skins/Glass/SWZamariuSkin", + "/Lotus/Upgrades/Skins/Glass/UnlockGlassAgile", + "/Lotus/Upgrades/Skins/Glass/UnlockGlassNoble", + "/Lotus/Upgrades/Skins/GrineerAssaultRifle/NintendoGrineerAssaultRifleSkin", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestAfuris", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestBallistica", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestBoltor", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestBraton", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDethcube", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDualHeatSwords", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDualVastos", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDualZoren", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestFuris", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestHeatDagger", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestHeatSword", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestOrthos", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestParis", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestScindo", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestSoma", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestVasto", + "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestVectis", + "/Lotus/Upgrades/Skins/GrineerUrban/AckBruntGrineerUrbanCamo", + "/Lotus/Upgrades/Skins/GrineerUrban/NukorGrineerUrbanCamo", + "/Lotus/Upgrades/Skins/GrineerUrban/OgrisGrineerUrbanCamo", + "/Lotus/Upgrades/Skins/Guandao/NintendoGaundaoSkin", + "/Lotus/Upgrades/Skins/Gyre/GyreAgileAnims", + "/Lotus/Upgrades/Skins/Gyre/GyreAltHelmetA", + "/Lotus/Upgrades/Skins/Gyre/GyreHelmet", + "/Lotus/Upgrades/Skins/Gyre/GyreNobleAnims", + "/Lotus/Upgrades/Skins/Gyre/GyreSkin", + "/Lotus/Upgrades/Skins/Gyre/SWGyreKuvealMonarchHelmet", + "/Lotus/Upgrades/Skins/Gyre/SWGyreKuvealMonarchSkin", + "/Lotus/Upgrades/Skins/Gyre/UnlockGyreAgile", + "/Lotus/Upgrades/Skins/Gyre/UnlockGyreNoble", + "/Lotus/Upgrades/Skins/Halloween/HalloweenAklato", + "/Lotus/Upgrades/Skins/Halloween/HalloweenAkvasto", + "/Lotus/Upgrades/Skins/Halloween/HalloweenAmprex", + "/Lotus/Upgrades/Skins/Halloween/HalloweenAngstrum", + "/Lotus/Upgrades/Skins/Halloween/HalloweenArchSword", + "/Lotus/Upgrades/Skins/Halloween/HalloweenBasmu", + "/Lotus/Upgrades/Skins/Halloween/HalloweenBoltor", + "/Lotus/Upgrades/Skins/Halloween/HalloweenBraton", + "/Lotus/Upgrades/Skins/Halloween/HalloweenBuzlok", + "/Lotus/Upgrades/Skins/Halloween/HalloweenDaikyu", + "/Lotus/Upgrades/Skins/Halloween/HalloweenDarkDagger", + "/Lotus/Upgrades/Skins/Halloween/HalloweenDarkSplitSword", + "/Lotus/Upgrades/Skins/Halloween/HalloweenDragonNikana", + "/Lotus/Upgrades/Skins/Halloween/HalloweenDread", + "/Lotus/Upgrades/Skins/Halloween/HalloweenDualZoren", + "/Lotus/Upgrades/Skins/Halloween/HalloweenGalatine", + "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaive", + "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaxion", + "/Lotus/Upgrades/Skins/Halloween/HalloweenGorgon", + "/Lotus/Upgrades/Skins/Halloween/HalloweenGrakata", + "/Lotus/Upgrades/Skins/Halloween/HalloweenGram", + "/Lotus/Upgrades/Skins/Halloween/HalloweenGrinlok", + "/Lotus/Upgrades/Skins/Halloween/HalloweenImperator", + "/Lotus/Upgrades/Skins/Halloween/HalloweenJatKittag", + "/Lotus/Upgrades/Skins/Halloween/HalloweenKronen", + "/Lotus/Upgrades/Skins/Halloween/HalloweenKunai", + "/Lotus/Upgrades/Skins/Halloween/HalloweenLato", + "/Lotus/Upgrades/Skins/Halloween/HalloweenLatoVandal", + "/Lotus/Upgrades/Skins/Halloween/HalloweenMarelok", + "/Lotus/Upgrades/Skins/Halloween/HalloweenNikana", + "/Lotus/Upgrades/Skins/Halloween/HalloweenNukor", + "/Lotus/Upgrades/Skins/Halloween/HalloweenOpticor", + "/Lotus/Upgrades/Skins/Halloween/HalloweenOrthos", + "/Lotus/Upgrades/Skins/Halloween/HalloweenParis", + "/Lotus/Upgrades/Skins/Halloween/HalloweenRegorAxeShield", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSarpa", + "/Lotus/Upgrades/Skins/Halloween/HalloweenScindo", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSilvaAndAegis", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSimulor", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSkana", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSobek", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSoma", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSonicor", + "/Lotus/Upgrades/Skins/Halloween/HalloweenSpira", + "/Lotus/Upgrades/Skins/Halloween/HalloweenStradavar", + "/Lotus/Upgrades/Skins/Halloween/HalloweenTonkor", + "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGrakatas", + "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGremlins", + "/Lotus/Upgrades/Skins/Halloween/HalloweenVasto", + "/Lotus/Upgrades/Skins/Halos/PrototypeRaidHalo", + "/Lotus/Upgrades/Skins/Hammer/GrnHammer", + "/Lotus/Upgrades/Skins/Hammer/RhinoDeluxeHammer", + "/Lotus/Upgrades/Skins/Hammer/SolsticeHeliocor", + "/Lotus/Upgrades/Skins/Hammer/SpragHammerSkin", + "/Lotus/Upgrades/Skins/Harkonar/HarkonarGLAPistol", + "/Lotus/Upgrades/Skins/Harkonar/HarkonarGLARifle", + "/Lotus/Upgrades/Skins/Harkonar/HarkonarGrnFlameSpear", + "/Lotus/Upgrades/Skins/Harkonar/HarkonarGrnSpark", + "/Lotus/Upgrades/Skins/Harlequin/HarlequinAgileAnims", + "/Lotus/Upgrades/Skins/Harlequin/HarlequinHelmet", + "/Lotus/Upgrades/Skins/Harlequin/HarlequinHelmetAlt", + "/Lotus/Upgrades/Skins/Harlequin/HarlequinNobleAnims", + "/Lotus/Upgrades/Skins/Harlequin/MirageAltBHelmet", + "/Lotus/Upgrades/Skins/Harlequin/MirageAlternateSkin", + "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeAgileAnims", + "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeHelmet", + "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeNobleAnims", + "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeSkin", + "/Lotus/Upgrades/Skins/Harlequin/MiragePrimeHelmet", + "/Lotus/Upgrades/Skins/Harlequin/MiragePrimeSkin", + "/Lotus/Upgrades/Skins/Harlequin/MirageSkin", + "/Lotus/Upgrades/Skins/Harlequin/MirageVoidShellHelmet", + "/Lotus/Upgrades/Skins/Harlequin/MirageVoidShellSkin", + "/Lotus/Upgrades/Skins/Harlequin/MirageXmasSkin", + "/Lotus/Upgrades/Skins/Harlequin/SWKitsuneHelmet", + "/Lotus/Upgrades/Skins/Harlequin/SWKitsuneSkin", + "/Lotus/Upgrades/Skins/Harlequin/SWMirageKuvaelHelmet", + "/Lotus/Upgrades/Skins/Harlequin/SWMirageKuvaelSkin", + "/Lotus/Upgrades/Skins/Harlequin/SWMithraHelmet", + "/Lotus/Upgrades/Skins/Harlequin/SWMithraSkin", + "/Lotus/Upgrades/Skins/Harlequin/SWMorgaineHelmet", + "/Lotus/Upgrades/Skins/Harlequin/SWMorgaineSkin", + "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageGraxxHelmet", + "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageGraxxSkin", + "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageJolliHelmet", + "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageSigynHelmet", + "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageSigynSkin", + "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinAgile", + "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinNoble", + "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeAgile", + "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeNoble", + "/Lotus/Upgrades/Skins/HeavyAxe/GrnAxe", + "/Lotus/Upgrades/Skins/HolsterCustomizations/ClawsHips", + "/Lotus/Upgrades/Skins/HolsterCustomizations/DaggerHipsL", + "/Lotus/Upgrades/Skins/HolsterCustomizations/DaggerLowerBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/DualDaggerLowerBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/DualDaggerStraight", + "/Lotus/Upgrades/Skins/HolsterCustomizations/DualSwordHighLow", + "/Lotus/Upgrades/Skins/HolsterCustomizations/DualSwordHips", + "/Lotus/Upgrades/Skins/HolsterCustomizations/DualSwordStraight", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GauntletsInPlace", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GlaiveInPlace", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GlaiveUpperBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GreatSwordCrossed", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GreatSwordHips", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GreatSwordUpperBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeHipsL", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeHipsR", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeLowerBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeUpperBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/HalberdCrossed", + "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyHipsL", + "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyHipsR", + "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyLowerBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyUpperBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/KatanaCrossedL", + "/Lotus/Upgrades/Skins/HolsterCustomizations/KatanaCrossedR", + "/Lotus/Upgrades/Skins/HolsterCustomizations/KatanaHipsL", + "/Lotus/Upgrades/Skins/HolsterCustomizations/LongKatanaUpperBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/NunchakuCrossed", + "/Lotus/Upgrades/Skins/HolsterCustomizations/NunchakuHips", + "/Lotus/Upgrades/Skins/HolsterCustomizations/NunchakuLowerBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/PunchKickInPlace", + "/Lotus/Upgrades/Skins/HolsterCustomizations/RapierBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/RapierHipsL", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SawHeavyUpperBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/StaffCrossed", + "/Lotus/Upgrades/Skins/HolsterCustomizations/StaffLowerBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/StaffStraight", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordHipsL", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordHipsR", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordShieldDefault", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordShieldDownward", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordShieldUpward", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordUpperBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordWhipLowerBack", + "/Lotus/Upgrades/Skins/HolsterCustomizations/TonfaCrossed", + "/Lotus/Upgrades/Skins/HolsterCustomizations/TonfaHips", + "/Lotus/Upgrades/Skins/HolsterCustomizations/TonfaUpperBack", + "/Lotus/Upgrades/Skins/Hoplite/HopliteAgileAnims", + "/Lotus/Upgrades/Skins/Hoplite/HopliteAltBHelmet", + "/Lotus/Upgrades/Skins/Hoplite/HopliteAltCHelmet", + "/Lotus/Upgrades/Skins/Hoplite/HopliteAltDHelmet", + "/Lotus/Upgrades/Skins/Hoplite/HopliteHelmet", + "/Lotus/Upgrades/Skins/Hoplite/HopliteNobleAnims", + "/Lotus/Upgrades/Skins/Hoplite/HopliteSkin", + "/Lotus/Upgrades/Skins/Hoplite/StyanaxDeluxeAuxChest", + "/Lotus/Upgrades/Skins/Hoplite/StyanaxDeluxeHelmet", + "/Lotus/Upgrades/Skins/Hoplite/StyanaxDeluxeSkin", + "/Lotus/Upgrades/Skins/Hoplite/StyanaxVoidshellHelmet", + "/Lotus/Upgrades/Skins/Hoplite/StyanaxVoidshellSkin", + "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteAgile", + "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteNoble", + "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraAngry", + "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraFear", + "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraFlower", + "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraSnake", + "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraTeardrop", + "/Lotus/Upgrades/Skins/Horse/ErsatzBodySkinA", + "/Lotus/Upgrades/Skins/Horse/ErsatzBodySkinC", + "/Lotus/Upgrades/Skins/Horse/ErsatzBodySkinDefault", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetA", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetB", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetC", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetD", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseSaddleA", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseSaddleB", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseSaddleC", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailA", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailB", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailC", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailD", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefaultA", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefaultC", + "/Lotus/Upgrades/Skins/Horse/ErsatzHorseWingsA", + "/Lotus/Upgrades/Skins/Horse/GaussDeluxeHorseHelmet", + "/Lotus/Upgrades/Skins/Horse/GaussDeluxeHorseSaddle", + "/Lotus/Upgrades/Skins/Horse/GaussDeluxeHorseTail", + "/Lotus/Upgrades/Skins/Horse/HorseHelmetDrapery", + "/Lotus/Upgrades/Skins/Horse/HorseSaddleDrapery", + "/Lotus/Upgrades/Skins/Horse/HorseTailDrapery", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerA", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerB", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerBaroA", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerBaroB", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerC", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerD", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerE", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerF", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerG", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerH", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerI", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerInfested", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerJ", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerK", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerL", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerM", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerN", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerO", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerP", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoA", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoB", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoC", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoD", + "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerWolf", + "/Lotus/Upgrades/Skins/Hydroid/HydroidAgileAnims", + "/Lotus/Upgrades/Skins/Hydroid/HydroidDeluxeHelmet", + "/Lotus/Upgrades/Skins/Hydroid/HydroidDeluxeSpearGunSkin", + "/Lotus/Upgrades/Skins/Hydroid/HydroidDeluxeSuit", + "/Lotus/Upgrades/Skins/Hydroid/HydroidNobleAnims", + "/Lotus/Upgrades/Skins/Hydroid/HydroidPrimeSkin", + "/Lotus/Upgrades/Skins/Hydroid/HydroidSkin", + "/Lotus/Upgrades/Skins/Hydroid/SWKarkinosHelmet", + "/Lotus/Upgrades/Skins/Hydroid/SWPoseidonHelmet", + "/Lotus/Upgrades/Skins/Hydroid/SWPoseidonSkin", + "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidAgile", + "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidNoble", + "/Lotus/Upgrades/Skins/IAHGames/IAHGamesBratonSkin", + "/Lotus/Upgrades/Skins/Infestation/InfestationAgileAnims", + "/Lotus/Upgrades/Skins/Infestation/InfestationAltHelmet", + "/Lotus/Upgrades/Skins/Infestation/InfestationHelmet", + "/Lotus/Upgrades/Skins/Infestation/InfestationNobleAnims", + "/Lotus/Upgrades/Skins/Infestation/InfestationSkin", + "/Lotus/Upgrades/Skins/Infestation/NidusAltHelmet", + "/Lotus/Upgrades/Skins/Infestation/NidusAlternateSkin", + "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeClawsSkin", + "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeHelmet", + "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeHipCloth", + "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeSkin", + "/Lotus/Upgrades/Skins/Infestation/NidusPrimeHelmet", + "/Lotus/Upgrades/Skins/Infestation/NidusPrimeSkin", + "/Lotus/Upgrades/Skins/Infestation/NidusVoidShellHelmet", + "/Lotus/Upgrades/Skins/Infestation/NidusVoidShellSkin", + "/Lotus/Upgrades/Skins/Infestation/SWKuvealScoungerHelmet", + "/Lotus/Upgrades/Skins/Infestation/SWNidusKuvaelSkin", + "/Lotus/Upgrades/Skins/Infestation/SWNightHunterHelmet", + "/Lotus/Upgrades/Skins/Infestation/SWNightHunterSkin", + "/Lotus/Upgrades/Skins/Infestation/SWTechnocystHelmet", + "/Lotus/Upgrades/Skins/Infestation/SWTechnocystSkin", + "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationAgile", + "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationNoble", + "/Lotus/Upgrades/Skins/IronFrame/HildrynDeluxeAxeSkin", + "/Lotus/Upgrades/Skins/IronFrame/HildrynPrimeHelmet", + "/Lotus/Upgrades/Skins/IronFrame/HildrynPrimeSkin", + "/Lotus/Upgrades/Skins/IronFrame/IronFrameAgileAnims", + "/Lotus/Upgrades/Skins/IronFrame/IronFrameHelmet", + "/Lotus/Upgrades/Skins/IronFrame/IronFrameNobleAnims", + "/Lotus/Upgrades/Skins/IronFrame/IronFrameSkin", + "/Lotus/Upgrades/Skins/IronFrame/SWHildrynSigrunHelmet", + "/Lotus/Upgrades/Skins/IronFrame/SWHildrynSigrunSkin", + "/Lotus/Upgrades/Skins/IronFrame/ShieldAltHelmet", + "/Lotus/Upgrades/Skins/IronFrame/ShieldDeluxeBlastSkin", + "/Lotus/Upgrades/Skins/IronFrame/ShieldDeluxeBodySkin", + "/Lotus/Upgrades/Skins/IronFrame/ShieldDeluxeHelmet", + "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameAgile", + "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameNoble", + "/Lotus/Upgrades/Skins/Jade/JadeAgileAnims", + "/Lotus/Upgrades/Skins/Jade/JadeHelmet", + "/Lotus/Upgrades/Skins/Jade/JadeHelmetAlt", + "/Lotus/Upgrades/Skins/Jade/JadeHelmetAltB", + "/Lotus/Upgrades/Skins/Jade/JadeHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Jade/JadeHelmetAltStatless", + "/Lotus/Upgrades/Skins/Jade/JadeNobleAnims", + "/Lotus/Upgrades/Skins/Jade/NyxAlternateSkin", + "/Lotus/Upgrades/Skins/Jade/NyxDeluxeHelmet", + "/Lotus/Upgrades/Skins/Jade/NyxDeluxeSuit", + "/Lotus/Upgrades/Skins/Jade/NyxNemesisHelmet", + "/Lotus/Upgrades/Skins/Jade/NyxNemesisSuit", + "/Lotus/Upgrades/Skins/Jade/NyxPrimeHelmet", + "/Lotus/Upgrades/Skins/Jade/NyxPrimeSkin", + "/Lotus/Upgrades/Skins/Jade/NyxSkin", + "/Lotus/Upgrades/Skins/Jade/SWAmpulexHelmet", + "/Lotus/Upgrades/Skins/Jade/SWAscophiliaHelmet", + "/Lotus/Upgrades/Skins/Jade/SWAscophiliaSkin", + "/Lotus/Upgrades/Skins/Jade/SWAureliaHelmet", + "/Lotus/Upgrades/Skins/Jade/SWAureliaSkin", + "/Lotus/Upgrades/Skins/Jade/SWAuresHelmet", + "/Lotus/Upgrades/Skins/Jade/SWAuresSkin", + "/Lotus/Upgrades/Skins/Jade/SWCarnifexHelmet", + "/Lotus/Upgrades/Skins/Jade/SWCarnifexSkin", + "/Lotus/Upgrades/Skins/Jade/SWRFourNyxAthenaHelmet", + "/Lotus/Upgrades/Skins/Jade/SWRFourNyxAthenaSkin", + "/Lotus/Upgrades/Skins/Jade/SWRSixNyxGraxxHelmet", + "/Lotus/Upgrades/Skins/Jade/SWRSixNyxGraxxSkin", + "/Lotus/Upgrades/Skins/Jade/SWSaikouHelmet", + "/Lotus/Upgrades/Skins/Jade/SWSaikouSkin", + "/Lotus/Upgrades/Skins/Jade/SWTechnopsycheHelmet", + "/Lotus/Upgrades/Skins/Jade/SWTechnopsycheSkin", + "/Lotus/Upgrades/Skins/Jade/UnlockJadeAgile", + "/Lotus/Upgrades/Skins/Jade/UnlockJadeNoble", + "/Lotus/Upgrades/Skins/KDrive/KDriveVelocipodRareSkin", + "/Lotus/Upgrades/Skins/KDrive/KDriveVelocipodSkin", + "/Lotus/Upgrades/Skins/KDrive/KDriveVelocipodUncommonSkin", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridArmLeftWithACUnit", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridArms", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridBackWithACUnit", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridFront", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridLegs", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourCorpusBack", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourDamagedArms", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourDamagedBack", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourDamagedLegs", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardArms", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardBack", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardFront", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardLegs", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourWinterArmLeft", + "/Lotus/Upgrades/Skins/Kahl/KahlArmourWinterPack", + "/Lotus/Upgrades/Skins/Kahl/KahlBody", + "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchA", + "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchB", + "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchC", + "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchD", + "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchE", + "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchF", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetCorpus", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetDamaged", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetDamagedWithMask", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetHood", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetKavaLich3A", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetMushroom", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetPith", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetStandard", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetTall", + "/Lotus/Upgrades/Skins/Kahl/KahlHelmetWater", + "/Lotus/Upgrades/Skins/Katana/AshNikana", + "/Lotus/Upgrades/Skins/Katana/ExcaliburDeluxeNikana", + "/Lotus/Upgrades/Skins/Katana/UmbraDaxNikana", + "/Lotus/Upgrades/Skins/Katana/UngulataKatana", + "/Lotus/Upgrades/Skins/KatanaSheaths/DragonKatanaSheathLightning", + "/Lotus/Upgrades/Skins/KatanaSheaths/KatanaSheathLightning", + "/Lotus/Upgrades/Skins/Khora/KhoraAgileAnims", + "/Lotus/Upgrades/Skins/Khora/KhoraAltHelmet", + "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeAgileAnims", + "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeHelmet", + "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeKavatSkin", + "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeNobleAnims", + "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeSuit", + "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeVenariSkin", + "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeWhipBladeSkin", + "/Lotus/Upgrades/Skins/Khora/KhoraHelmet", + "/Lotus/Upgrades/Skins/Khora/KhoraNobleAnims", + "/Lotus/Upgrades/Skins/Khora/KhoraPrimeAltHelmet", + "/Lotus/Upgrades/Skins/Khora/KhoraPrimeHelmet", + "/Lotus/Upgrades/Skins/Khora/KhoraPrimeSkin", + "/Lotus/Upgrades/Skins/Khora/KhoraSkin", + "/Lotus/Upgrades/Skins/Khora/SWKhoraFieraHelmet", + "/Lotus/Upgrades/Skins/Khora/SWKhoraGraxxHelmet", + "/Lotus/Upgrades/Skins/Khora/SWKhoraGraxxSkin", + "/Lotus/Upgrades/Skins/Khora/SWKhoraMithraHelmet", + "/Lotus/Upgrades/Skins/Khora/SWKhoraMithraSkin", + "/Lotus/Upgrades/Skins/Khora/SWKhoraOiranHelmet", + "/Lotus/Upgrades/Skins/Khora/SWKhoraOiranSkin", + "/Lotus/Upgrades/Skins/Khora/SWLaveauHelmet", + "/Lotus/Upgrades/Skins/Khora/UnlockKhoraAgile", + "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeAgile", + "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeNoble", + "/Lotus/Upgrades/Skins/Khora/UnlockKhoraNoble", + "/Lotus/Upgrades/Skins/Khora/VenariPrimeSkin", + "/Lotus/Upgrades/Skins/Khora/VenariSkin", + "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiAklato", + "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiBraton", + "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiKunai", + "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiLato", + "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiParis", + "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiSkana", + "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiStaff", + "/Lotus/Upgrades/Skins/Kubrows/Armor/GrineerQueenArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/GrnAmphisKubrowArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/HelminthDeluxeArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorA", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorB", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorBJade", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorBaro", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorC", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorPrisma", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorStalker", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorTrinityDeluxe", + "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorUmbra", + "/Lotus/Upgrades/Skins/Kubrows/Armor/Lunar2022KubrowArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/NightwaveSeason5HarkaKubrowArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/PacifistKubrowArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/PrimeKubrowArmorA", + "/Lotus/Upgrades/Skins/Kubrows/Armor/TnTigrisKubrowArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/Twitch2021IfritKubrowArmor", + "/Lotus/Upgrades/Skins/Kubrows/Armor/WukongPrimeKubrowArmor", + "/Lotus/Upgrades/Skins/Kubrows/Collars/KubrowCollarDefault", + "/Lotus/Upgrades/Skins/Kubrows/Collars/KubrowCollarXmas", + "/Lotus/Upgrades/Skins/Kubrows/Collars/PrimeKubrowCollarA", + "/Lotus/Upgrades/Skins/Kubrows/Fur/ContestKubrowFur", + "/Lotus/Upgrades/Skins/Kubrows/Fur/DaybreakKubrowFur", + "/Lotus/Upgrades/Skins/Kubrows/Fur/SolsticeKubrowFur", + "/Lotus/Upgrades/Skins/Leverian/NezhaLeverian/NezhaLeverianPolearm", + "/Lotus/Upgrades/Skins/Liset/GrineerShip/LisetGrineerShipDefault", + "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeDefault", + "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeGrineerQueens", + "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinIfrit", + "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinNekrognos", + "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader", + "/Lotus/Upgrades/Skins/Liset/Gyroscope/SWXiphosLilieaeSkin", + "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipDefault", + "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinA", + "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinB", + "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinC", + "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinD", + "/Lotus/Upgrades/Skins/Liset/ConquestHoodOrnament", + "/Lotus/Upgrades/Skins/Liset/DexLisetSkin", + "/Lotus/Upgrades/Skins/Liset/InarosLisetSkin", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkyDefault", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinDeluxe", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinGrineerQueens", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinInaros", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinPrimeTrader", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSound", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSplash", + "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinStalker", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinCamo", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinDefault", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinExotic", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinGrineerQueens", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinHalloween", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinInaros", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinIridos", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinNautilus", + "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinPrimeTrader", + "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemB", + "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemC", + "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemD", + "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemDefault", + "/Lotus/Upgrades/Skins/Liset/LisetSkinGrineerQueens", + "/Lotus/Upgrades/Skins/Liset/LisetSkinHalloween", + "/Lotus/Upgrades/Skins/Liset/LisetSkinJade", + "/Lotus/Upgrades/Skins/Liset/LisetSkinKaboom", + "/Lotus/Upgrades/Skins/Liset/LisetSkinKotora", + "/Lotus/Upgrades/Skins/Liset/LisetSkinObsidian", + "/Lotus/Upgrades/Skins/Liset/LisetSkinPrime", + "/Lotus/Upgrades/Skins/Liset/LisetSkinRelayEvent", + "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROne", + "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROneHellkite", + "/Lotus/Upgrades/Skins/Liset/LisetSkinSWRThreeMaltzurOculus", + "/Lotus/Upgrades/Skins/Liset/LisetSkinTwitchPrime", + "/Lotus/Upgrades/Skins/Liset/LisetSkinVoidTrader", + "/Lotus/Upgrades/Skins/Liset/MITWHoodOrnamentA", + "/Lotus/Upgrades/Skins/Liset/MITWShipAttachmentItem", + "/Lotus/Upgrades/Skins/Liset/MaduraiHoodOrnament", + "/Lotus/Upgrades/Skins/Liset/MasteryHoodOrnament", + "/Lotus/Upgrades/Skins/Liset/NaramonHoodOrnament", + "/Lotus/Upgrades/Skins/Liset/NoraShipDefault", + "/Lotus/Upgrades/Skins/Liset/SWHerulystLisetSkin", + "/Lotus/Upgrades/Skins/Liset/SWLilieaeSkin", + "/Lotus/Upgrades/Skins/Liset/SWMantisVammatarSkin", + "/Lotus/Upgrades/Skins/Liset/SWMithraLisetSkin", + "/Lotus/Upgrades/Skins/Liset/SWProtegeLisetSkin", + "/Lotus/Upgrades/Skins/Liset/SWVammatarLisetSkin", + "/Lotus/Upgrades/Skins/Liset/UnairuHoodOrnament", + "/Lotus/Upgrades/Skins/Liset/VazarinHoodOrnament", + "/Lotus/Upgrades/Skins/Liset/ZenurikHoodOrnament", + "/Lotus/Upgrades/Skins/Liset/ZephyrDeluxeShipSkin", + "/Lotus/Upgrades/Skins/Loki/LokiAgileAnims", + "/Lotus/Upgrades/Skins/Loki/LokiAltCloakA", + "/Lotus/Upgrades/Skins/Loki/LokiAltCloakB", + "/Lotus/Upgrades/Skins/Loki/LokiAlternateSkin", + "/Lotus/Upgrades/Skins/Loki/LokiDeluxeHelmet", + "/Lotus/Upgrades/Skins/Loki/LokiDeluxeSuit", + "/Lotus/Upgrades/Skins/Loki/LokiEnigmaHelmet", + "/Lotus/Upgrades/Skins/Loki/LokiHelmet", + "/Lotus/Upgrades/Skins/Loki/LokiHelmetAlt", + "/Lotus/Upgrades/Skins/Loki/LokiHelmetAltB", + "/Lotus/Upgrades/Skins/Loki/LokiHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Loki/LokiHelmetAltStatless", + "/Lotus/Upgrades/Skins/Loki/LokiNobleAnims", + "/Lotus/Upgrades/Skins/Loki/LokiPrimeHelmet", + "/Lotus/Upgrades/Skins/Loki/LokiPrimeSkin", + "/Lotus/Upgrades/Skins/Loki/LokiSkin", + "/Lotus/Upgrades/Skins/Loki/LokiTwitchHelmet", + "/Lotus/Upgrades/Skins/Loki/LokiTwitchSkin", + "/Lotus/Upgrades/Skins/Loki/LokiVoidShellHelmet", + "/Lotus/Upgrades/Skins/Loki/LokiVoidShellSkin", + "/Lotus/Upgrades/Skins/Loki/NintendoLoki", + "/Lotus/Upgrades/Skins/Loki/NintendoLokitHelmet", + "/Lotus/Upgrades/Skins/Loki/SWErebusHelmet", + "/Lotus/Upgrades/Skins/Loki/SWErebusSkin", + "/Lotus/Upgrades/Skins/Loki/SWIncubusHelmet", + "/Lotus/Upgrades/Skins/Loki/SWIncubusSkin", + "/Lotus/Upgrades/Skins/Loki/SWJotunheimHelmet", + "/Lotus/Upgrades/Skins/Loki/SWJotunheimSkin", + "/Lotus/Upgrades/Skins/Loki/SWKodamaHelmet", + "/Lotus/Upgrades/Skins/Loki/SWKodamaSkin", + "/Lotus/Upgrades/Skins/Loki/SWLupuHelmet", + "/Lotus/Upgrades/Skins/Loki/SWRFiveLokiRogueHelmet", + "/Lotus/Upgrades/Skins/Loki/SWRFourLokiErsatzHelmet", + "/Lotus/Upgrades/Skins/Loki/UnlockLokiAgile", + "/Lotus/Upgrades/Skins/Loki/UnlockLokiNoble", + "/Lotus/Upgrades/Skins/Lotus/EidolonLotusSkin", + "/Lotus/Upgrades/Skins/Lotus/HalloweenLotusSkin", + "/Lotus/Upgrades/Skins/Lotus/LotusHelmet", + "/Lotus/Upgrades/Skins/Lotus/LotusSkin", + "/Lotus/Upgrades/Skins/Lotus/NewWarLotusSkin", + "/Lotus/Upgrades/Skins/Lotus/SentientLotusSkin", + "/Lotus/Upgrades/Skins/Lotus/UnmaskedLotusSkin", + "/Lotus/Upgrades/Skins/Lotus/XakuDeluxeLotusSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", + "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Nukor", + "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Ogris", + "/Lotus/Upgrades/Skins/LunarNewYear/LNYHookSword", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022IgnisSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022Zarr", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CedoSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CernosSkin", + "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", + "/Lotus/Upgrades/Skins/Lunaro/ArcataSkinA", + "/Lotus/Upgrades/Skins/Mag/DiscordMag", + "/Lotus/Upgrades/Skins/Mag/DiscordMagHelmet", + "/Lotus/Upgrades/Skins/Mag/MagAgileAnims", + "/Lotus/Upgrades/Skins/Mag/MagAlternateSkin", + "/Lotus/Upgrades/Skins/Mag/MagDeluxeHelmet", + "/Lotus/Upgrades/Skins/Mag/MagDeluxeSkin", + "/Lotus/Upgrades/Skins/Mag/MagDeluxeTonfaSkin", + "/Lotus/Upgrades/Skins/Mag/MagHeirloomHelmet", + "/Lotus/Upgrades/Skins/Mag/MagHeirloomSkin", + "/Lotus/Upgrades/Skins/Mag/MagHelmet", + "/Lotus/Upgrades/Skins/Mag/MagHelmetAlt", + "/Lotus/Upgrades/Skins/Mag/MagHelmetAltB", + "/Lotus/Upgrades/Skins/Mag/MagHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Mag/MagHelmetAltStatless", + "/Lotus/Upgrades/Skins/Mag/MagNobleAnims", + "/Lotus/Upgrades/Skins/Mag/MagPrimeHelmet", + "/Lotus/Upgrades/Skins/Mag/MagPrimeSkin", + "/Lotus/Upgrades/Skins/Mag/MagSkin", + "/Lotus/Upgrades/Skins/Mag/MagVoidShellHelmet", + "/Lotus/Upgrades/Skins/Mag/MagVoidShellSkin", + "/Lotus/Upgrades/Skins/Mag/NintendoMag", + "/Lotus/Upgrades/Skins/Mag/NintendoMagHelmet", + "/Lotus/Upgrades/Skins/Mag/SWAnthroMagHelmet", + "/Lotus/Upgrades/Skins/Mag/SWCorpraMagHelmet", + "/Lotus/Upgrades/Skins/Mag/SWCorpraMagSkin", + "/Lotus/Upgrades/Skins/Mag/SWFerroHelmet", + "/Lotus/Upgrades/Skins/Mag/SWFerroSkin", + "/Lotus/Upgrades/Skins/Mag/SWGraxxMagHelmet", + "/Lotus/Upgrades/Skins/Mag/SWGraxxMagSkin", + "/Lotus/Upgrades/Skins/Mag/SWInductionMagHelmet", + "/Lotus/Upgrades/Skins/Mag/SWMagCelestisHelmet", + "/Lotus/Upgrades/Skins/Mag/SWMagCelestisSkin", + "/Lotus/Upgrades/Skins/Mag/SWROneMagHelmet", + "/Lotus/Upgrades/Skins/Mag/SWROneMagSkin", + "/Lotus/Upgrades/Skins/Mag/SWRThreeAlataHelmet", + "/Lotus/Upgrades/Skins/Mag/SWRThreeAlataSkin", + "/Lotus/Upgrades/Skins/Mag/SWRThreeDipoleSkin", + "/Lotus/Upgrades/Skins/Mag/SWRThreeOrbitHelmet", + "/Lotus/Upgrades/Skins/Mag/SWToroidalMagHelmet", + "/Lotus/Upgrades/Skins/Mag/UnlockMagAgile", + "/Lotus/Upgrades/Skins/Mag/UnlockMagNoble", + "/Lotus/Upgrades/Skins/Magician/LimboDeluxeHelmet", + "/Lotus/Upgrades/Skins/Magician/LimboDeluxeSkin", + "/Lotus/Upgrades/Skins/Magician/LimboImmortalSkin", + "/Lotus/Upgrades/Skins/Magician/LimboPrimeHelmet", + "/Lotus/Upgrades/Skins/Magician/LimboPrimeSkin", + "/Lotus/Upgrades/Skins/Magician/LimboVoidshellHelmet", + "/Lotus/Upgrades/Skins/Magician/LimboVoidshellSkin", + "/Lotus/Upgrades/Skins/Magician/MagicianAgileAnims", + "/Lotus/Upgrades/Skins/Magician/MagicianAltBHelmet", + "/Lotus/Upgrades/Skins/Magician/MagicianAristeasHelmet", + "/Lotus/Upgrades/Skins/Magician/MagicianHelmet", + "/Lotus/Upgrades/Skins/Magician/MagicianNobleAnims", + "/Lotus/Upgrades/Skins/Magician/MagicianSkin", + "/Lotus/Upgrades/Skins/Magician/SWAureolusHelmet", + "/Lotus/Upgrades/Skins/Magician/SWLimboGraxxHelmet", + "/Lotus/Upgrades/Skins/Magician/SWLimboGraxxSkin", + "/Lotus/Upgrades/Skins/Magician/SWVasionaHelmet", + "/Lotus/Upgrades/Skins/Magician/SWVasionaSkin", + "/Lotus/Upgrades/Skins/Magician/SWVenariHelmet", + "/Lotus/Upgrades/Skins/Magician/SWVistyxioHelmet", + "/Lotus/Upgrades/Skins/Magician/SWVistyxioSkin", + "/Lotus/Upgrades/Skins/Magician/UnlockMagicianAgile", + "/Lotus/Upgrades/Skins/Magician/UnlockMagicianNoble", + "/Lotus/Upgrades/Skins/MeleeDangles/BaroInarosMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/BaroMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/CatenoPrimeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/CephalonSugatraDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/ChainTridentMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/ChromaDeluxeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/CitrineSugatra", + "/Lotus/Upgrades/Skins/MeleeDangles/CordsMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/CorpusMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/ESGrnSugatraMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/EmbolistMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/FireMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/GrnMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/GrnQueensMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/IceMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/InfShellSugatraMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/InfestedMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/JadePatikaMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/KazeruPrimeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/LNYBirdSugatra", + "/Lotus/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", + "/Lotus/Upgrades/Skins/MeleeDangles/LimboDeluxeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/LotusPointMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/MoonWarfanSugatraMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/NekrosDeluxeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/NikanaPrimeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/Obsidian2SugatraMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/ObsidianSugatraMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/PolearmFriendlyMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/PrimeDangleEMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/PrimeDangleF", + "/Lotus/Upgrades/Skins/MeleeDangles/PrimeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/RazorMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/SarynDeluxeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/SentSugatraNewWarDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/SugatraNintendo", + "/Lotus/Upgrades/Skins/MeleeDangles/SurakaPrimeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/TennoCon2022SugatraMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/TennoMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/TnRailJackSugatra", + "/Lotus/Upgrades/Skins/MeleeDangles/TnSugatraNewPlayerXpMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/TwitchPrimeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/ValaPrimeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/VaubanDeluxeMeleeDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", + "/Lotus/Upgrades/Skins/MeleeDangles/XBoxSugatra2MeleeDangle", + "/Lotus/Upgrades/Skins/Miscellaneous/HuntsmanSoma", + "/Lotus/Upgrades/Skins/MoaPet/BaroMoaPetSkin", + "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityA", + "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityB", + "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityC", + "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityD", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingAgileAnims", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingAltHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingAltHelmetB", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingChamelionHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingChamelionSkin", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingNobleAnims", + "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingSkin", + "/Lotus/Upgrades/Skins/MonkeyKing/SWAumanHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/SWAumanSkin", + "/Lotus/Upgrades/Skins/MonkeyKing/SWPiercingEyeHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/SWPiercingEyeSkin", + "/Lotus/Upgrades/Skins/MonkeyKing/SWRFiveWukongXingzheHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/SWWukongMithraHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/SWWukongMithraSkin", + "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingAgile", + "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingNoble", + "/Lotus/Upgrades/Skins/MonkeyKing/WukongDeluxeHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/WukongDeluxeSkin", + "/Lotus/Upgrades/Skins/MonkeyKing/WukongDeluxeStaffSkin", + "/Lotus/Upgrades/Skins/MonkeyKing/WukongPrimeHelmet", + "/Lotus/Upgrades/Skins/MonkeyKing/WukongPrimeSkin", + "/Lotus/Upgrades/Skins/Mustache/Stache", + "/Lotus/Upgrades/Skins/Mustache/Stache02", + "/Lotus/Upgrades/Skins/Mustache/Stache03", + "/Lotus/Upgrades/Skins/Mustache/Stache04", + "/Lotus/Upgrades/Skins/Mustache/Stache05", + "/Lotus/Upgrades/Skins/Mustache/Stache06", + "/Lotus/Upgrades/Skins/Mustache/Stache07", + "/Lotus/Upgrades/Skins/Mustache/Stache08", + "/Lotus/Upgrades/Skins/Mustache/Stache09", + "/Lotus/Upgrades/Skins/Mustache/Stache10", + "/Lotus/Upgrades/Skins/Necramech/MechWeapon/MechEventCortegeSkin", + "/Lotus/Upgrades/Skins/Necramech/MechWeapon/MechEventMausolonSkin", + "/Lotus/Upgrades/Skins/Necramech/MechWeapon/MechEventMorghaSkin", + "/Lotus/Upgrades/Skins/Necramech/InfestedNecraMechHelmet", + "/Lotus/Upgrades/Skins/Necramech/InfestedNecraMechSkin", + "/Lotus/Upgrades/Skins/Necramech/NecraMechCHelmetA", + "/Lotus/Upgrades/Skins/Necramech/NecraMechCHelmetB", + "/Lotus/Upgrades/Skins/Necramech/NecraMechCSkin", + "/Lotus/Upgrades/Skins/Necramech/NecramechSnakeHelmet", + "/Lotus/Upgrades/Skins/Necramech/NecramechSnakeSkin", + "/Lotus/Upgrades/Skins/Necramech/NecramechVoidRigDefaultHelmet", + "/Lotus/Upgrades/Skins/Necramech/NecramechVoidRigDefaultSkin", + "/Lotus/Upgrades/Skins/Necramech/TefilahIridosHelmet", + "/Lotus/Upgrades/Skins/Necramech/TefilahIridosSkin", + "/Lotus/Upgrades/Skins/Necramech/ThanomechVoidRigDefaultHelmet", + "/Lotus/Upgrades/Skins/Necramech/ThanomechVoidRigDefaultSkin", + "/Lotus/Upgrades/Skins/Necramech/VoidrigDOTDHelmet", + "/Lotus/Upgrades/Skins/Necramech/VoidrigDOTDSkin", + "/Lotus/Upgrades/Skins/Necramech/VoidrigDSChromaHelmet", + "/Lotus/Upgrades/Skins/Necramech/VoidrigDSChromaSkin", + "/Lotus/Upgrades/Skins/Necro/NecroAgileAnims", + "/Lotus/Upgrades/Skins/Necro/NecroAraknidHelmet", + "/Lotus/Upgrades/Skins/Necro/NecroDangles", + "/Lotus/Upgrades/Skins/Necro/NecroHelmet", + "/Lotus/Upgrades/Skins/Necro/NecroNobleAnims", + "/Lotus/Upgrades/Skins/Necro/NecroShroudHelmet", + "/Lotus/Upgrades/Skins/Necro/NekrosAlternateSkin", + "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeDangles", + "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeHelmet", + "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeScytheSkin", + "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeSkin", + "/Lotus/Upgrades/Skins/Necro/NekrosPrimeHelmet", + "/Lotus/Upgrades/Skins/Necro/NekrosPrimeSkin", + "/Lotus/Upgrades/Skins/Necro/NekrosSkin", + "/Lotus/Upgrades/Skins/Necro/NekrosVoidShellHelmet", + "/Lotus/Upgrades/Skins/Necro/NekrosVoidShellSkin", + "/Lotus/Upgrades/Skins/Necro/SWCharonHelmet", + "/Lotus/Upgrades/Skins/Necro/SWNekrosAusirylystHelmet", + "/Lotus/Upgrades/Skins/Necro/SWNekrosAusirylystSkin", + "/Lotus/Upgrades/Skins/Necro/SWNekrosGraxxHelmet", + "/Lotus/Upgrades/Skins/Necro/SWNekrosGraxxSkin", + "/Lotus/Upgrades/Skins/Necro/SWNekrosIonHelmet", + "/Lotus/Upgrades/Skins/Necro/SWRThreeLazarusHelmet", + "/Lotus/Upgrades/Skins/Necro/SWVisceraNekrosAuxillaryScarf", + "/Lotus/Upgrades/Skins/Necro/UnlockNecroAgile", + "/Lotus/Upgrades/Skins/Necro/UnlockNecroNoble", + "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPBoSkin", + "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPBratonSkin", + "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPKunaiSkin", + "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPLatoSkin", + "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPParisSkin", + "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPSkanaSkin", + "/Lotus/Upgrades/Skins/Nezha/NezhaAgileAnims", + "/Lotus/Upgrades/Skins/Nezha/NezhaAlt2Helmet", + "/Lotus/Upgrades/Skins/Nezha/NezhaAltHelmet", + "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeDaggerSkin", + "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeDualDaggerSkin", + "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeSkin", + "/Lotus/Upgrades/Skins/Nezha/NezhaHelmet", + "/Lotus/Upgrades/Skins/Nezha/NezhaNobleAnims", + "/Lotus/Upgrades/Skins/Nezha/NezhaPrimeHelmet", + "/Lotus/Upgrades/Skins/Nezha/NezhaPrimeSkin", + "/Lotus/Upgrades/Skins/Nezha/NezhaSkin", + "/Lotus/Upgrades/Skins/Nezha/SWDevineHelmet", + "/Lotus/Upgrades/Skins/Nezha/SWDevineSkin", + "/Lotus/Upgrades/Skins/Nezha/SWDracunHelmet", + "/Lotus/Upgrades/Skins/Nezha/SWDracunSkin", + "/Lotus/Upgrades/Skins/Nezha/SWYakshaHelmet", + "/Lotus/Upgrades/Skins/Nezha/SWYakshaSkin", + "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaAgile", + "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaNoble", + "/Lotus/Upgrades/Skins/Nightwatch/NightwatchBrakk", + "/Lotus/Upgrades/Skins/Nightwatch/NightwatchDualCleavers", + "/Lotus/Upgrades/Skins/Nightwatch/NightwatchGrinlok", + "/Lotus/Upgrades/Skins/Nightwatch/NightwatchJatKittag", + "/Lotus/Upgrades/Skins/Nightwatch/NightwatchMachete", + "/Lotus/Upgrades/Skins/Nightwatch/NightwatchMarelok", + "/Lotus/Upgrades/Skins/Nightwatch/NightwatchTonkor", + "/Lotus/Upgrades/Skins/Nightwave/CephPolearmSkin", + "/Lotus/Upgrades/Skins/Nightwave/DayBreakGlaiveSkin", + "/Lotus/Upgrades/Skins/Nightwave/DaybreakCedoSkin", + "/Lotus/Upgrades/Skins/Nightwave/DaybreakGrnBannerScarf", + "/Lotus/Upgrades/Skins/Nightwave/DaybreakNukorSkin", + "/Lotus/Upgrades/Skins/Nightwave/InfHeavyClawsSkin", + "/Lotus/Upgrades/Skins/Nightwave/InfTwoHandedKatanaSkin", + "/Lotus/Upgrades/Skins/Ninja/AshAlternateSkin", + "/Lotus/Upgrades/Skins/Ninja/AshDeluxeHelmet", + "/Lotus/Upgrades/Skins/Ninja/AshDeluxeSkin", + "/Lotus/Upgrades/Skins/Ninja/AshPrimeHelmet", + "/Lotus/Upgrades/Skins/Ninja/AshPrimeSkin", + "/Lotus/Upgrades/Skins/Ninja/NinjaAgileAnims", + "/Lotus/Upgrades/Skins/Ninja/NinjaAltCloakA", + "/Lotus/Upgrades/Skins/Ninja/NinjaAltCloakB", + "/Lotus/Upgrades/Skins/Ninja/NinjaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Ninja/NinjaDeluxeSuit", + "/Lotus/Upgrades/Skins/Ninja/NinjaHelmet", + "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAlt", + "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAltB", + "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAltStatless", + "/Lotus/Upgrades/Skins/Ninja/NinjaNobleAnims", + "/Lotus/Upgrades/Skins/Ninja/NinjaSkin", + "/Lotus/Upgrades/Skins/Ninja/SWBaihuHelmet", + "/Lotus/Upgrades/Skins/Ninja/SWBaihuSkin", + "/Lotus/Upgrades/Skins/Ninja/SWIchneumonHelmet", + "/Lotus/Upgrades/Skins/Ninja/SWIchneumonSkin", + "/Lotus/Upgrades/Skins/Ninja/SWRSixAshCarabidHelmet", + "/Lotus/Upgrades/Skins/Ninja/SWRyugaHelmet", + "/Lotus/Upgrades/Skins/Ninja/SWRyugaSkin", + "/Lotus/Upgrades/Skins/Ninja/SWTsukuyomiHelmet", + "/Lotus/Upgrades/Skins/Ninja/SWTsukuyomiSkin", + "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaAgile", + "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaNoble", + "/Lotus/Upgrades/Skins/Nvidia/NvidiaBratonSkin", + "/Lotus/Upgrades/Skins/Odalisk/OdaliskAgileAnims", + "/Lotus/Upgrades/Skins/Odalisk/OdaliskAlt2Helmet", + "/Lotus/Upgrades/Skins/Odalisk/OdaliskAltHelmet", + "/Lotus/Upgrades/Skins/Odalisk/OdaliskHelmet", + "/Lotus/Upgrades/Skins/Odalisk/OdaliskNobleAnims", + "/Lotus/Upgrades/Skins/Odalisk/OdaliskSkin", + "/Lotus/Upgrades/Skins/Odalisk/ProteaDeluxeHelmet", + "/Lotus/Upgrades/Skins/Odalisk/ProteaDeluxeSkin", + "/Lotus/Upgrades/Skins/Odalisk/ProteaPrimeAltHelmet", + "/Lotus/Upgrades/Skins/Odalisk/ProteaPrimeHelmet", + "/Lotus/Upgrades/Skins/Odalisk/ProteaPrimeSkin", + "/Lotus/Upgrades/Skins/Odalisk/ProteaVoidShellHelmet", + "/Lotus/Upgrades/Skins/Odalisk/ProteaVoidShellSkin", + "/Lotus/Upgrades/Skins/Odalisk/SWKollapsarHelmet", + "/Lotus/Upgrades/Skins/Odalisk/SWKollapsarSkin", + "/Lotus/Upgrades/Skins/Odalisk/SWTechnochronHelmet", + "/Lotus/Upgrades/Skins/Odalisk/SWTechnochronSkin", + "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskAgile", + "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskNoble", + "/Lotus/Upgrades/Skins/Operator/Accessories/ArbitrationA", + "/Lotus/Upgrades/Skins/Operator/Accessories/ArbitrationB", + "/Lotus/Upgrades/Skins/Operator/Accessories/AshLevarianTiara", + "/Lotus/Upgrades/Skins/Operator/Accessories/BaroHorn", + "/Lotus/Upgrades/Skins/Operator/Accessories/BaroMouthPieceA", + "/Lotus/Upgrades/Skins/Operator/Accessories/BaroTiara", + "/Lotus/Upgrades/Skins/Operator/Accessories/BaroVisor", + "/Lotus/Upgrades/Skins/Operator/Accessories/CircletA", + "/Lotus/Upgrades/Skins/Operator/Accessories/CircletLaurel", + "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceA", + "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceB", + "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceBaroA", + "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceBaroB", + "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceBaroC", + "/Lotus/Upgrades/Skins/Operator/Accessories/ExcaliburDeluxeEarpiece", + "/Lotus/Upgrades/Skins/Operator/Accessories/ExcaliburDeluxeEyepiece", + "/Lotus/Upgrades/Skins/Operator/Accessories/ExcaliburDeluxeMouthPiece", + "/Lotus/Upgrades/Skins/Operator/Accessories/EyepieceA", + "/Lotus/Upgrades/Skins/Operator/Accessories/EyepieceB", + "/Lotus/Upgrades/Skins/Operator/Accessories/EyepieceC", + "/Lotus/Upgrades/Skins/Operator/Accessories/NightWaveEarPieceA", + "/Lotus/Upgrades/Skins/Operator/Accessories/NightWaveEyePieceA", + "/Lotus/Upgrades/Skins/Operator/Accessories/NightWaveMaskA", + "/Lotus/Upgrades/Skins/Operator/Accessories/NoraEarpiece", + "/Lotus/Upgrades/Skins/Operator/Accessories/OperatorNefAnyoMask", + "/Lotus/Upgrades/Skins/Operator/Accessories/PiercingA", + "/Lotus/Upgrades/Skins/Operator/Accessories/PrimeAccessoriesAFacial", + "/Lotus/Upgrades/Skins/Operator/Accessories/PrimeAccessoriesBFacial", + "/Lotus/Upgrades/Skins/Operator/Accessories/PrimeAccessoriesCEar", + "/Lotus/Upgrades/Skins/Operator/Accessories/RevenantDeluxeCrown", + "/Lotus/Upgrades/Skins/Operator/Accessories/RevenantDeluxeMask", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWAuresCrownFacialAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWAuresEarAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWBlazeOculusEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWCaeruleaVisorEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWCorailDiademFacialAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWGarasuEarAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWGarasuFacialAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWIryaEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWJotunheimEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWKiritsuneEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWKonvalystEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWLumisEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWOptimaEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWPapillonEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWPraesidiumFacialAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWScleraOculusEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWVuotoEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/SWYureilystEyeAcc", + "/Lotus/Upgrades/Skins/Operator/Accessories/TempleDots", + "/Lotus/Upgrades/Skins/Operator/Accessories/TempleHornDouble", + "/Lotus/Upgrades/Skins/Operator/Accessories/TempleHornSingle", + "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraBlindfold", + "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraCirclet", + "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraEarpiece", + "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraTiara", + "/Lotus/Upgrades/Skins/Operator/Accessories/VayasPrimeDiadem", + "/Lotus/Upgrades/Skins/Operator/Accessories/VayasPrimeEarpiece", + "/Lotus/Upgrades/Skins/Operator/Accessories/VayasPrimeMask", + "/Lotus/Upgrades/Skins/Operator/Amp/DrifterAmpSkin", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/AdultOperatorAgileAnims", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/AdultOperatorNobleAnims", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/BaseOperatorAnims", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/MaduraiAnims", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/NaramonAnims", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/UnairuAnims", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/VazarinAnims", + "/Lotus/Upgrades/Skins/Operator/AnimationSets/ZenurikAnims", + "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourArms", + "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourBody", + "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourHead", + "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourLegs", + "/Lotus/Upgrades/Skins/Operator/Beards/BeardA", + "/Lotus/Upgrades/Skins/Operator/Beards/BeardB", + "/Lotus/Upgrades/Skins/Operator/Beards/BeardC", + "/Lotus/Upgrades/Skins/Operator/Beards/BeardN", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitA", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultA", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultArabic", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultBase", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultC", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultChameleon", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDaxA", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDaxB", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDeluxeA", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDexOutfit", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDrifterB", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDrifterGrineer", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultG", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultJ", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultK", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultM2022TennoCon", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultNightSuit", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultOutfit1A", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultOutfit3A", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeA", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeB", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeC", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeD", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitArabic", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitB", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitC", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitChameleon", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitD", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitDaxB", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitDexOutfit", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitInfestedA", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitM2022TennoCon", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitN", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitNightSuit", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitO", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitOutfit1A", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitOutfit2A", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitOutfit3A", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitPrimeA", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitPrimeC", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitPrimeD", + "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitZephyrDeluxe", + "/Lotus/Upgrades/Skins/Operator/BodySuits/NoBodySuit", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingA", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingB", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingC", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingD", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingE", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingF", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingG", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingH", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingI", + "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingJ", + "/Lotus/Upgrades/Skins/Operator/Hair/HairA", + "/Lotus/Upgrades/Skins/Operator/Hair/HairAdultN", + "/Lotus/Upgrades/Skins/Operator/Hair/HairAdultNightwave", + "/Lotus/Upgrades/Skins/Operator/Hair/HairAdultNightwaveB", + "/Lotus/Upgrades/Skins/Operator/Hair/HairB", + "/Lotus/Upgrades/Skins/Operator/Hair/HairC", + "/Lotus/Upgrades/Skins/Operator/Hair/HairD", + "/Lotus/Upgrades/Skins/Operator/Hair/HairE", + "/Lotus/Upgrades/Skins/Operator/Hair/HairG", + "/Lotus/Upgrades/Skins/Operator/Hair/HairH", + "/Lotus/Upgrades/Skins/Operator/Hair/HairI", + "/Lotus/Upgrades/Skins/Operator/Hair/HairJ", + "/Lotus/Upgrades/Skins/Operator/Hair/HairK", + "/Lotus/Upgrades/Skins/Operator/Hair/HairL", + "/Lotus/Upgrades/Skins/Operator/Hair/HairM", + "/Lotus/Upgrades/Skins/Operator/Hair/HairN", + "/Lotus/Upgrades/Skins/Operator/Hair/HairO", + "/Lotus/Upgrades/Skins/Operator/Hair/HairP", + "/Lotus/Upgrades/Skins/Operator/Hair/HairRBun", + "/Lotus/Upgrades/Skins/Operator/Hair/HairRBunBraid", + "/Lotus/Upgrades/Skins/Operator/Hair/HairRPonytail", + "/Lotus/Upgrades/Skins/Operator/Hair/HairS", + "/Lotus/Upgrades/Skins/Operator/Hair/HairSLong", + "/Lotus/Upgrades/Skins/Operator/Hair/HairSShort", + "/Lotus/Upgrades/Skins/Operator/Hair/HairTBraid", + "/Lotus/Upgrades/Skins/Operator/Hair/HairTBun", + "/Lotus/Upgrades/Skins/Operator/Hair/HairTPonytail", + "/Lotus/Upgrades/Skins/Operator/Hair/HairUOneBraid", + "/Lotus/Upgrades/Skins/Operator/Hair/HairUThreeBraid", + "/Lotus/Upgrades/Skins/Operator/Hair/HairUTwoBraid", + "/Lotus/Upgrades/Skins/Operator/Hair/HairVOne", + "/Lotus/Upgrades/Skins/Operator/Hair/HairVThree", + "/Lotus/Upgrades/Skins/Operator/Hair/HairVTwo", + "/Lotus/Upgrades/Skins/Operator/Hair/HairWDreadShortTail", + "/Lotus/Upgrades/Skins/Operator/Hair/HairWDreadTail", + "/Lotus/Upgrades/Skins/Operator/Hair/HairWFuzzyBall", + "/Lotus/Upgrades/Skins/Operator/Hair/HairXDreadShortTail", + "/Lotus/Upgrades/Skins/Operator/Hair/HairXDreadTail", + "/Lotus/Upgrades/Skins/Operator/Hair/HairXFuzzyBall", + "/Lotus/Upgrades/Skins/Operator/Hair/HairZ", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadA", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadB", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadC", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadD", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadE", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadF", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadG", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadH", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadI", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadJ", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadK", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadL", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadM", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadA", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadB", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadC", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadD", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadE", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadF", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadG", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadH", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadI", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadJ", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadK", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadL", + "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadM", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadA", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadB", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadC", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadD", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadE", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadF", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadG", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadH", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadI", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadJ", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadK", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadL", + "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadM", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadA", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadB", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadC", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadD", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadE", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadF", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadG", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadH", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadI", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadJ", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadK", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadL", + "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadM", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodA", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultA", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultArabic", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultC", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultChameleon", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDaxA", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDaxB", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDeluxeA", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDrifterB", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDrifterGrineer", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultG", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultJ", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultK", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultM2022TennoCon", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultOutfit1A", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultOutfit3A", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeA", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeB", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeC", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeD", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodArabic", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodB", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodC", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodChameleon", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodD", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDaxB", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDuviriAdultOperator", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDuviriOperator", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodInfestedA", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodLotusWisp", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodM2022TennoCon", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodN", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodNorg", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodO", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodOutfit1A", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodOutfit2A", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodOutfit3A", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodPrimeA", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodPrimeC", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodPrimeD", + "/Lotus/Upgrades/Skins/Operator/Hoods/HoodZephyrDeluxe", + "/Lotus/Upgrades/Skins/Operator/Hoods/JaviExecutionHood", + "/Lotus/Upgrades/Skins/Operator/Hoods/NoHood", + "/Lotus/Upgrades/Skins/Operator/Hoods/UmbraScarfHood", + "/Lotus/Upgrades/Skins/Operator/Hoods/WolfHood", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsA", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultA", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultArabic", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultBase", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultC", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultChameleon", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDaxA", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDaxB", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDeluxeA", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDrifterB", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDrifterGrineer", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultG", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultJ", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultK", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultM2022TennoCon", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultNightSuit", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultOutfit1A", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultOutfit3A", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeA", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeB", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeC", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeD", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsArabic", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsB", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsC", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsChameleon", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsD", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsDaxB", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsInfestedA", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsM2022TennoCon", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsN", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsNightSuit", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsO", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsOutfit1A", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsOutfit2A", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsOutfit3A", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsPrimeA", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsPrimeC", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsPrimeD", + "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsZephyrDeluxe", + "/Lotus/Upgrades/Skins/Operator/Leggings/NoLeggings", + "/Lotus/Upgrades/Skins/Operator/Skirts/HipSocketB", + "/Lotus/Upgrades/Skins/Operator/Skirts/NoSkirt", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultArabic", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultC", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultDaxB", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultG", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultJ", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultK", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultPrimeB", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultPrimeC", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtArabic", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtB", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtDaxB", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtDrifterGrineer", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtE", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtF", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtG", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtJ", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtK", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtN", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtO", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtPrimeB", + "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtPrimeC", + "/Lotus/Upgrades/Skins/Operator/Sleeves/NoSleeves", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesA", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultA", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultArabic", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultBase", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultC", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultChameleon", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDaxA", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDaxB", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDeluxeA", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDrifterB", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDrifterGrineer", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultG", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultJ", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultK", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultM2022Tennocon", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultNightSuit", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultOutfit1A", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultOutfit3A", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeA", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeB", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeC", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeD", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesArabic", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesB", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesC", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesChameleon", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesD", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesDaxB", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesDexOutfit", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesInfestedA", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesM2022TennoCon", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesN", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesNightSuit", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesO", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesOutfit1A", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesOutfit2A", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesOutfit3A", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesPrimeA", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesPrimeC", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesPrimeD", + "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesZephyrDeluxe", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusA", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusB", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusC", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusD", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusE", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriA", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriB", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriC", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriD", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriE", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriF", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriG", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGeode", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGeodeBlack", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGeodeGrey", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerA", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerB", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerC", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerD", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerE", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveFlower", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveFlowerB", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveHeart", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveRose", + "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooTennoG", + "/Lotus/Upgrades/Skins/Operator/OperatorCustomization", + "/Lotus/Upgrades/Skins/Ornate/OrnateArchSword", + "/Lotus/Upgrades/Skins/Ornate/OrnateBallistica", + "/Lotus/Upgrades/Skins/Ornate/OrnateGalatine", + "/Lotus/Upgrades/Skins/Ornate/OrnateImperator", + "/Lotus/Upgrades/Skins/Ornate/OrnateOrthos", + "/Lotus/Upgrades/Skins/Ornate/OrnateTigris", + "/Lotus/Upgrades/Skins/Ornate/OrnateVectis", + "/Lotus/Upgrades/Skins/Ornate/TekeluAkmagnusSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluAkstilettoSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluAkvastoSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluBazaSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluFragorSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluGlaiveSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluGunsenSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluMagnusSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluNikanaSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluPantheraSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluRedeemerSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluStradavarSkin", + "/Lotus/Upgrades/Skins/Ornate/TekeluVastoSkin", + "/Lotus/Upgrades/Skins/Ostron/ExcaliburMask", + "/Lotus/Upgrades/Skins/Ostron/GrineerMask", + "/Lotus/Upgrades/Skins/Ostron/MagMask", + "/Lotus/Upgrades/Skins/Ostron/RevenantMask", + "/Lotus/Upgrades/Skins/Ostron/TrinityMask", + "/Lotus/Upgrades/Skins/Ostron/VoltMask", + "/Lotus/Upgrades/Skins/Pacifist/BaruukDeluxeHelmet", + "/Lotus/Upgrades/Skins/Pacifist/BaruukDeluxeSkin", + "/Lotus/Upgrades/Skins/Pacifist/BaruukDeluxeSparring", + "/Lotus/Upgrades/Skins/Pacifist/BaruukImmortalSkin", + "/Lotus/Upgrades/Skins/Pacifist/BaruukPrimeHelmet", + "/Lotus/Upgrades/Skins/Pacifist/BaruukPrimeSkin", + "/Lotus/Upgrades/Skins/Pacifist/PacifistAgileAnims", + "/Lotus/Upgrades/Skins/Pacifist/PacifistAltHelmet", + "/Lotus/Upgrades/Skins/Pacifist/PacifistHelmet", + "/Lotus/Upgrades/Skins/Pacifist/PacifistNobleAnims", + "/Lotus/Upgrades/Skins/Pacifist/PacifistSkin", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukBotLSkin", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukBotlHelmet", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukGraxxHelmet", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukGraxxSkin", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukPeacemakerHelmet", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukPeacemakerSkin", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukZamariuHelmet", + "/Lotus/Upgrades/Skins/Pacifist/SWBaruukZamariuSkin", + "/Lotus/Upgrades/Skins/Pacifist/SWBedouinHelmet", + "/Lotus/Upgrades/Skins/Pacifist/SWBedouinSkin", + "/Lotus/Upgrades/Skins/Pacifist/SWShiraanHelmet", + "/Lotus/Upgrades/Skins/Pacifist/SWShiraanSkin", + "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistAgile", + "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistNoble", + "/Lotus/Upgrades/Skins/Pagemaster/PagemasterAgileAnims", + "/Lotus/Upgrades/Skins/Pagemaster/PagemasterAltHelmet", + "/Lotus/Upgrades/Skins/Pagemaster/PagemasterHelmet", + "/Lotus/Upgrades/Skins/Pagemaster/PagemasterNobleAnims", + "/Lotus/Upgrades/Skins/Pagemaster/PagemasterSkin", + "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterAgile", + "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterNoble", + "/Lotus/Upgrades/Skins/Paladin/OberonAlternateSkin", + "/Lotus/Upgrades/Skins/Paladin/OberonPS4Alt2Helmet", + "/Lotus/Upgrades/Skins/Paladin/OberonPS4Helmet", + "/Lotus/Upgrades/Skins/Paladin/OberonPS4Skin", + "/Lotus/Upgrades/Skins/Paladin/PaladinAgileAnims", + "/Lotus/Upgrades/Skins/Paladin/PaladinDeluxeHelmet", + "/Lotus/Upgrades/Skins/Paladin/PaladinDeluxeSuit", + "/Lotus/Upgrades/Skins/Paladin/PaladinHelmet", + "/Lotus/Upgrades/Skins/Paladin/PaladinHelmetAlt", + "/Lotus/Upgrades/Skins/Paladin/PaladinHelmetAltB", + "/Lotus/Upgrades/Skins/Paladin/PaladinNobleAnims", + "/Lotus/Upgrades/Skins/Paladin/PaladinPrimeHelmet", + "/Lotus/Upgrades/Skins/Paladin/PaladinPrimeSkin", + "/Lotus/Upgrades/Skins/Paladin/PaladinSkin", + "/Lotus/Upgrades/Skins/Paladin/SWFeroshHelmet", + "/Lotus/Upgrades/Skins/Paladin/SWOberonBotLHelmet", + "/Lotus/Upgrades/Skins/Paladin/SWOberonBotLSkin", + "/Lotus/Upgrades/Skins/Paladin/SWOberonYoukaiHelmet", + "/Lotus/Upgrades/Skins/Paladin/SWOberonYoukaiSkin", + "/Lotus/Upgrades/Skins/Paladin/SWRFiveOberonDestrierHelmet", + "/Lotus/Upgrades/Skins/Paladin/SWTaurusHelmet", + "/Lotus/Upgrades/Skins/Paladin/SWWendigoHelmet", + "/Lotus/Upgrades/Skins/Paladin/SWWendigoSkin", + "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinAgile", + "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinNoble", + "/Lotus/Upgrades/Skins/Parazon/TnRailjackDataKnife", + "/Lotus/Upgrades/Skins/PaxDuviricus/KullervoTwoHandedSwordSkin", + "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusAgileAnims", + "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusAltHelmet", + "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusBodyBlades", + "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusHelmet", + "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusNobleAnims", + "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusSkin", + "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusAgile", + "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusNoble", + "/Lotus/Upgrades/Skins/Pirate/HydroidAlternateSkin", + "/Lotus/Upgrades/Skins/Pirate/HydroidPrimeDefaultHelmet", + "/Lotus/Upgrades/Skins/Pirate/PirateAltBHelmet", + "/Lotus/Upgrades/Skins/Pirate/PirateAltHelmet", + "/Lotus/Upgrades/Skins/Pirate/PirateDefaultHelmet", + "/Lotus/Upgrades/Skins/Pirate/SWGraxxHydroidHelmet", + "/Lotus/Upgrades/Skins/Pirate/SWGraxxHydroidSkin", + "/Lotus/Upgrades/Skins/Pirate/SWRorqualHelmet", + "/Lotus/Upgrades/Skins/Polearm/SWOsirisPolearm", + "/Lotus/Upgrades/Skins/Polearm/SWSkoposPolearm", + "/Lotus/Upgrades/Skins/Polearm/SWUlceratedPolearm", + "/Lotus/Upgrades/Skins/Priest/HarrowDeluxeHelmet", + "/Lotus/Upgrades/Skins/Priest/HarrowDeluxeSuit", + "/Lotus/Upgrades/Skins/Priest/HarrowPrimeHelmet", + "/Lotus/Upgrades/Skins/Priest/HarrowPrimeSkin", + "/Lotus/Upgrades/Skins/Priest/PriestAgileAnims", + "/Lotus/Upgrades/Skins/Priest/PriestAlt2Helmet", + "/Lotus/Upgrades/Skins/Priest/PriestHelmet", + "/Lotus/Upgrades/Skins/Priest/PriestHelmetAlt", + "/Lotus/Upgrades/Skins/Priest/PriestNobleAnims", + "/Lotus/Upgrades/Skins/Priest/PriestSkin", + "/Lotus/Upgrades/Skins/Priest/SWAlgalystHelmet", + "/Lotus/Upgrades/Skins/Priest/SWAlgalystSkin", + "/Lotus/Upgrades/Skins/Priest/SWGraxxHarrowHelmet", + "/Lotus/Upgrades/Skins/Priest/SWGraxxHarrowSkin", + "/Lotus/Upgrades/Skins/Priest/SWHierophaHelmet", + "/Lotus/Upgrades/Skins/Priest/SWVelesHelmet", + "/Lotus/Upgrades/Skins/Priest/SWVelesSkin", + "/Lotus/Upgrades/Skins/Priest/UnlockPriestAgile", + "/Lotus/Upgrades/Skins/Priest/UnlockPriestNoble", + "/Lotus/Upgrades/Skins/Promo/ChangYou/CYRubedoDrakgoonCamo", + "/Lotus/Upgrades/Skins/Promo/ChangYou/CYRubedoGalatineCamo", + "/Lotus/Upgrades/Skins/Promo/ChangYou/CYSingleStaffSkin", + "/Lotus/Upgrades/Skins/Promo/Microsoft/ExcaliburXBoneSkin", + "/Lotus/Upgrades/Skins/Promo/Microsoft/ExcaliburXBoneSkinHelmet", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeCarrier", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeCassowarSkin", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDethcube", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDexDakra", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDexFuris", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDualHeatSwords", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDualKamas", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeFragor", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeGrakata", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeHeatDagger", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeHeatSword", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeInfestedWings", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeKama", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeLatron", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeRhinoHelmet", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeRhinoSkin", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeStealthArchwingSkin", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeTonkor", + "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeTwinGrakatas", + "/Lotus/Upgrades/Skins/Promo/Nintendo/NintendoAklatoSkin", + "/Lotus/Upgrades/Skins/Promo/Nintendo/NintendoSemiAutoSkin", + "/Lotus/Upgrades/Skins/Promo/PCGamer/PCGamerDarkSwordDaggerHybridSkin", + "/Lotus/Upgrades/Skins/Promo/RixtyMOL/RixtyMOLAklatoSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneEtherReaperSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneHateSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneReaperPrimeSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneScytheSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDAcceltraSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDCorvasSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDCycron", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDGammacorSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDSkiajatiSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDSuparna", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDVetalaRevenantArmorA", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDVetalaRevenantArmorC", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDVetalaRevenantArmorL", + "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023SOULGammacorSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumArcaPlasmorSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumAtomosSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumCycronSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumDualKeresSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumFulminSkin", + "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumGramSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/AkjagaraIridosSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/ExcaliburTwitchSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/ExcaliburTwitchSkinHelmet", + "/Lotus/Upgrades/Skins/Promo/Twitch/LisetSkinTwitch", + "/Lotus/Upgrades/Skins/Promo/Twitch/OgrisTwitchSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/PyranaTwitchSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/TigrisTwitchSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/Twitch2021AfurisSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/Twitch2021FurisSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/TwitchAnkyros", + "/Lotus/Upgrades/Skins/Promo/Twitch/TwitchPentaSkin", + "/Lotus/Upgrades/Skins/Promo/Twitch/TwitchRubicoSkin", + "/Lotus/Upgrades/Skins/Promo/Void/AkvastosVoidSkin", + "/Lotus/Upgrades/Skins/Promo/Void/AnkyrosVoidSkin", + "/Lotus/Upgrades/Skins/Promo/Void/TigrisVoidSkin", + "/Lotus/Upgrades/Skins/Promo/Void/VastoVoidSkin", + "/Lotus/Upgrades/Skins/Promo/Warframe/PromoParis", + "/Lotus/Upgrades/Skins/Promo/Warframe/ProtoGlaive", + "/Lotus/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", + "/Lotus/Upgrades/Skins/PvP/Bows/PvPDaikyu", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPBraton", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPGorgon", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPGrinlok", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPKarak", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPLatron", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPOpticor", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPSoma", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPStrun", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPSybaris", + "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPTonkor", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPAckBrunt", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPDragonNikana", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPDualSkana", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPFurax", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPGlaive", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPJatKittag", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPKronen", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPNikana", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPSkana", + "/Lotus/Upgrades/Skins/PvP/Melee/PvPTipedo", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAkLex", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAklato", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAkstiletto", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAkvasto", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAngstrum", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPKraken", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPLato", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPLex", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPMarelok", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPTwinVipers", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPVasto", + "/Lotus/Upgrades/Skins/PvP/Pistols/PvPViper", + "/Lotus/Upgrades/Skins/RailJack/DefaultEngines", + "/Lotus/Upgrades/Skins/RailJack/DefaultReactor", + "/Lotus/Upgrades/Skins/RailJack/EnginesClanC", + "/Lotus/Upgrades/Skins/RailJack/EnginesLavanA", + "/Lotus/Upgrades/Skins/RailJack/EnginesLavanB", + "/Lotus/Upgrades/Skins/RailJack/EnginesLavanC", + "/Lotus/Upgrades/Skins/RailJack/EnginesVidarA", + "/Lotus/Upgrades/Skins/RailJack/EnginesVidarB", + "/Lotus/Upgrades/Skins/RailJack/EnginesVidarC", + "/Lotus/Upgrades/Skins/RailJack/EnginesZektiA", + "/Lotus/Upgrades/Skins/RailJack/EnginesZektiB", + "/Lotus/Upgrades/Skins/RailJack/EnginesZektiC", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsClanA", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsClanB", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsClanC", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsDefault", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsLavanA", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsLavanB", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsLavanC", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsVidarA", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsVidarB", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsVidarC", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsZektiA", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsZektiB", + "/Lotus/Upgrades/Skins/RailJack/HullMaterialsZektiC", + "/Lotus/Upgrades/Skins/RailJack/NimbleEngines", + "/Lotus/Upgrades/Skins/RailJack/RailjackAeronSkin", + "/Lotus/Upgrades/Skins/RailJack/RailjackDefaultSkin", + "/Lotus/Upgrades/Skins/RailJack/RailjackGhostSkin", + "/Lotus/Upgrades/Skins/RailJack/RailjackWrasseSkin", + "/Lotus/Upgrades/Skins/RailJack/ReactorClanA", + "/Lotus/Upgrades/Skins/RailJack/ReactorClanB", + "/Lotus/Upgrades/Skins/RailJack/ReactorClanC", + "/Lotus/Upgrades/Skins/RailJack/ReactorLavanA", + "/Lotus/Upgrades/Skins/RailJack/ReactorLavanB", + "/Lotus/Upgrades/Skins/RailJack/ReactorLavanC", + "/Lotus/Upgrades/Skins/RailJack/ReactorVidarA", + "/Lotus/Upgrades/Skins/RailJack/ReactorVidarB", + "/Lotus/Upgrades/Skins/RailJack/ReactorVidarC", + "/Lotus/Upgrades/Skins/RailJack/ReactorZektiA", + "/Lotus/Upgrades/Skins/RailJack/ReactorZektiB", + "/Lotus/Upgrades/Skins/RailJack/ReactorZektiC", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayA", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayB", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayC", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayDefault", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayLavanA", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayLavanB", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayLavanC", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayVidarA", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayVidarB", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayVidarC", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayZektiA", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayZektiB", + "/Lotus/Upgrades/Skins/RailJack/ShieldArrayZektiC", + "/Lotus/Upgrades/Skins/RailJack/ThrustEngines", + "/Lotus/Upgrades/Skins/Ranger/RangerAgileAnims", + "/Lotus/Upgrades/Skins/Ranger/RangerAlt02Helmet", + "/Lotus/Upgrades/Skins/Ranger/RangerAltCloakA", + "/Lotus/Upgrades/Skins/Ranger/RangerAltCloakB", + "/Lotus/Upgrades/Skins/Ranger/RangerAltHelmet", + "/Lotus/Upgrades/Skins/Ranger/RangerHelmet", + "/Lotus/Upgrades/Skins/Ranger/RangerNobleAnims", + "/Lotus/Upgrades/Skins/Ranger/RangerSkin", + "/Lotus/Upgrades/Skins/Ranger/UnlockRangerAgile", + "/Lotus/Upgrades/Skins/Ranger/UnlockRangerNoble", + "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoAkimboViperCamo", + "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoDrakgoonCamo", + "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoGalatineCamo", + "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoViperCamo", + "/Lotus/Upgrades/Skins/Revenant/RevenantAgileAnims", + "/Lotus/Upgrades/Skins/Revenant/RevenantDeluxeHelmet", + "/Lotus/Upgrades/Skins/Revenant/RevenantDeluxeSkin", + "/Lotus/Upgrades/Skins/Revenant/RevenantHelmet", + "/Lotus/Upgrades/Skins/Revenant/RevenantHelmetAlt", + "/Lotus/Upgrades/Skins/Revenant/RevenantNobleAnims", + "/Lotus/Upgrades/Skins/Revenant/RevenantPrimeHelmet", + "/Lotus/Upgrades/Skins/Revenant/RevenantPrimeSkin", + "/Lotus/Upgrades/Skins/Revenant/RevenantSkin", + "/Lotus/Upgrades/Skins/Revenant/SWAhrimanHelmet", + "/Lotus/Upgrades/Skins/Revenant/SWAhrimanSkin", + "/Lotus/Upgrades/Skins/Revenant/SWDraugenHelmet", + "/Lotus/Upgrades/Skins/Revenant/SWDraugenSkin", + "/Lotus/Upgrades/Skins/Revenant/SWImmortuosHelmet", + "/Lotus/Upgrades/Skins/Revenant/SWRevenantWightHelmet", + "/Lotus/Upgrades/Skins/Revenant/SWRevenantWightSkin", + "/Lotus/Upgrades/Skins/Revenant/SWTenebrusHelmet", + "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantAgile", + "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantNoble", + "/Lotus/Upgrades/Skins/Rhino/ChangYou/CYRhinoRubedoSkin", + "/Lotus/Upgrades/Skins/Rhino/ChangYou/CYRhinoRubedoSkinHelmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoAgileAnims", + "/Lotus/Upgrades/Skins/Rhino/RhinoAlternateSkin", + "/Lotus/Upgrades/Skins/Rhino/RhinoChameleonAHelmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoChameleonASkin", + "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeHelmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeSuit", + "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2AgileAnims", + "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2Helmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2NobleAnims", + "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2Skin", + "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2Wings", + "/Lotus/Upgrades/Skins/Rhino/RhinoDexHelmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoDexSkin", + "/Lotus/Upgrades/Skins/Rhino/RhinoHelmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAlt", + "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAltB", + "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAltStatless", + "/Lotus/Upgrades/Skins/Rhino/RhinoNobleAnims", + "/Lotus/Upgrades/Skins/Rhino/RhinoPrimeHelmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoPrimeSkin", + "/Lotus/Upgrades/Skins/Rhino/RhinoRubedoSkin", + "/Lotus/Upgrades/Skins/Rhino/RhinoRubedoSkinHelmet", + "/Lotus/Upgrades/Skins/Rhino/RhinoSkin", + "/Lotus/Upgrades/Skins/Rhino/SWIonRhinoHelmet", + "/Lotus/Upgrades/Skins/Rhino/SWIonRhinoSkin", + "/Lotus/Upgrades/Skins/Rhino/SWMastodonHelmet", + "/Lotus/Upgrades/Skins/Rhino/SWMastodonSkin", + "/Lotus/Upgrades/Skins/Rhino/SWRFourRhinoGraxxHelmet", + "/Lotus/Upgrades/Skins/Rhino/SWRFourRhinoGraxxSkin", + "/Lotus/Upgrades/Skins/Rhino/SWRFourRhinoVojnikSkin", + "/Lotus/Upgrades/Skins/Rhino/SWRhinoBotLHelmet", + "/Lotus/Upgrades/Skins/Rhino/SWRhinoBotLSkin", + "/Lotus/Upgrades/Skins/Rhino/SWScarabSectHelmet", + "/Lotus/Upgrades/Skins/Rhino/SWScarabSectSkin", + "/Lotus/Upgrades/Skins/Rhino/SWTeutonicHelmet", + "/Lotus/Upgrades/Skins/Rhino/SWWarlustHelmet", + "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoAgile", + "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Agile", + "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Noble", + "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoNoble", + "/Lotus/Upgrades/Skins/Runner/DeluxeAcceltraSkin", + "/Lotus/Upgrades/Skins/Runner/GaussDeluxeHelmet", + "/Lotus/Upgrades/Skins/Runner/GaussDeluxeSkin", + "/Lotus/Upgrades/Skins/Runner/GaussPrimeAltHelmet", + "/Lotus/Upgrades/Skins/Runner/GaussPrimeHelmet", + "/Lotus/Upgrades/Skins/Runner/GaussPrimeSkin", + "/Lotus/Upgrades/Skins/Runner/RunnerAgileAnims", + "/Lotus/Upgrades/Skins/Runner/RunnerAltHelmet", + "/Lotus/Upgrades/Skins/Runner/RunnerHelmet", + "/Lotus/Upgrades/Skins/Runner/RunnerNobleAnims", + "/Lotus/Upgrades/Skins/Runner/RunnerSkin", + "/Lotus/Upgrades/Skins/Runner/SWGaussAgitoHelmet", + "/Lotus/Upgrades/Skins/Runner/SWGaussAgitoSkin", + "/Lotus/Upgrades/Skins/Runner/SWGaussGraxxHelmet", + "/Lotus/Upgrades/Skins/Runner/SWGaussGraxxSkin", + "/Lotus/Upgrades/Skins/Runner/SWGaussNitrolystHelmet", + "/Lotus/Upgrades/Skins/Runner/SWGaussNitrolystSkin", + "/Lotus/Upgrades/Skins/Runner/UnlockRunnerAgile", + "/Lotus/Upgrades/Skins/Runner/UnlockRunnerNoble", + "/Lotus/Upgrades/Skins/Sandman/InarosDeluxeHelmet", + "/Lotus/Upgrades/Skins/Sandman/InarosDeluxeSkin", + "/Lotus/Upgrades/Skins/Sandman/InarosDeluxeSword", + "/Lotus/Upgrades/Skins/Sandman/InarosPrimeHelmet", + "/Lotus/Upgrades/Skins/Sandman/InarosPrimeSkin", + "/Lotus/Upgrades/Skins/Sandman/MummyAlt03Helmet", + "/Lotus/Upgrades/Skins/Sandman/SWHorusHelmet", + "/Lotus/Upgrades/Skins/Sandman/SWHorusSkin", + "/Lotus/Upgrades/Skins/Sandman/SWKephriHelmet", + "/Lotus/Upgrades/Skins/Sandman/SWOzymandiasHelmet", + "/Lotus/Upgrades/Skins/Sandman/SWOzymandiasSkin", + "/Lotus/Upgrades/Skins/Sandman/SandmanAgileAnims", + "/Lotus/Upgrades/Skins/Sandman/SandmanAlt02Helmet", + "/Lotus/Upgrades/Skins/Sandman/SandmanAltHelmet", + "/Lotus/Upgrades/Skins/Sandman/SandmanHelmet", + "/Lotus/Upgrades/Skins/Sandman/SandmanNobleAnims", + "/Lotus/Upgrades/Skins/Sandman/SandmanSkin", + "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanAgile", + "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanNoble", + "/Lotus/Upgrades/Skins/Saryn/SWAmalgamaHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWAmalgamaSkin", + "/Lotus/Upgrades/Skins/Saryn/SWBelladonnaHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWBotLSarynHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWBotLSkin", + "/Lotus/Upgrades/Skins/Saryn/SWIntegraHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWIntegraSkin", + "/Lotus/Upgrades/Skins/Saryn/SWNapellusHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWNapellusSkin", + "/Lotus/Upgrades/Skins/Saryn/SWNitasModaHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWNitasModaSkin", + "/Lotus/Upgrades/Skins/Saryn/SWRSixSarynGraxxHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWRSixSarynGraxxSkin", + "/Lotus/Upgrades/Skins/Saryn/SWSarynIonHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWSarynIonSkin", + "/Lotus/Upgrades/Skins/Saryn/SWSarynNighthunterHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWSarynNighthunterSkin", + "/Lotus/Upgrades/Skins/Saryn/SWVelenosaHelmet", + "/Lotus/Upgrades/Skins/Saryn/SWVelenosaSkin", + "/Lotus/Upgrades/Skins/Saryn/SarynChameleonBHelmet", + "/Lotus/Upgrades/Skins/Saryn/SarynChameleonBSkin", + "/Lotus/Upgrades/Skins/Saryn/SarynDeluxeHelmet", + "/Lotus/Upgrades/Skins/Saryn/SarynDeluxeSuit", + "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearHelmet", + "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", + "/Lotus/Upgrades/Skins/Saryn/SarynPrimeHelmet", + "/Lotus/Upgrades/Skins/Saryn/SarynPrimeSkin", + "/Lotus/Upgrades/Skins/Saryn/SarynSkin", + "/Lotus/Upgrades/Skins/Scarves/AmazonOniSyandana", + "/Lotus/Upgrades/Skins/Scarves/April2015Scarf", + "/Lotus/Upgrades/Skins/Scarves/ArmScarf", + "/Lotus/Upgrades/Skins/Scarves/AtlasDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/BaroCape", + "/Lotus/Upgrades/Skins/Scarves/BaroCape2Scarf", + "/Lotus/Upgrades/Skins/Scarves/BaroCape3Scarf", + "/Lotus/Upgrades/Skins/Scarves/BaruukDeluxeCape", + "/Lotus/Upgrades/Skins/Scarves/BillowingCape", + "/Lotus/Upgrades/Skins/Scarves/BrassAndGoldScarf", + "/Lotus/Upgrades/Skins/Scarves/CenturionCape", + "/Lotus/Upgrades/Skins/Scarves/CephSyandana", + "/Lotus/Upgrades/Skins/Scarves/ConclaveCape", + "/Lotus/Upgrades/Skins/Scarves/CrpAladScarf", + "/Lotus/Upgrades/Skins/Scarves/CrpCubinatorScarf", + "/Lotus/Upgrades/Skins/Scarves/CrpMBundleSyandana", + "/Lotus/Upgrades/Skins/Scarves/CrpModularScarf", + "/Lotus/Upgrades/Skins/Scarves/DeimosSupporterFireFlyBlueScarf", + "/Lotus/Upgrades/Skins/Scarves/DexScarf", + "/Lotus/Upgrades/Skins/Scarves/DinoSpikeScarf", + "/Lotus/Upgrades/Skins/Scarves/EmberDeluxeIISyandana", + "/Lotus/Upgrades/Skins/Scarves/EmberDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/EnergyScarf", + "/Lotus/Upgrades/Skins/Scarves/EnergyScarfVoidSkin", + "/Lotus/Upgrades/Skins/Scarves/EquinoxDeluxeCape", + "/Lotus/Upgrades/Skins/Scarves/ErosionCape", + "/Lotus/Upgrades/Skins/Scarves/FireFlyScarf", + "/Lotus/Upgrades/Skins/Scarves/FlameScarf", + "/Lotus/Upgrades/Skins/Scarves/GarudaCape", + "/Lotus/Upgrades/Skins/Scarves/GarudaDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/GaussDeluxeCape", + "/Lotus/Upgrades/Skins/Scarves/GlassDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/GrineerTurbinesScarf", + "/Lotus/Upgrades/Skins/Scarves/GrnAmphisScarf", + "/Lotus/Upgrades/Skins/Scarves/GrnHoodedCape", + "/Lotus/Upgrades/Skins/Scarves/GrnQueenScarf", + "/Lotus/Upgrades/Skins/Scarves/GrnStrapsScarf", + "/Lotus/Upgrades/Skins/Scarves/GrnTubeScarf", + "/Lotus/Upgrades/Skins/Scarves/GrnVhCape", + "/Lotus/Upgrades/Skins/Scarves/HalloweenErosionCape", + "/Lotus/Upgrades/Skins/Scarves/HalloweenFireFlyScarf", + "/Lotus/Upgrades/Skins/Scarves/HalloweenGrnBannerScarf", + "/Lotus/Upgrades/Skins/Scarves/HalloweenKyropteraScarf", + "/Lotus/Upgrades/Skins/Scarves/HildrynDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/HolidayTurtleNeckScarf", + "/Lotus/Upgrades/Skins/Scarves/HornSkullScarf", + "/Lotus/Upgrades/Skins/Scarves/HornSkullScarfDefault", + "/Lotus/Upgrades/Skins/Scarves/HydroidDeluxeBlazers", + "/Lotus/Upgrades/Skins/Scarves/IceSpikeCape", + "/Lotus/Upgrades/Skins/Scarves/InarosDlxCape", + "/Lotus/Upgrades/Skins/Scarves/InfBatCape", + "/Lotus/Upgrades/Skins/Scarves/InfCoralSyandana", + "/Lotus/Upgrades/Skins/Scarves/InfMembraneCape", + "/Lotus/Upgrades/Skins/Scarves/InfScarfRibCage", + "/Lotus/Upgrades/Skins/Scarves/InfTentacleScarf", + "/Lotus/Upgrades/Skins/Scarves/InfestedFinsScarf", + "/Lotus/Upgrades/Skins/Scarves/IvaraDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/IvaraPrimeCape", + "/Lotus/Upgrades/Skins/Scarves/JadeBombyxScarf", + "/Lotus/Upgrades/Skins/Scarves/JadeSyandana", + "/Lotus/Upgrades/Skins/Scarves/JadeTurtleNeckScarf", + "/Lotus/Upgrades/Skins/Scarves/KazBaroCape", + "/Lotus/Upgrades/Skins/Scarves/KazInfestedScarf", + "/Lotus/Upgrades/Skins/Scarves/KhoraPrimeSyandana", + "/Lotus/Upgrades/Skins/Scarves/LimboDeluxeCape", + "/Lotus/Upgrades/Skins/Scarves/LisetScarf", + "/Lotus/Upgrades/Skins/Scarves/MagDeluxeScarf", + "/Lotus/Upgrades/Skins/Scarves/MesaDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/MixerKyropteraScarf", + "/Lotus/Upgrades/Skins/Scarves/NarmerEvolvingSyandanaACape", + "/Lotus/Upgrades/Skins/Scarves/NarmerEvolvingSyandanaBCape", + "/Lotus/Upgrades/Skins/Scarves/NarmerEvolvingSyandanaCCape", + "/Lotus/Upgrades/Skins/Scarves/NefSyandanaScarf", + "/Lotus/Upgrades/Skins/Scarves/NezhaDeluxeScarf", + "/Lotus/Upgrades/Skins/Scarves/NezhaLeverianCape", + "/Lotus/Upgrades/Skins/Scarves/NidusDeluxeScarf", + "/Lotus/Upgrades/Skins/Scarves/NidusPrimeSyandana", + "/Lotus/Upgrades/Skins/Scarves/NintendoTurtleNeckScarf", + "/Lotus/Upgrades/Skins/Scarves/NoruPrimeScarf", + "/Lotus/Upgrades/Skins/Scarves/NovaDeluxeScarf", + "/Lotus/Upgrades/Skins/Scarves/NovaIIDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/NyxDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/ObsidianAzureScarf", + "/Lotus/Upgrades/Skins/Scarves/ObsidianCrowSyandana", + "/Lotus/Upgrades/Skins/Scarves/ObsidianKyropteraScarf", + "/Lotus/Upgrades/Skins/Scarves/ObsidianSamiaScarf", + "/Lotus/Upgrades/Skins/Scarves/PS4ArmScarf", + "/Lotus/Upgrades/Skins/Scarves/PS5Syandana", + "/Lotus/Upgrades/Skins/Scarves/PacifistSyandana", + "/Lotus/Upgrades/Skins/Scarves/PaxDuviricusSyandana", + "/Lotus/Upgrades/Skins/Scarves/PriestScarf", + "/Lotus/Upgrades/Skins/Scarves/PrimeAkrabuSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeAltraScarf", + "/Lotus/Upgrades/Skins/Scarves/PrimeAviaSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeCapeEquinox", + "/Lotus/Upgrades/Skins/Scarves/PrimeChromaCape", + "/Lotus/Upgrades/Skins/Scarves/PrimeFlameScarf", + "/Lotus/Upgrades/Skins/Scarves/PrimeGrendelSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeInarosSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeLimboCape", + "/Lotus/Upgrades/Skins/Scarves/PrimeNaveScarf", + "/Lotus/Upgrades/Skins/Scarves/PrimeOberonCape", + "/Lotus/Upgrades/Skins/Scarves/PrimeOctaviaSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeRevenantCape", + "/Lotus/Upgrades/Skins/Scarves/PrimeRhoptronSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeScarf", + "/Lotus/Upgrades/Skins/Scarves/PrimeScarfAtlas", + "/Lotus/Upgrades/Skins/Scarves/PrimeScarfF", + "/Lotus/Upgrades/Skins/Scarves/PrimeScarfG", + "/Lotus/Upgrades/Skins/Scarves/PrimeScarfV", + "/Lotus/Upgrades/Skins/Scarves/PrimeSuratorSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeTwitchScarf", + "/Lotus/Upgrades/Skins/Scarves/PrimeWispSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrimeWukongSyandana", + "/Lotus/Upgrades/Skins/Scarves/PrismaRazorScarf", + "/Lotus/Upgrades/Skins/Scarves/QuillCanistersSyandana", + "/Lotus/Upgrades/Skins/Scarves/QuillCape", + "/Lotus/Upgrades/Skins/Scarves/RazorScarf", + "/Lotus/Upgrades/Skins/Scarves/RhinoDeluxeScarf", + "/Lotus/Upgrades/Skins/Scarves/RubedoDinoSpikeScarf", + "/Lotus/Upgrades/Skins/Scarves/SWAkSuraScarf", + "/Lotus/Upgrades/Skins/Scarves/SWAlocanaSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWAlyaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWArcturusScarf", + "/Lotus/Upgrades/Skins/Scarves/SWArmalystSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWAropanexSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWBodoScarf", + "/Lotus/Upgrades/Skins/Scarves/SWBoltaraScarf", + "/Lotus/Upgrades/Skins/Scarves/SWChemtankSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWCoronaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWCovenantScarf", + "/Lotus/Upgrades/Skins/Scarves/SWCryonaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWDeruScarf", + "/Lotus/Upgrades/Skins/Scarves/SWDespotScarf", + "/Lotus/Upgrades/Skins/Scarves/SWDiablilloSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWDisconnectScarf", + "/Lotus/Upgrades/Skins/Scarves/SWDominusCape", + "/Lotus/Upgrades/Skins/Scarves/SWDraugenSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWDueVolpiScarf", + "/Lotus/Upgrades/Skins/Scarves/SWEklisSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWEzrielSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWFeiSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWIcariusScarf", + "/Lotus/Upgrades/Skins/Scarves/SWIncubusScarf", + "/Lotus/Upgrades/Skins/Scarves/SWJotunheimMusic", + "/Lotus/Upgrades/Skins/Scarves/SWJotunheimScarf", + "/Lotus/Upgrades/Skins/Scarves/SWKunshuScarf", + "/Lotus/Upgrades/Skins/Scarves/SWLaprosysSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWMaharliqaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWMithraScarf", + "/Lotus/Upgrades/Skins/Scarves/SWMushussuScarf", + "/Lotus/Upgrades/Skins/Scarves/SWNaruScarf", + "/Lotus/Upgrades/Skins/Scarves/SWNighthunterSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWOfficiumScarf", + "/Lotus/Upgrades/Skins/Scarves/SWPaxisScarf", + "/Lotus/Upgrades/Skins/Scarves/SWPistrisScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRSixSariScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRSixSpitefireScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRThreeAquirosScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRThreeJattukScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRThreeNsaruScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRaijiScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRanulystSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWRepalaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWRetrorolystSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWSarvaHarnessScarf", + "/Lotus/Upgrades/Skins/Scarves/SWScapulisScarf", + "/Lotus/Upgrades/Skins/Scarves/SWSciathinScarf", + "/Lotus/Upgrades/Skins/Scarves/SWScyllaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWSenvictisSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWSeraphimScarf", + "/Lotus/Upgrades/Skins/Scarves/SWSetharSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWSetkaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWShirokuSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWShurihoshiScarf", + "/Lotus/Upgrades/Skins/Scarves/SWSildargScarf", + "/Lotus/Upgrades/Skins/Scarves/SWSolidaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWSovereignScarf", + "/Lotus/Upgrades/Skins/Scarves/SWStyxSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWSydekoScarf", + "/Lotus/Upgrades/Skins/Scarves/SWTenuiSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWTeploScarf", + "/Lotus/Upgrades/Skins/Scarves/SWTonacaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWTsujinasaSyandana", + "/Lotus/Upgrades/Skins/Scarves/SWValestiScarf", + "/Lotus/Upgrades/Skins/Scarves/SWZaikhyaScarf", + "/Lotus/Upgrades/Skins/Scarves/SWZamariuSyandana", + "/Lotus/Upgrades/Skins/Scarves/SamiaTownsunSyandana", + "/Lotus/Upgrades/Skins/Scarves/SapientCape", + "/Lotus/Upgrades/Skins/Scarves/SentSyandanaB", + "/Lotus/Upgrades/Skins/Scarves/ShieldFrameCape", + "/Lotus/Upgrades/Skins/Scarves/SolsticeBaroCape", + "/Lotus/Upgrades/Skins/Scarves/SolsticeCenturionCape", + "/Lotus/Upgrades/Skins/Scarves/SolsticeGrnBannerScarf", + "/Lotus/Upgrades/Skins/Scarves/SolsticeGrnHoodedCape", + "/Lotus/Upgrades/Skins/Scarves/SolsticeNelumboCape", + "/Lotus/Upgrades/Skins/Scarves/SolsticeU17TnoCapeScarf", + "/Lotus/Upgrades/Skins/Scarves/StalkerCapeItem", + "/Lotus/Upgrades/Skins/Scarves/StyanaxDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/SummerSolsticeCenturionCape", + "/Lotus/Upgrades/Skins/Scarves/SummerSolsticeMaggorCape", + "/Lotus/Upgrades/Skins/Scarves/SyndicateAHScarf", + "/Lotus/Upgrades/Skins/Scarves/SyndicateCSScarf", + "/Lotus/Upgrades/Skins/Scarves/SyndicateNLScarf", + "/Lotus/Upgrades/Skins/Scarves/SyndicatePSScarf", + "/Lotus/Upgrades/Skins/Scarves/SyndicateRVScarf", + "/Lotus/Upgrades/Skins/Scarves/SyndicateSMScarf", + "/Lotus/Upgrades/Skins/Scarves/TennoAngleCapeScarf", + "/Lotus/Upgrades/Skins/Scarves/TennoCon2017Scarf", + "/Lotus/Upgrades/Skins/Scarves/TennoCon2020Scarf", + "/Lotus/Upgrades/Skins/Scarves/TennoCon2023Cape", + "/Lotus/Upgrades/Skins/Scarves/TennoCon2024Scarf", + "/Lotus/Upgrades/Skins/Scarves/TennoConScarf", + "/Lotus/Upgrades/Skins/Scarves/TennoFeathersCapeScarf", + "/Lotus/Upgrades/Skins/Scarves/TennoLeafDotCapeScarf", + "/Lotus/Upgrades/Skins/Scarves/TennoWolfBackpack", + "/Lotus/Upgrades/Skins/Scarves/TitaniaDeluxeV2Cape", + "/Lotus/Upgrades/Skins/Scarves/TitaniaPrimeShortSyandana", + "/Lotus/Upgrades/Skins/Scarves/TitaniaPrimeSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnAlchemistSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnAshDeluxe2Syandana", + "/Lotus/Upgrades/Skins/Scarves/TnBrokenFrameSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnConcreteSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnGlassSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnGuandaoScarf", + "/Lotus/Upgrades/Skins/Scarves/TnGyreCape", + "/Lotus/Upgrades/Skins/Scarves/TnKorahSyandanaDeluxe", + "/Lotus/Upgrades/Skins/Scarves/TnLargeCape", + "/Lotus/Upgrades/Skins/Scarves/TnLargeCapeTwitch", + "/Lotus/Upgrades/Skins/Scarves/TnLargeCapeXbox", + "/Lotus/Upgrades/Skins/Scarves/TnLefaucheuxSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnNewPlayerSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnOctaviaDeluxeCape", + "/Lotus/Upgrades/Skins/Scarves/TnOdaliskSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnOniSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnPagemasterSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnPyraV2Syandana", + "/Lotus/Upgrades/Skins/Scarves/TnRailjackSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnSmallBatteryCape", + "/Lotus/Upgrades/Skins/Scarves/TnSparrowCape", + "/Lotus/Upgrades/Skins/Scarves/TnStyanaxSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnSundialCape", + "/Lotus/Upgrades/Skins/Scarves/TnVoltDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnWispDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/TnWraitheSyandana", + "/Lotus/Upgrades/Skins/Scarves/TurtleNeckScarf", + "/Lotus/Upgrades/Skins/Scarves/Twitch2021Syandana", + "/Lotus/Upgrades/Skins/Scarves/TwitchPrimeScarf", + "/Lotus/Upgrades/Skins/Scarves/UmbraDaxSyandana", + "/Lotus/Upgrades/Skins/Scarves/UruPrimeScarf", + "/Lotus/Upgrades/Skins/Scarves/VTDinoSpikeScarf", + "/Lotus/Upgrades/Skins/Scarves/VTHornSkullScarf", + "/Lotus/Upgrades/Skins/Scarves/WraithTurbinesScarf", + "/Lotus/Upgrades/Skins/Scarves/WukongDeluxeSyandana", + "/Lotus/Upgrades/Skins/Scarves/YamakoPrimeScarf", + "/Lotus/Upgrades/Skins/Scarves/YareliCape", + "/Lotus/Upgrades/Skins/Sentient/CalibanAltHelmet", + "/Lotus/Upgrades/Skins/Sentient/SWCalibanScionHelmet", + "/Lotus/Upgrades/Skins/Sentient/SentientAgileAnims", + "/Lotus/Upgrades/Skins/Sentient/SentientHelmet", + "/Lotus/Upgrades/Skins/Sentient/SentientNobleAnims", + "/Lotus/Upgrades/Skins/Sentient/SentientSkin", + "/Lotus/Upgrades/Skins/Sentient/UnlockSentientAgile", + "/Lotus/Upgrades/Skins/Sentient/UnlockSentientNoble", + "/Lotus/Upgrades/Skins/Sentinels/Masks/BaroPetMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/DethcubePrimeMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/GardenerMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/GaussSentinelMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/GunHeadMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/HeimtPrimeSentinelMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/HeliosDeluxeMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/HunhowMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/IctusMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/IctusPrimeMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/InfBatMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/InfNightWaveMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/InfestedMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/KavatPetMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/KubrowMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/LotusMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/MechHeadMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/OrokinMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/ParrotMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/PrimeSentinelMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/PrismaMechHeadMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/ThanoTechMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/TnEmpyreanSocketMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/TnHydroidDlxSentMask", + "/Lotus/Upgrades/Skins/Sentinels/Masks/TwitchSentHeadMask", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultCarrierPrimeSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultCarrierSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDethcubePrimeSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDethcubeSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDirigaSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDjinnSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultHeliosPrimeSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultHeliosSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultOxylusSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultShadePrismaSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultShadeSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultTaxonSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultWyrmPrimeSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultWyrmSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/DesertTaxonSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/GaussSentinelSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/HeliosDeluxe", + "/Lotus/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/LibrarianHelios", + "/Lotus/Upgrades/Skins/Sentinels/Skins/OwlSentinelSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/ThanotechSentinelSkin", + "/Lotus/Upgrades/Skins/Sentinels/Skins/TnHydroidDlxSentSkin", + "/Lotus/Upgrades/Skins/Sentinels/Tails/BaroPetTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/CapsuleTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/ColtekTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/DethcubePrimeTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/FishTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/GardenerTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/GaussSentinelTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/HeimtPrimeSentinelTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/HeliosDeluxeTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/IctusPrimeTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/IctusTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/InfBatTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/InfNightWaveTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/InfestedTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/KavatPetTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/LNYDragonTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/OrokinTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/ParrotTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/PrimeSentinelTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/PrismaFishTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/ThanoTechTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/TnEmpyreanSocketTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/TnHydroidDlxSentTail", + "/Lotus/Upgrades/Skins/Sentinels/Tails/TwitchSentTail", + "/Lotus/Upgrades/Skins/Sentinels/Wings/BaroPetWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/ColtekWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/ColtekWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/DethcubePrimeWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/DethcubePrimeWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/DiamondWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/DiamondWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/DomeWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/DomeWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWingsStatic", + "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWingsStaticRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/GaussSentinelWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/HeimtPrimeSentinelWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/HeliosDeluxeWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusPrimeWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusPrimeWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/InfBatWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/InfNightWaveWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/InfNightWaveWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/InfestedWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/InfestedWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/JetWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/JetWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/KavatPetWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/KavatPetWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/LNYDragonWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/OrokinWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/OrokinWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/ParrotWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/ParrotWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/PrimeSentinelWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/PrimeSentinelWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/PrismaJetWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/PrismaJetWingsRight", + "/Lotus/Upgrades/Skins/Sentinels/Wings/ThanoTechWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/TnEmpyreanSocketWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/TnHydroidDlxSentWings", + "/Lotus/Upgrades/Skins/Sentinels/Wings/TwitchSentWings", + "/Lotus/Upgrades/Skins/Sentinels/CarbuncleDethcubeSkin", + "/Lotus/Upgrades/Skins/Sentinels/GardenerDethcubeSkin", + "/Lotus/Upgrades/Skins/Sentinels/NightwatchDirigaSkin", + "/Lotus/Upgrades/Skins/Sentinels/ParrotCarrierSkin", + "/Lotus/Upgrades/Skins/Sentinels/PersianDjinnSkin", + "/Lotus/Upgrades/Skins/Sentinels/SpriteShadeSkin", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/NecraloidRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/NecraloidRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/NecraloidRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankTwo", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankFive", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankFour", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankOne", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankThree", + "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankTwo", + "/Lotus/Upgrades/Skins/Sigils/AllianceSigilBasic", + "/Lotus/Upgrades/Skins/Sigils/ArchwingSigil", + "/Lotus/Upgrades/Skins/Sigils/BansheeDeluxeSigil", + "/Lotus/Upgrades/Skins/Sigils/BaroKavatSigil", + "/Lotus/Upgrades/Skins/Sigils/BaroKubrowSigil", + "/Lotus/Upgrades/Skins/Sigils/BladeAndGunSigil", + "/Lotus/Upgrades/Skins/Sigils/BloodiedSigil", + "/Lotus/Upgrades/Skins/Sigils/BossSigilAladV", + "/Lotus/Upgrades/Skins/Sigils/BossSigilAmbulas", + "/Lotus/Upgrades/Skins/Sigils/BossSigilCaptainVor", + "/Lotus/Upgrades/Skins/Sigils/BossSigilHyenaPack", + "/Lotus/Upgrades/Skins/Sigils/BossSigilJackal", + "/Lotus/Upgrades/Skins/Sigils/BossSigilKelaDeThaym", + "/Lotus/Upgrades/Skins/Sigils/BossSigilLechKril", + "/Lotus/Upgrades/Skins/Sigils/BossSigilLephantis", + "/Lotus/Upgrades/Skins/Sigils/BossSigilLynx", + "/Lotus/Upgrades/Skins/Sigils/BossSigilNefAnyo", + "/Lotus/Upgrades/Skins/Sigils/BossSigilPhorid", + "/Lotus/Upgrades/Skins/Sigils/BossSigilRaptor", + "/Lotus/Upgrades/Skins/Sigils/BossSigilSargusRuk", + "/Lotus/Upgrades/Skins/Sigils/BossSigilTeralystBig", + "/Lotus/Upgrades/Skins/Sigils/BossSigilTeralystRain", + "/Lotus/Upgrades/Skins/Sigils/BossSigilTylRegor", + "/Lotus/Upgrades/Skins/Sigils/BossSigilVayHek", + "/Lotus/Upgrades/Skins/Sigils/CNYRoosterCYSigil", + "/Lotus/Upgrades/Skins/Sigils/CNYRoosterPWSigil", + "/Lotus/Upgrades/Skins/Sigils/ClanSigilBasic", + "/Lotus/Upgrades/Skins/Sigils/ClanSigilBasicAdd", + "/Lotus/Upgrades/Skins/Sigils/ClanSigilMaskedEffect", + "/Lotus/Upgrades/Skins/Sigils/ClanSigilTwoTone", + "/Lotus/Upgrades/Skins/Sigils/CollectorSigil", + "/Lotus/Upgrades/Skins/Sigils/Community10YearAnniversarySigil", + "/Lotus/Upgrades/Skins/Sigils/ConclaveTacAlertSigilA", + "/Lotus/Upgrades/Skins/Sigils/ConqueraSigil", + "/Lotus/Upgrades/Skins/Sigils/CorpusLichSigil", + "/Lotus/Upgrades/Skins/Sigils/DanteSigil", + "/Lotus/Upgrades/Skins/Sigils/DawnsEarlyLightSigil", + "/Lotus/Upgrades/Skins/Sigils/DeathMarkSigilGrustrag", + "/Lotus/Upgrades/Skins/Sigils/DeathMarkSigilStalker", + "/Lotus/Upgrades/Skins/Sigils/DeathMarkSigilZanuka", + "/Lotus/Upgrades/Skins/Sigils/DogDays2023ASigil", + "/Lotus/Upgrades/Skins/Sigils/DogDays2023BSigil", + "/Lotus/Upgrades/Skins/Sigils/DogDays2023CSigil", + "/Lotus/Upgrades/Skins/Sigils/DogDaysSigil", + "/Lotus/Upgrades/Skins/Sigils/DotD2016Sigil", + "/Lotus/Upgrades/Skins/Sigils/DuvDragonSigil", + "/Lotus/Upgrades/Skins/Sigils/EnergySigilA", + "/Lotus/Upgrades/Skins/Sigils/EnergySigilB", + "/Lotus/Upgrades/Skins/Sigils/EventSigilAmalgam", + "/Lotus/Upgrades/Skins/Sigils/EventSigilAmbulas", + "/Lotus/Upgrades/Skins/Sigils/EventSigilCaviaBirdThree", + "/Lotus/Upgrades/Skins/Sigils/EventSigilCaviaFibonacci", + "/Lotus/Upgrades/Skins/Sigils/EventSigilCaviaTagfer", + "/Lotus/Upgrades/Skins/Sigils/EventSigilFalseProfit", + "/Lotus/Upgrades/Skins/Sigils/EventSigilIndex", + "/Lotus/Upgrades/Skins/Sigils/EventSigilScarletSpear", + "/Lotus/Upgrades/Skins/Sigils/FireSigil", + "/Lotus/Upgrades/Skins/Sigils/FormaSigil", + "/Lotus/Upgrades/Skins/Sigils/FortunaSigil", + "/Lotus/Upgrades/Skins/Sigils/FounderSigilDisciple", + "/Lotus/Upgrades/Skins/Sigils/FounderSigilGrandMaster", + "/Lotus/Upgrades/Skins/Sigils/FounderSigilHunter", + "/Lotus/Upgrades/Skins/Sigils/FounderSigilMaster", + "/Lotus/Upgrades/Skins/Sigils/GeodeSigil", + "/Lotus/Upgrades/Skins/Sigils/GlassmakerSigil", + "/Lotus/Upgrades/Skins/Sigils/Halloween2020Sigil", + "/Lotus/Upgrades/Skins/Sigils/HeirloomSigil", + "/Lotus/Upgrades/Skins/Sigils/HolidaySigilSnowflake", + "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014A", + "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014B", + "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014C", + "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014D", + "/Lotus/Upgrades/Skins/Sigils/HoundingKubrowSigil", + "/Lotus/Upgrades/Skins/Sigils/InktoberSigil", + "/Lotus/Upgrades/Skins/Sigils/KahlSupporterPackSigil", + "/Lotus/Upgrades/Skins/Sigils/KelaEventSigil", + "/Lotus/Upgrades/Skins/Sigils/KuvaLichSigil", + "/Lotus/Upgrades/Skins/Sigils/LoginSigilA", + "/Lotus/Upgrades/Skins/Sigils/LoginSigilB", + "/Lotus/Upgrades/Skins/Sigils/LoginSigilC", + "/Lotus/Upgrades/Skins/Sigils/LoginSigilD", + "/Lotus/Upgrades/Skins/Sigils/LoginSigilE", + "/Lotus/Upgrades/Skins/Sigils/LoginSigilF", + "/Lotus/Upgrades/Skins/Sigils/LotusGuideSigil", + "/Lotus/Upgrades/Skins/Sigils/LotusHeartSigil", + "/Lotus/Upgrades/Skins/Sigils/MasterySigil", + "/Lotus/Upgrades/Skins/Sigils/MasteryStoneSigil", + "/Lotus/Upgrades/Skins/Sigils/MechEventSigil", + "/Lotus/Upgrades/Skins/Sigils/MonquisCYSigil", + "/Lotus/Upgrades/Skins/Sigils/MonquisSigil", + "/Lotus/Upgrades/Skins/Sigils/NarmerEyeSigil", + "/Lotus/Upgrades/Skins/Sigils/NecramechSigilSnake", + "/Lotus/Upgrades/Skins/Sigils/NewWar2021Sigil", + "/Lotus/Upgrades/Skins/Sigils/NoraSeasonTwoSigil", + "/Lotus/Upgrades/Skins/Sigils/ObsidianIndraSigil", + "/Lotus/Upgrades/Skins/Sigils/OpticorConclaveVariantSigil", + "/Lotus/Upgrades/Skins/Sigils/OrbSigil", + "/Lotus/Upgrades/Skins/Sigils/OstronCommunitySigil", + "/Lotus/Upgrades/Skins/Sigils/PS4CrowSigil", + "/Lotus/Upgrades/Skins/Sigils/PS4FiveYearSigil", + "/Lotus/Upgrades/Skins/Sigils/PS4FourYearSigil", + "/Lotus/Upgrades/Skins/Sigils/PS4OneYearSigil", + "/Lotus/Upgrades/Skins/Sigils/PS4RenownXSigil", + "/Lotus/Upgrades/Skins/Sigils/PS4ThreeYearSigil", + "/Lotus/Upgrades/Skins/Sigils/PS4TwoYearSigil", + "/Lotus/Upgrades/Skins/Sigils/PrimeAccessSigilFive", + "/Lotus/Upgrades/Skins/Sigils/PrimeAccessSigilLimbo", + "/Lotus/Upgrades/Skins/Sigils/PrimeAccessSigilSaryn", + "/Lotus/Upgrades/Skins/Sigils/PrimeTraderSigil", + "/Lotus/Upgrades/Skins/Sigils/PrismaLotusFlamesSigil", + "/Lotus/Upgrades/Skins/Sigils/PrismaLotusSigil", + "/Lotus/Upgrades/Skins/Sigils/PrismaLotusVinesSigil", + "/Lotus/Upgrades/Skins/Sigils/ProjectSinisterSigil", + "/Lotus/Upgrades/Skins/Sigils/QTCC2023ConqueraSigil", + "/Lotus/Upgrades/Skins/Sigils/RadioLegionSigil", + "/Lotus/Upgrades/Skins/Sigils/RhinoDeluxeSigil", + "/Lotus/Upgrades/Skins/Sigils/ScarSigil", + "/Lotus/Upgrades/Skins/Sigils/SigilSnake", + "/Lotus/Upgrades/Skins/Sigils/SigilTankAncient", + "/Lotus/Upgrades/Skins/Sigils/SigilVideoContest", + "/Lotus/Upgrades/Skins/Sigils/SomberStalkerSigil", + "/Lotus/Upgrades/Skins/Sigils/SparkSigil", + "/Lotus/Upgrades/Skins/Sigils/StarterPackASigil", + "/Lotus/Upgrades/Skins/Sigils/StarterPackLotusSigil", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisA", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisB", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisC", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisD", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisE", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisF", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisG", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisH", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisI", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisJ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisK", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaA", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaB", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaC", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaD", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaE", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaF", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaG", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaH", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaI", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaJ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaK", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveA", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveB", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveC", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveD", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveE", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveF", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveG", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveH", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveI", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveJ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveK", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveL", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveM", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveN", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveO", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveP", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveQ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaA", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaB", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaC", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaD", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaE", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaF", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaG", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaH", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaI", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaJ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaK", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceA", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceB", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceC", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceD", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceE", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceF", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceG", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceH", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceI", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceJ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceK", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilA", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilB", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilC", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilD", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilE", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilF", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilG", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilH", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilI", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilJ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilK", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianA", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianB", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianC", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianD", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianE", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianF", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianG", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianH", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianI", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianJ", + "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianK", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2016Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2017Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2018Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2019Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2020Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2021Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2022Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2023Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoCon2024Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoGenSigil", + "/Lotus/Upgrades/Skins/Sigils/TennoLive2015Sigil", + "/Lotus/Upgrades/Skins/Sigils/TennoLivePromoSigil", + "/Lotus/Upgrades/Skins/Sigils/TennoVIP2024Sigil", + "/Lotus/Upgrades/Skins/Sigils/TeralystSigil", + "/Lotus/Upgrades/Skins/Sigils/ThraxSigil", + "/Lotus/Upgrades/Skins/Sigils/TranslatorSigil", + "/Lotus/Upgrades/Skins/Sigils/TwitchNecraloidSigil", + "/Lotus/Upgrades/Skins/Sigils/TwitchPrimeSigil", + "/Lotus/Upgrades/Skins/Sigils/TwitchProminenceSigil", + "/Lotus/Upgrades/Skins/Sigils/TwitchPromo2021Sigil", + "/Lotus/Upgrades/Skins/Sigils/TwoToneSigil", + "/Lotus/Upgrades/Skins/Sigils/VorDuviriSigil", + "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearDragonSigil", + "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearFreeTigerSigil", + "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearOxSigil", + "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearRabbitSigil", + "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearTigerSigil", + "/Lotus/Upgrades/Skins/Sigils/WikiaSigil", + "/Lotus/Upgrades/Skins/Sigils/Winter2016Sigil", + "/Lotus/Upgrades/Skins/Sigils/WolfSigil", + "/Lotus/Upgrades/Skins/Sigils/XBoneFourYearSigil", + "/Lotus/Upgrades/Skins/Sigils/XBoneJadeSigil", + "/Lotus/Upgrades/Skins/Sigils/XBoneOneYearSigil", + "/Lotus/Upgrades/Skins/Sigils/XBoneThreeYearSigil", + "/Lotus/Upgrades/Skins/Sigils/XBoneTwoYearSigil", + "/Lotus/Upgrades/Skins/Sigils/XboneJadeTwoSigil", + "/Lotus/Upgrades/Skins/Sigils/YareliSigil", + "/Lotus/Upgrades/Skins/Sigils/ZarimanSupporterPackSigil", + "/Lotus/Upgrades/Skins/SolarisUnited/SUVentkidsBoomerang", + "/Lotus/Upgrades/Skins/Sony/ExcaliburPSPlusSkin", + "/Lotus/Upgrades/Skins/Sony/ExcaliburPSPlusSkinHelmet", + "/Lotus/Upgrades/Skins/Sony/ObsidianAkmagnus", + "/Lotus/Upgrades/Skins/Sony/ObsidianAttica", + "/Lotus/Upgrades/Skins/Sony/ObsidianBoltor", + "/Lotus/Upgrades/Skins/Sony/ObsidianColtekMask", + "/Lotus/Upgrades/Skins/Sony/ObsidianCorinth", + "/Lotus/Upgrades/Skins/Sony/ObsidianDexFuris", + "/Lotus/Upgrades/Skins/Sony/ObsidianGalatine", + "/Lotus/Upgrades/Skins/Sony/ObsidianGlaive", + "/Lotus/Upgrades/Skins/Sony/ObsidianGorgon", + "/Lotus/Upgrades/Skins/Sony/ObsidianGrattler", + "/Lotus/Upgrades/Skins/Sony/ObsidianHek", + "/Lotus/Upgrades/Skins/Sony/ObsidianHelios", + "/Lotus/Upgrades/Skins/Sony/ObsidianMagnus", + "/Lotus/Upgrades/Skins/Sony/ObsidianNikana", + "/Lotus/Upgrades/Skins/Sony/ObsidianPennant", + "/Lotus/Upgrades/Skins/Sony/ObsidianQuanta", + "/Lotus/Upgrades/Skins/Sony/ObsidianScoliac", + "/Lotus/Upgrades/Skins/Sony/ObsidianSerro", + "/Lotus/Upgrades/Skins/Sony/ObsidianSilvaAndAegis", + "/Lotus/Upgrades/Skins/Sony/ObsidianSonicor", + "/Lotus/Upgrades/Skins/Sony/ObsidianSpira", + "/Lotus/Upgrades/Skins/Sony/ObsidianStandardArchwingSkin", + "/Lotus/Upgrades/Skins/Sony/ObsidianTwinVipers", + "/Lotus/Upgrades/Skins/Sony/ObsidianViper", + "/Lotus/Upgrades/Skins/Sony/ObsidianWyrm", + "/Lotus/Upgrades/Skins/Sony/PS4Braton", + "/Lotus/Upgrades/Skins/Sony/PS4Lato", + "/Lotus/Upgrades/Skins/Sony/PS4Mk1Braton", + "/Lotus/Upgrades/Skins/Sony/PS4Skana", + "/Lotus/Upgrades/Skins/Sony/PS5OkinaSkin", + "/Lotus/Upgrades/Skins/Sony/PS5TiberonSkin", + "/Lotus/Upgrades/Skins/Starry/StarryAklato", + "/Lotus/Upgrades/Skins/Starry/StarryBraton", + "/Lotus/Upgrades/Skins/Starry/StarryKunai", + "/Lotus/Upgrades/Skins/Starry/StarryLato", + "/Lotus/Upgrades/Skins/Starry/StarryParis", + "/Lotus/Upgrades/Skins/Starry/StarrySkana", + "/Lotus/Upgrades/Skins/Starry/StarryStaff", + "/Lotus/Upgrades/Skins/SteamEsteem/EsteemExcalibur", + "/Lotus/Upgrades/Skins/SteamEsteem/EsteemExcaliburHelmet", + "/Lotus/Upgrades/Skins/SteamEsteem/EsteemLex", + "/Lotus/Upgrades/Skins/SteamEsteem/EsteemOrthos", + "/Lotus/Upgrades/Skins/SteamEsteem/EsteemTigris", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Dagger/SWCrubbakDaggerSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWArashiGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWDogmaHeavyBladeSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWIonGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWKarvrGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWKilzorathGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWMagestyGalatineSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWMithraGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWMizarGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWSupremaGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWTengokenGreatswordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Hammer/SWAxonnakHammerSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWKhatuunKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWKrtrimaKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWMinosKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWMithraKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWShinigamiKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWUndercutterKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Machetes/SWKutherMachete", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Machetes/SWUdjyatMachete", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/JatKittagNoxiousHammerSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/OrthosMagestySkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWAphriaPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWDivaPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWIonPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWJatKittagOgunSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWJotunheimPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWKalynexPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWLahnssPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWLympharisPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWPhorcysPolearmSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Rapier/SWArashiRapierSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Rapier/SWFeritaRapierSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Rapier/SWNiDuhlRapierSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Staff/SWEklypsaStaffSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/DualSkanaInfestedSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/GalatineClaymireSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWAritSkanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWDeroSwordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWEisenSwordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWInsidiaSwordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWIonSwordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWTengushenSwordSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SkanaInfestedSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWBaGethTonfaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWHadesTonfaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWRThreeKronenAritSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWYamexTonfaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/TwoHandKatana/SWArashiTwoHandedKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/TwoHandKatana/SWDogma", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/TwoHandKatana/SWKsaraTwoHandedKatanaSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Whip/SWWuushWhipSkin", + "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWGarasuEyeAccessory", + "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWIncognitoEyeAccessory", + "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWLumisEarAccessory", + "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuEarAccessory", + "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuEyeAccessory", + "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuFacialAccessory", + "/Lotus/Upgrades/Skins/SteamWorkshop/Primary/Opticor/SWMithraOpticorSkin", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerIgnisSkin", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeGorgon", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeGrakata", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeKesheg", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeQuartakk", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeStubba", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeTwinGrakatas", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeTwinRogga", + "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeZarr", + "/Lotus/Upgrades/Skins/Tengu/SWRFourZephyrMigisiHelmet", + "/Lotus/Upgrades/Skins/Tengu/SWRThreeHagoromoHelmet", + "/Lotus/Upgrades/Skins/Tengu/SWRThreeHagoromoSkin", + "/Lotus/Upgrades/Skins/Tengu/SWRThreeMonsoonHelmet", + "/Lotus/Upgrades/Skins/Tengu/SWRThreeSkeironHelmet", + "/Lotus/Upgrades/Skins/Tengu/SWRThreeSkeironSkin", + "/Lotus/Upgrades/Skins/Tengu/SWStrafeHelmet", + "/Lotus/Upgrades/Skins/Tengu/SWStrafeSkin", + "/Lotus/Upgrades/Skins/Tengu/SWZephyrBotLHelmet", + "/Lotus/Upgrades/Skins/Tengu/SWZephyrBotLSkin", + "/Lotus/Upgrades/Skins/Tengu/SWZephyrGraxxHelmet", + "/Lotus/Upgrades/Skins/Tengu/SWZephyrGraxxSkin", + "/Lotus/Upgrades/Skins/Tengu/TenguAgileAnims", + "/Lotus/Upgrades/Skins/Tengu/TenguAltBHelmet", + "/Lotus/Upgrades/Skins/Tengu/TenguAltHelmet", + "/Lotus/Upgrades/Skins/Tengu/TenguDeluxeAgileAnims", + "/Lotus/Upgrades/Skins/Tengu/TenguDeluxeNobleAnims", + "/Lotus/Upgrades/Skins/Tengu/TenguHelmet", + "/Lotus/Upgrades/Skins/Tengu/TenguNobleAnims", + "/Lotus/Upgrades/Skins/Tengu/TenguSkin", + "/Lotus/Upgrades/Skins/Tengu/UnlockTenguAgile", + "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeAgile", + "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeNoble", + "/Lotus/Upgrades/Skins/Tengu/UnlockTenguNoble", + "/Lotus/Upgrades/Skins/Tengu/ZephyrAlternateSkin", + "/Lotus/Upgrades/Skins/Tengu/ZephyrDeluxeHelmet", + "/Lotus/Upgrades/Skins/Tengu/ZephyrDeluxeSkin", + "/Lotus/Upgrades/Skins/Tengu/ZephyrPrimeAlternateSkin", + "/Lotus/Upgrades/Skins/Tengu/ZephyrPrimeHelmet", + "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterPistolSkin", + "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterShotgunSkin", + "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterWhipSkin", + "/Lotus/Upgrades/Skins/Tennogen/SWEzrielSwordSkin", + "/Lotus/Upgrades/Skins/Tennogen/SWROneSyandanaItem", + "/Lotus/Upgrades/Skins/Tennogen/SWROneSybaris", + "/Lotus/Upgrades/Skins/TextureOverrides/Bronze", + "/Lotus/Upgrades/Skins/TextureOverrides/Canvas", + "/Lotus/Upgrades/Skins/TextureOverrides/CarPaint", + "/Lotus/Upgrades/Skins/TextureOverrides/CarbonFiber", + "/Lotus/Upgrades/Skins/TextureOverrides/CeramicBreak", + "/Lotus/Upgrades/Skins/TextureOverrides/Circuits", + "/Lotus/Upgrades/Skins/TextureOverrides/CloudyStone", + "/Lotus/Upgrades/Skins/TextureOverrides/CremaMarble", + "/Lotus/Upgrades/Skins/TextureOverrides/DamasSteel", + "/Lotus/Upgrades/Skins/TextureOverrides/Droplets", + "/Lotus/Upgrades/Skins/TextureOverrides/DuviriPattern", + "/Lotus/Upgrades/Skins/TextureOverrides/Echo", + "/Lotus/Upgrades/Skins/TextureOverrides/FrogSkin", + "/Lotus/Upgrades/Skins/TextureOverrides/Frost", + "/Lotus/Upgrades/Skins/TextureOverrides/Galvanized", + "/Lotus/Upgrades/Skins/TextureOverrides/Glass", + "/Lotus/Upgrades/Skins/TextureOverrides/GlossyPlastic", + "/Lotus/Upgrades/Skins/TextureOverrides/GoldfishScale", + "/Lotus/Upgrades/Skins/TextureOverrides/GrossFlesh", + "/Lotus/Upgrades/Skins/TextureOverrides/IncompletePaintjob", + "/Lotus/Upgrades/Skins/TextureOverrides/Intestine", + "/Lotus/Upgrades/Skins/TextureOverrides/Ivory", + "/Lotus/Upgrades/Skins/TextureOverrides/JasperStone", + "/Lotus/Upgrades/Skins/TextureOverrides/LayeredStone", + "/Lotus/Upgrades/Skins/TextureOverrides/LeatherPackMap", + "/Lotus/Upgrades/Skins/TextureOverrides/LotusJacquard", + "/Lotus/Upgrades/Skins/TextureOverrides/Madurai", + "/Lotus/Upgrades/Skins/TextureOverrides/MarbleAlloy", + "/Lotus/Upgrades/Skins/TextureOverrides/MarbleShell", + "/Lotus/Upgrades/Skins/TextureOverrides/MattePaint", + "/Lotus/Upgrades/Skins/TextureOverrides/MetalPolish", + "/Lotus/Upgrades/Skins/TextureOverrides/Mirage", + "/Lotus/Upgrades/Skins/TextureOverrides/Naramon", + "/Lotus/Upgrades/Skins/TextureOverrides/PaintedMetal", + "/Lotus/Upgrades/Skins/TextureOverrides/PatternWrapped", + "/Lotus/Upgrades/Skins/TextureOverrides/PearlescentPlastic", + "/Lotus/Upgrades/Skins/TextureOverrides/PerformanceFabric", + "/Lotus/Upgrades/Skins/TextureOverrides/PlasticMembrane", + "/Lotus/Upgrades/Skins/TextureOverrides/PorcelainCracked", + "/Lotus/Upgrades/Skins/TextureOverrides/RoughMetal", + "/Lotus/Upgrades/Skins/TextureOverrides/Rubber", + "/Lotus/Upgrades/Skins/TextureOverrides/RubberWoven", + "/Lotus/Upgrades/Skins/TextureOverrides/ScalesUniform", + "/Lotus/Upgrades/Skins/TextureOverrides/Shark", + "/Lotus/Upgrades/Skins/TextureOverrides/ShingledMetal", + "/Lotus/Upgrades/Skins/TextureOverrides/SilkFabric", + "/Lotus/Upgrades/Skins/TextureOverrides/SoftDots", + "/Lotus/Upgrades/Skins/TextureOverrides/StackedWedge", + "/Lotus/Upgrades/Skins/TextureOverrides/Stitched", + "/Lotus/Upgrades/Skins/TextureOverrides/TechMetalDots", + "/Lotus/Upgrades/Skins/TextureOverrides/Trypophobia", + "/Lotus/Upgrades/Skins/TextureOverrides/Unairu", + "/Lotus/Upgrades/Skins/TextureOverrides/Vazarin", + "/Lotus/Upgrades/Skins/TextureOverrides/WoodBurned", + "/Lotus/Upgrades/Skins/TextureOverrides/Zenurik", + "/Lotus/Upgrades/Skins/TnHeavyShotgun/NintendoTnHeavyShotgunSkin", + "/Lotus/Upgrades/Skins/Trapper/SWBonaparteHelmet", + "/Lotus/Upgrades/Skins/Trapper/SWBonaparteSkin", + "/Lotus/Upgrades/Skins/Trapper/SWGraxxVaubanHelmet", + "/Lotus/Upgrades/Skins/Trapper/SWGraxxVaubanSkin", + "/Lotus/Upgrades/Skins/Trapper/SWRFourVaubanChapelonHelmet", + "/Lotus/Upgrades/Skins/Trapper/SWSuppressorHelmet", + "/Lotus/Upgrades/Skins/Trapper/SWSuppressorSkin", + "/Lotus/Upgrades/Skins/Trapper/TrapperAgileAnims", + "/Lotus/Upgrades/Skins/Trapper/TrapperDefaultHelmet", + "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAlt", + "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAltB", + "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAltStatless", + "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetSoldier", + "/Lotus/Upgrades/Skins/Trapper/TrapperNobleAnims", + "/Lotus/Upgrades/Skins/Trapper/TrapperPrimeSkin", + "/Lotus/Upgrades/Skins/Trapper/TrapperSkin", + "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperAgile", + "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperNoble", + "/Lotus/Upgrades/Skins/Trapper/VaubanAlternateSkin", + "/Lotus/Upgrades/Skins/Trapper/VaubanDeluxeAxe", + "/Lotus/Upgrades/Skins/Trapper/VaubanDeluxeHelmet", + "/Lotus/Upgrades/Skins/Trapper/VaubanDeluxeSkin", + "/Lotus/Upgrades/Skins/Trapper/VaubanPrimeHelmet", + "/Lotus/Upgrades/Skins/Trapper/VaubanVoidSkin", + "/Lotus/Upgrades/Skins/Trapper/VaubanVoidSkinHelmet", + "/Lotus/Upgrades/Skins/Trinity/SWAncyraHelmet", + "/Lotus/Upgrades/Skins/Trinity/SWKnightessHelmet", + "/Lotus/Upgrades/Skins/Trinity/SWKnightessSkin", + "/Lotus/Upgrades/Skins/Trinity/SWNightingaleHelmet", + "/Lotus/Upgrades/Skins/Trinity/SWNightingaleSkin", + "/Lotus/Upgrades/Skins/Trinity/SWRFiveTrinityMessiahHelmet", + "/Lotus/Upgrades/Skins/Trinity/SWTrinityBotLHelmet", + "/Lotus/Upgrades/Skins/Trinity/SWTrinityBotLSkin", + "/Lotus/Upgrades/Skins/Trinity/TrinityAgileAnims", + "/Lotus/Upgrades/Skins/Trinity/TrinityAlternateSkin", + "/Lotus/Upgrades/Skins/Trinity/TrinityDeluxeHelmet", + "/Lotus/Upgrades/Skins/Trinity/TrinityDeluxeSuit", + "/Lotus/Upgrades/Skins/Trinity/TrinityHelmet", + "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAlt", + "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAltB", + "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAltStatless", + "/Lotus/Upgrades/Skins/Trinity/TrinityNobleAnims", + "/Lotus/Upgrades/Skins/Trinity/TrinityPrimeHelmet", + "/Lotus/Upgrades/Skins/Trinity/TrinityPrimeSkin", + "/Lotus/Upgrades/Skins/Trinity/TrinitySkin", + "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityAgile", + "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityNoble", + "/Lotus/Upgrades/Skins/Umbra/UmbraAltHelmet", + "/Lotus/Upgrades/Skins/Umbra/UmbraDaxGlaive", + "/Lotus/Upgrades/Skins/Umbra/UmbraSkin", + "/Lotus/Upgrades/Skins/ValentinesDay/ValentinesArrow", + "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceAItem", + "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceBItem", + "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceCItem", + "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceDItem", + "/Lotus/Upgrades/Skins/Voices/OperatorVoiceAItem", + "/Lotus/Upgrades/Skins/Voices/OperatorVoiceBItem", + "/Lotus/Upgrades/Skins/Voices/OperatorVoiceCItem", + "/Lotus/Upgrades/Skins/Voices/OperatorVoiceDItem", + "/Lotus/Upgrades/Skins/VoidTrader/AshLeverianLiosPistol", + "/Lotus/Upgrades/Skins/VoidTrader/BaroArrow", + "/Lotus/Upgrades/Skins/VoidTrader/BaroInarosPolearmSkin", + "/Lotus/Upgrades/Skins/VoidTrader/BaroScytheMacheteSkin", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisBallasSword", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisLatronPistol", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisNikana", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisOdonataSkin", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisOpticor", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisSonicor", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisTiberon", + "/Lotus/Upgrades/Skins/VoidTrader/ElixisTigris", + "/Lotus/Upgrades/Skins/VoidTrader/PrismaArrow", + "/Lotus/Upgrades/Skins/VoidTrader/VTBoar", + "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburAvalonHelmet", + "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburHelmet", + "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburPendragonHelmet", + "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburSkin", + "/Lotus/Upgrades/Skins/VoidTrader/VTHalloweenDarkSword", + "/Lotus/Upgrades/Skins/VoidTrader/VTQuanta", + "/Lotus/Upgrades/Skins/VoidTrader/VTRedeemerSkin", + "/Lotus/Upgrades/Skins/Volt/DiscordVolt", + "/Lotus/Upgrades/Skins/Volt/DiscordVoltHelmet", + "/Lotus/Upgrades/Skins/Volt/NintendoVolt", + "/Lotus/Upgrades/Skins/Volt/NintendoVoltHelmet", + "/Lotus/Upgrades/Skins/Volt/SWArresterVoltHelmet", + "/Lotus/Upgrades/Skins/Volt/SWCapacitorHelmet", + "/Lotus/Upgrades/Skins/Volt/SWCapacitorSkin", + "/Lotus/Upgrades/Skins/Volt/SWFulgursorHelmet", + "/Lotus/Upgrades/Skins/Volt/SWFulgursorSkin", + "/Lotus/Upgrades/Skins/Volt/SWRFourVoltGraxxHelmet", + "/Lotus/Upgrades/Skins/Volt/SWRFourVoltGraxxSkin", + "/Lotus/Upgrades/Skins/Volt/SWROneVoltHelmet", + "/Lotus/Upgrades/Skins/Volt/SWROneVoltSkin", + "/Lotus/Upgrades/Skins/Volt/SWRelayVoltHelmet", + "/Lotus/Upgrades/Skins/Volt/SWTechnoshockHelmet", + "/Lotus/Upgrades/Skins/Volt/SWTechnoshockSkin", + "/Lotus/Upgrades/Skins/Volt/SWThalesVoltHelmet", + "/Lotus/Upgrades/Skins/Volt/SWZenerHelmet", + "/Lotus/Upgrades/Skins/Volt/SWZenerSkin", + "/Lotus/Upgrades/Skins/Volt/UnlockVoltAgile", + "/Lotus/Upgrades/Skins/Volt/UnlockVoltNoble", + "/Lotus/Upgrades/Skins/Volt/VoltAgileAnims", + "/Lotus/Upgrades/Skins/Volt/VoltAlternateSkin", + "/Lotus/Upgrades/Skins/Volt/VoltChameleonAHelmet", + "/Lotus/Upgrades/Skins/Volt/VoltChameleonASkin", + "/Lotus/Upgrades/Skins/Volt/VoltDeluxeBHelmet", + "/Lotus/Upgrades/Skins/Volt/VoltDeluxeBSkin", + "/Lotus/Upgrades/Skins/Volt/VoltDeluxeHelmet", + "/Lotus/Upgrades/Skins/Volt/VoltDeluxeMaceSkin", + "/Lotus/Upgrades/Skins/Volt/VoltDeluxeSkin", + "/Lotus/Upgrades/Skins/Volt/VoltHelmet", + "/Lotus/Upgrades/Skins/Volt/VoltHelmetAlt", + "/Lotus/Upgrades/Skins/Volt/VoltHelmetAltB", + "/Lotus/Upgrades/Skins/Volt/VoltHelmetAltBStatless", + "/Lotus/Upgrades/Skins/Volt/VoltHelmetAltStatless", + "/Lotus/Upgrades/Skins/Volt/VoltNobleAnims", + "/Lotus/Upgrades/Skins/Volt/VoltPrimeHelmet", + "/Lotus/Upgrades/Skins/Volt/VoltPrimeSkin", + "/Lotus/Upgrades/Skins/Volt/VoltSkin", + "/Lotus/Upgrades/Skins/Volt/VoltTwitchHelmet", + "/Lotus/Upgrades/Skins/Volt/VoltTwitchSkin", + "/Lotus/Upgrades/Skins/Weapons/DSPistols/BroncoSpectre", + "/Lotus/Upgrades/Skins/Weapons/DSPistols/FurisVekesk", + "/Lotus/Upgrades/Skins/Weapons/DSPistols/LatoTekna", + "/Lotus/Upgrades/Skins/Weapons/DSPistols/LexHammer", + "/Lotus/Upgrades/Skins/Weapons/DualDaggers/TnMilitaryDualDaggerSkin", + "/Lotus/Upgrades/Skins/Weapons/DualSword/DualRibbonKamasSkin", + "/Lotus/Upgrades/Skins/Weapons/GreatSword/PS4BallasSword", + "/Lotus/Upgrades/Skins/Weapons/GreatSword/SWGrimstoneCleaver", + "/Lotus/Upgrades/Skins/Weapons/GreatSword/SWIBallasSword", + "/Lotus/Upgrades/Skins/Weapons/GreatSword/SWObanakk", + "/Lotus/Upgrades/Skins/Weapons/GreatSword/XB1BallasSword", + "/Lotus/Upgrades/Skins/Weapons/Grimoire/GrimoireFantasySkin", + "/Lotus/Upgrades/Skins/Weapons/Grimoire/GrimoireSciFiSkin", + "/Lotus/Upgrades/Skins/Weapons/Hammers/NintendoFragor", + "/Lotus/Upgrades/Skins/Weapons/Hammers/SolarisHammerSkinA", + "/Lotus/Upgrades/Skins/Weapons/LongGuns/CorpusSpearGunSkin", + "/Lotus/Upgrades/Skins/Weapons/LongGuns/HarrowDeluxeSpearGun", + "/Lotus/Upgrades/Skins/Weapons/LongGuns/SolsticeBurston", + "/Lotus/Upgrades/Skins/Weapons/LongGuns/VenkraSniperSkin", + "/Lotus/Upgrades/Skins/Weapons/Machete/GrnGunStockClubSkin", + "/Lotus/Upgrades/Skins/Weapons/Pistols/BillowingPistolSkin", + "/Lotus/Upgrades/Skins/Weapons/Pistols/CeramicPistolSkin", + "/Lotus/Upgrades/Skins/Weapons/Pistols/TnSubmachinegunDualPistolSkin", + "/Lotus/Upgrades/Skins/Weapons/Pistols/TnSubmachinegunPistolSkin", + "/Lotus/Upgrades/Skins/Weapons/Rapier/CrpRapierSkin", + "/Lotus/Upgrades/Skins/Weapons/Rapier/TnLotusRapierSkin", + "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerRelayFireSkin", + "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerRelayWaterSkin", + "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerTNWNarmerSkin", + "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerTwitchSkin", + "/Lotus/Upgrades/Skins/Weapons/Redeemer/TnSpikeGunbladeSkin", + "/Lotus/Upgrades/Skins/Weapons/Rifle/SoaktronRifleSkin", + "/Lotus/Upgrades/Skins/Weapons/Staff/TnRibbonStaffSkin", + "/Lotus/Upgrades/Skins/Weapons/Staff/TrinityDeluxeBo", + "/Lotus/Upgrades/Skins/Weapons/Throwable/TennoCon2024NinjaStarSkin", + "/Lotus/Upgrades/Skins/Weapons/Tonfa/CeramicTonfaSkin", + "/Lotus/Upgrades/Skins/Weapons/Tonfa/KronenTwitchSkin", + "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/DrakgoonFlakCannonSkin", + "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/DrakgoonFlakCannonSkinPrimaryProjectileSkin", + "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/OgrisRocketLauncherSkin", + "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/OgrisRocketLauncherSkinPrimaryProjectileSkin", + "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/StahltaShockRifleSkin", + "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/StahltaShockRifleSkinPrimaryProjectileSkin", + "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/StahltaShockRifleSkinSecondaryProjectileSkin", + "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfAgile", + "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfNoble", + "/Lotus/Upgrades/Skins/Werewolf/VorunaVoidShellHelmet", + "/Lotus/Upgrades/Skins/Werewolf/VorunaVoidShellSkin", + "/Lotus/Upgrades/Skins/Werewolf/WerewolfAgileAnims", + "/Lotus/Upgrades/Skins/Werewolf/WerewolfAltCloakA", + "/Lotus/Upgrades/Skins/Werewolf/WerewolfAltCloakB", + "/Lotus/Upgrades/Skins/Werewolf/WerewolfAltHelmet", + "/Lotus/Upgrades/Skins/Werewolf/WerewolfHelmet", + "/Lotus/Upgrades/Skins/Werewolf/WerewolfNobleAnims", + "/Lotus/Upgrades/Skins/Werewolf/WerewolfSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeAcceltraSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeCorinthSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeGalatineSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeGaundaoSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeIgnisSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeLenzSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeSkiajatiSkin", + "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeTatsuSkin", + "/Lotus/Upgrades/Skins/Wisp/DexWispHelmet", + "/Lotus/Upgrades/Skins/Wisp/DexWispSkin", + "/Lotus/Upgrades/Skins/Wisp/SWCelestisWispHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWCelestisWispSkin", + "/Lotus/Upgrades/Skins/Wisp/SWCovenWispHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWCovenWispSkin", + "/Lotus/Upgrades/Skins/Wisp/SWDamasHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWDelusionHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWDelusionSkin", + "/Lotus/Upgrades/Skins/Wisp/SWRaevuzHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWRaevuzSkin", + "/Lotus/Upgrades/Skins/Wisp/SWSycoraxWispHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWSycoraxWispSkin", + "/Lotus/Upgrades/Skins/Wisp/SWWispGraxxHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWWispGraxxSkin", + "/Lotus/Upgrades/Skins/Wisp/SWZamariuWispHelmet", + "/Lotus/Upgrades/Skins/Wisp/SWZamariuWispSkin", + "/Lotus/Upgrades/Skins/Wisp/UnlockWispAgile", + "/Lotus/Upgrades/Skins/Wisp/UnlockWispNoble", + "/Lotus/Upgrades/Skins/Wisp/WispAgileAnims", + "/Lotus/Upgrades/Skins/Wisp/WispAltHelmet", + "/Lotus/Upgrades/Skins/Wisp/WispAlternateSkin", + "/Lotus/Upgrades/Skins/Wisp/WispDeluxeHelmet", + "/Lotus/Upgrades/Skins/Wisp/WispDeluxeSkin", + "/Lotus/Upgrades/Skins/Wisp/WispHelmet", + "/Lotus/Upgrades/Skins/Wisp/WispNobleAnims", + "/Lotus/Upgrades/Skins/Wisp/WispPrimeDefaultCape", + "/Lotus/Upgrades/Skins/Wisp/WispPrimeHelmet", + "/Lotus/Upgrades/Skins/Wisp/WispPrimeSkin", + "/Lotus/Upgrades/Skins/Wisp/WispSkin", + "/Lotus/Upgrades/Skins/Wraith/ReaperHelmet", + "/Lotus/Upgrades/Skins/Wraith/ReaperSkin", + "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielHelmet", + "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielReaperHelmet", + "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielReaperSkin", + "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielSkin", + "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeArmRightArmor", + "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeHelmet", + "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeRopeAnchor", + "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeShadowClawsSkin", + "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeShadowHelmet", + "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeShadowSkin", + "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeSkin", + "/Lotus/Upgrades/Skins/Wraith/SevagothDlxWeaponSkin", + "/Lotus/Upgrades/Skins/Wraith/UnlockWraithAgile", + "/Lotus/Upgrades/Skins/Wraith/UnlockWraithNoble", + "/Lotus/Upgrades/Skins/Wraith/WraithAgileAnims", + "/Lotus/Upgrades/Skins/Wraith/WraithAltHelmet", + "/Lotus/Upgrades/Skins/Wraith/WraithHelmet", + "/Lotus/Upgrades/Skins/Wraith/WraithNobleAnims", + "/Lotus/Upgrades/Skins/Wraith/WraithSkin", + "/Lotus/Upgrades/Skins/Yareli/SWBatomorphaHelmet", + "/Lotus/Upgrades/Skins/Yareli/UnlockYareliAgile", + "/Lotus/Upgrades/Skins/Yareli/UnlockYareliNoble", + "/Lotus/Upgrades/Skins/Yareli/YareliAgileAnims", + "/Lotus/Upgrades/Skins/Yareli/YareliAltHelmet", + "/Lotus/Upgrades/Skins/Yareli/YareliHelmet", + "/Lotus/Upgrades/Skins/Yareli/YareliNobleAnims", + "/Lotus/Upgrades/Skins/Yareli/YareliSkin", + "/Lotus/Upgrades/Skins/YinYang/EquinoxDeluxeHelmet", + "/Lotus/Upgrades/Skins/YinYang/EquinoxDeluxeSkin", + "/Lotus/Upgrades/Skins/YinYang/EquinoxDeluxeSwordShieldSkin", + "/Lotus/Upgrades/Skins/YinYang/EquinoxPrimeHelmet", + "/Lotus/Upgrades/Skins/YinYang/EquinoxPrimeSkin", + "/Lotus/Upgrades/Skins/YinYang/YinYangSkin" +] -- 2.47.2 From cfcdaae6689df6b5fee5a52611bb9e28a4f31a8d Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 29 May 2024 23:03:05 +0200 Subject: [PATCH 130/522] feat(webui): Add list of owned rivens (#241) Co-authored-by: Sainan --- static/webui/RivenParser.js | 1178 +++++++++++++++++++++++++++++++++++ static/webui/index.html | 21 +- static/webui/script.js | 73 ++- static/webui/style.css | 6 + 4 files changed, 1272 insertions(+), 6 deletions(-) create mode 100644 static/webui/RivenParser.js diff --git a/static/webui/RivenParser.js b/static/webui/RivenParser.js new file mode 100644 index 00000000..d8223ecd --- /dev/null +++ b/static/webui/RivenParser.js @@ -0,0 +1,1178 @@ +// Use the collapse feature in your editor :) +const riven_tags = { + LotusArchgunRandomModRare: [ + { + tag: "WeaponArmorPiercingDamageMod", + value: 0.01, + prefix: "insi", + suffix: "cak" + }, + { + tag: "WeaponCritChanceMod", + value: 0.0111, + prefix: "crita", + suffix: "cron" + }, + { + tag: "WeaponCritDamageMod", + value: 0.0089, + prefix: "acri", + suffix: "tis" + }, + { + tag: "WeaponElectricityDamageMod", + value: 0.0133, + prefix: "vexi", + suffix: "tio" + }, + { + tag: "WeaponFireDamageMod", + value: 0.0133, + prefix: "igni", + suffix: "pha" + }, + { + tag: "WeaponFireRateMod", + value: 0.00667, + prefix: "croni", + suffix: "dra" + }, + { + tag: "WeaponFreezeDamageMod", + value: 0.0133, + prefix: "geli", + suffix: "do" + }, + { + tag: "WeaponImpactDamageMod", + value: 0.01, + prefix: "magna", + suffix: "ton" + }, + { + tag: "WeaponProcTimeMod", + value: 0.01111, + prefix: "deci", + suffix: "des" + }, + { + tag: "WeaponSlashDamageMod", + value: 0.01, + prefix: "sci", + suffix: "sus" + }, + { + tag: "WeaponStunChanceMod", + value: 0.0067, + prefix: "hexa", + suffix: "dex" + }, + { + tag: "WeaponToxinDamageMod", + value: 0.0133, + prefix: "toxi", + suffix: "tox" + }, + { + tag: "WeaponAmmoMaxMod", + value: 0.0111, + prefix: "ampi", + suffix: "bin" + }, + { + tag: "WeaponClipMaxMod", + value: 0.0067, + prefix: "arma", + suffix: "tin" + }, + { + tag: "WeaponDamageAmountMod", + value: 0.0111, + prefix: "visi", + suffix: "ata" + }, + { + tag: "WeaponFireIterationsMod", + value: 0.0067, + prefix: "sati", + suffix: "can" + }, + { + tag: "WeaponPunctureDepthMod", + value: 0.03, + prefix: "lexi", + suffix: "nok" + }, + { + tag: "WeaponRecoilReductionMod", + value: -0.01, + prefix: "zeti", + suffix: "mag" + }, + { + tag: "WeaponReloadSpeedMod", + value: 0.0111, + prefix: "feva", + suffix: "tak" + }, + { + tag: "WeaponFactionDamageCorpus", + value: 0.005, + prefix: "manti", + suffix: "tron" + }, + { + tag: "WeaponFactionDamageGrineer", + value: 0.005, + prefix: "argi", + suffix: "con" + }, + { + tag: "WeaponZoomFovMod", + value: 0.006666, + prefix: "hera", + suffix: "lis" + } + ], + LotusModularMeleeRandomModRare: [ + { + tag: "WeaponMeleeDamageMod", + value: 0.0183, + prefix: "visi", + suffix: "ata" + }, + { + tag: "WeaponArmorPiercingDamageMod", + value: 0.0133, + prefix: "insi", + suffix: "cak" + }, + { + tag: "WeaponImpactDamageMod", + value: 0.0133, + prefix: "magna", + suffix: "ton" + }, + { + tag: "WeaponSlashDamageMod", + value: 0.0133, + prefix: "sci", + suffix: "sus" + }, + { + tag: "WeaponCritChanceMod", + value: 0.02, + prefix: "crita", + suffix: "cron" + }, + { + tag: "WeaponCritDamageMod", + value: 0.01, + prefix: "acri", + suffix: "tis" + }, + { + tag: "WeaponElectricityDamageMod", + value: 0.01, + prefix: "vexi", + suffix: "tio" + }, + { + tag: "WeaponFireDamageMod", + value: 0.01, + prefix: "igni", + suffix: "pha" + }, + { + tag: "WeaponFreezeDamageMod", + value: 0.01, + prefix: "geli", + suffix: "do" + }, + { + tag: "WeaponToxinDamageMod", + value: 0.01, + prefix: "toxi", + suffix: "tox" + }, + { + tag: "WeaponProcTimeMod", + value: 0.01111, + prefix: "deci", + suffix: "des" + }, + { + tag: "WeaponMeleeFactionDamageCorpus", + value: 0.005, + prefix: "manti", + suffix: "tron" + }, + { + tag: "WeaponMeleeFactionDamageGrineer", + value: 0.005, + prefix: "argi", + suffix: "con" + }, + { + tag: "WeaponMeleeFactionDamageInfested", + value: 0.005, + prefix: "pura", + suffix: "ada" + }, + { + tag: "WeaponFireRateMod", + value: 0.0061, + prefix: "croni", + suffix: "dra" + }, + { + tag: "WeaponStunChanceMod", + value: 0.01, + prefix: "hexa", + suffix: "dex" + }, + { + tag: "ComboDurationMod", + value: 0.09, + prefix: "tempi", + suffix: "nem" + }, + { + tag: "SlideAttackCritChanceMod", + value: 0.013334, + prefix: "pleci", + suffix: "nent" + }, + { + tag: "WeaponMeleeRangeIncMod", + value: 0.02158, + prefix: "locti", + suffix: "tor" + }, + { + tag: "WeaponMeleeFinisherDamageMod", + value: 0.0133, + prefix: "exi", + suffix: "cta" + }, + { + tag: "WeaponMeleeComboEfficiencyMod", + value: 0.00816, + prefix: "forti", + suffix: "us" + }, + { + tag: "WeaponMeleeComboInitialBonusMod", + value: 0.27224, + prefix: "para", + suffix: "um" + }, + { + tag: "WeaponMeleeComboPointsOnHitMod", + value: -0.01165 + }, + { + tag: "WeaponMeleeComboBonusOnHitMod", + value: 0.00653, + prefix: "laci", + suffix: "nus" + } + ], + LotusModularPistolRandomModRare: [ + { + tag: "WeaponArmorPiercingDamageMod", + value: 0.01333, + prefix: "insi", + suffix: "cak" + }, + { + tag: "WeaponCritChanceMod", + value: 0.016666, + prefix: "crita", + suffix: "cron" + }, + { + tag: "WeaponCritDamageMod", + value: 0.01, + prefix: "acri", + suffix: "tis" + }, + { + tag: "WeaponElectricityDamageMod", + value: 0.01, + prefix: "vexi", + suffix: "tio" + }, + { + tag: "WeaponFireDamageMod", + value: 0.01, + prefix: "igni", + suffix: "pha" + }, + { + tag: "WeaponFireRateMod", + value: 0.0083, + prefix: "croni", + suffix: "dra" + }, + { + tag: "WeaponFreezeDamageMod", + value: 0.01, + prefix: "geli", + suffix: "do" + }, + { + tag: "WeaponImpactDamageMod", + value: 0.013333, + prefix: "magna", + suffix: "ton" + }, + { + tag: "WeaponProcTimeMod", + value: 0.01111, + prefix: "deci", + suffix: "des" + }, + { + tag: "WeaponSlashDamageMod", + value: 0.013333, + prefix: "sci", + suffix: "sus" + }, + { + tag: "WeaponStunChanceMod", + value: 0.01, + prefix: "hexa", + suffix: "dex" + }, + { + tag: "WeaponToxinDamageMod", + value: 0.01, + prefix: "toxi", + suffix: "tox" + }, + { + tag: "WeaponAmmoMaxMod", + value: 0.01, + prefix: "ampi", + suffix: "bin" + }, + { + tag: "WeaponClipMaxMod", + value: 0.005555, + prefix: "arma", + suffix: "tin" + }, + { + tag: "WeaponDamageAmountMod", + value: 0.0244, + prefix: "visi", + suffix: "ata" + }, + { + tag: "WeaponFireIterationsMod", + value: 0.0133, + prefix: "sati", + suffix: "can" + }, + { + tag: "WeaponProjectileSpeedMod", + value: 0.01, + prefix: "conci", + suffix: "nak" + }, + { + tag: "WeaponPunctureDepthMod", + value: 0.03, + prefix: "lexi", + suffix: "nok" + }, + { + tag: "WeaponRecoilReductionMod", + value: -0.01, + prefix: "zeti", + suffix: "mag" + }, + { + tag: "WeaponReloadSpeedMod", + value: 0.005555, + prefix: "feva", + suffix: "tak" + }, + { + tag: "WeaponFactionDamageCorpus", + value: 0.005, + prefix: "manti", + suffix: "tron" + }, + { + tag: "WeaponFactionDamageGrineer", + value: 0.005, + prefix: "argi", + suffix: "con" + }, + { + tag: "WeaponFactionDamageInfested", + value: 0.005, + prefix: "pura", + suffix: "ada" + }, + { + tag: "WeaponZoomFovMod", + value: 0.0089, + prefix: "hera", + suffix: "lis" + } + ], + LotusPistolRandomModRare: [ + { + tag: "WeaponArmorPiercingDamageMod", + value: 0.01333, + prefix: "insi", + suffix: "cak" + }, + { + tag: "WeaponCritChanceMod", + value: 0.016666, + prefix: "crita", + suffix: "cron" + }, + { + tag: "WeaponCritDamageMod", + value: 0.01, + prefix: "acri", + suffix: "tis" + }, + { + tag: "WeaponElectricityDamageMod", + value: 0.01, + prefix: "vexi", + suffix: "tio" + }, + { + tag: "WeaponFireDamageMod", + value: 0.01, + prefix: "igni", + suffix: "pha" + }, + { + tag: "WeaponFireRateMod", + value: 0.0083, + prefix: "croni", + suffix: "dra" + }, + { + tag: "WeaponFreezeDamageMod", + value: 0.01, + prefix: "geli", + suffix: "do" + }, + { + tag: "WeaponImpactDamageMod", + value: 0.013333, + prefix: "magna", + suffix: "ton" + }, + { + tag: "WeaponProcTimeMod", + value: 0.01111, + prefix: "deci", + suffix: "des" + }, + { + tag: "WeaponSlashDamageMod", + value: 0.013333, + prefix: "sci", + suffix: "sus" + }, + { + tag: "WeaponStunChanceMod", + value: 0.01, + prefix: "hexa", + suffix: "dex" + }, + { + tag: "WeaponToxinDamageMod", + value: 0.01, + prefix: "toxi", + suffix: "tox" + }, + { + tag: "WeaponAmmoMaxMod", + value: 0.01, + prefix: "ampi", + suffix: "bin" + }, + { + tag: "WeaponClipMaxMod", + value: 0.005555, + prefix: "arma", + suffix: "tin" + }, + { + tag: "WeaponDamageAmountMod", + value: 0.0244, + prefix: "visi", + suffix: "ata" + }, + { + tag: "WeaponFireIterationsMod", + value: 0.0133, + prefix: "sati", + suffix: "can" + }, + { + tag: "WeaponProjectileSpeedMod", + value: 0.01, + prefix: "conci", + suffix: "nak" + }, + { + tag: "WeaponPunctureDepthMod", + value: 0.03, + prefix: "lexi", + suffix: "nok" + }, + { + tag: "WeaponRecoilReductionMod", + value: -0.01, + prefix: "zeti", + suffix: "mag" + }, + { + tag: "WeaponReloadSpeedMod", + value: 0.005555, + prefix: "feva", + suffix: "tak" + }, + { + tag: "WeaponFactionDamageCorpus", + value: 0.005, + prefix: "manti", + suffix: "tron" + }, + { + tag: "WeaponFactionDamageGrineer", + value: 0.005, + prefix: "argi", + suffix: "con" + }, + { + tag: "WeaponFactionDamageInfested", + value: 0.005, + prefix: "pura", + suffix: "ada" + }, + { + tag: "WeaponZoomFovMod", + value: 0.0089, + prefix: "hera", + suffix: "lis" + } + ], + LotusRifleRandomModRare: [ + { + tag: "WeaponArmorPiercingDamageMod", + value: 0.01333, + prefix: "insi", + suffix: "cak" + }, + { + tag: "WeaponCritChanceMod", + value: 0.016666, + prefix: "crita", + suffix: "cron" + }, + { + tag: "WeaponCritDamageMod", + value: 0.013333, + prefix: "acri", + suffix: "tis" + }, + { + tag: "WeaponElectricityDamageMod", + value: 0.01, + prefix: "vexi", + suffix: "tio" + }, + { + tag: "WeaponFireDamageMod", + value: 0.01, + prefix: "igni", + suffix: "pha" + }, + { + tag: "WeaponFireRateMod", + value: 0.00667, + prefix: "croni", + suffix: "dra" + }, + { + tag: "WeaponFreezeDamageMod", + value: 0.01, + prefix: "geli", + suffix: "do" + }, + { + tag: "WeaponImpactDamageMod", + value: 0.013333, + prefix: "magna", + suffix: "ton" + }, + { + tag: "WeaponProcTimeMod", + value: 0.01111, + prefix: "deci", + suffix: "des" + }, + { + tag: "WeaponSlashDamageMod", + value: 0.013333, + prefix: "sci", + suffix: "sus" + }, + { + tag: "WeaponStunChanceMod", + value: 0.01, + prefix: "hexa", + suffix: "dex" + }, + { + tag: "WeaponToxinDamageMod", + value: 0.01, + prefix: "toxi", + suffix: "tox" + }, + { + tag: "WeaponAmmoMaxMod", + value: 0.00555, + prefix: "ampi", + suffix: "bin" + }, + { + tag: "WeaponClipMaxMod", + value: 0.005555, + prefix: "arma", + suffix: "tin" + }, + { + tag: "WeaponDamageAmountMod", + value: 0.018333, + prefix: "visi", + suffix: "ata" + }, + { + tag: "WeaponFireIterationsMod", + value: 0.01, + prefix: "sati", + suffix: "can" + }, + { + tag: "WeaponProjectileSpeedMod", + value: 0.01, + prefix: "conci", + suffix: "nak" + }, + { + tag: "WeaponPunctureDepthMod", + value: 0.03, + prefix: "lexi", + suffix: "nok" + }, + { + tag: "WeaponRecoilReductionMod", + value: -0.01, + prefix: "zeti", + suffix: "mag" + }, + { + tag: "WeaponReloadSpeedMod", + value: 0.005555, + prefix: "feva", + suffix: "tak" + }, + { + tag: "WeaponFactionDamageCorpus", + value: 0.005, + prefix: "manti", + suffix: "tron" + }, + { + tag: "WeaponFactionDamageGrineer", + value: 0.005, + prefix: "argi", + suffix: "con" + }, + { + tag: "WeaponFactionDamageInfested", + value: 0.005, + prefix: "pura", + suffix: "ada" + }, + { + tag: "WeaponZoomFovMod", + value: 0.006666, + prefix: "hera", + suffix: "lis" + } + ], + LotusShotgunRandomModRare: [ + { + tag: "WeaponArmorPiercingDamageMod", + value: 0.01333, + prefix: "insi", + suffix: "cak" + }, + { + tag: "WeaponCritChanceMod", + value: 0.01, + prefix: "crita", + suffix: "cron" + }, + { + tag: "WeaponCritDamageMod", + value: 0.01, + prefix: "acri", + suffix: "tis" + }, + { + tag: "WeaponElectricityDamageMod", + value: 0.01, + prefix: "vexi", + suffix: "tio" + }, + { + tag: "WeaponFireDamageMod", + value: 0.01, + prefix: "igni", + suffix: "pha" + }, + { + tag: "WeaponFireRateMod", + value: 0.01, + prefix: "croni", + suffix: "dra" + }, + { + tag: "WeaponFreezeDamageMod", + value: 0.01, + prefix: "geli", + suffix: "do" + }, + { + tag: "WeaponImpactDamageMod", + value: 0.013333, + prefix: "magna", + suffix: "ton" + }, + { + tag: "WeaponProcTimeMod", + value: 0.01111, + prefix: "deci", + suffix: "des" + }, + { + tag: "WeaponSlashDamageMod", + value: 0.013333, + prefix: "sci", + suffix: "sus" + }, + { + tag: "WeaponStunChanceMod", + value: 0.01, + prefix: "hexa", + suffix: "dex" + }, + { + tag: "WeaponToxinDamageMod", + value: 0.01, + prefix: "toxi", + suffix: "tox" + }, + { + tag: "WeaponAmmoMaxMod", + value: 0.01, + prefix: "ampi", + suffix: "bin" + }, + { + tag: "WeaponClipMaxMod", + value: 0.005555, + prefix: "arma", + suffix: "tin" + }, + { + tag: "WeaponDamageAmountMod", + value: 0.0183, + prefix: "visi", + suffix: "ata" + }, + { + tag: "WeaponFireIterationsMod", + value: 0.0133, + prefix: "sati", + suffix: "can" + }, + { + tag: "WeaponProjectileSpeedMod", + value: 0.01, + prefix: "conci", + suffix: "nak" + }, + { + tag: "WeaponPunctureDepthMod", + value: 0.03, + prefix: "lexi", + suffix: "nok" + }, + { + tag: "WeaponRecoilReductionMod", + value: -0.01, + prefix: "zeti", + suffix: "mag" + }, + { + tag: "WeaponReloadSpeedMod", + value: 0.005555, + prefix: "feva", + suffix: "tak" + }, + { + tag: "WeaponFactionDamageCorpus", + value: 0.005, + prefix: "manti", + suffix: "tron" + }, + { + tag: "WeaponFactionDamageGrineer", + value: 0.005, + prefix: "argi", + suffix: "con" + }, + { + tag: "WeaponFactionDamageInfested", + value: 0.005, + prefix: "pura", + suffix: "ada" + } + ], + PlayerMeleeWeaponRandomModRare: [ + { + tag: "WeaponMeleeDamageMod", + value: 0.0183, + prefix: "visi", + suffix: "ata" + }, + { + tag: "WeaponArmorPiercingDamageMod", + value: 0.0133, + prefix: "insi", + suffix: "cak" + }, + { + tag: "WeaponImpactDamageMod", + value: 0.0133, + prefix: "magna", + suffix: "ton" + }, + { + tag: "WeaponSlashDamageMod", + value: 0.0133, + prefix: "sci", + suffix: "sus" + }, + { + tag: "WeaponCritChanceMod", + value: 0.02, + prefix: "crita", + suffix: "cron" + }, + { + tag: "WeaponCritDamageMod", + value: 0.01, + prefix: "acri", + suffix: "tis" + }, + { + tag: "WeaponElectricityDamageMod", + value: 0.01, + prefix: "vexi", + suffix: "tio" + }, + { + tag: "WeaponFireDamageMod", + value: 0.01, + prefix: "igni", + suffix: "pha" + }, + { + tag: "WeaponFreezeDamageMod", + value: 0.01, + prefix: "geli", + suffix: "do" + }, + { + tag: "WeaponToxinDamageMod", + value: 0.01, + prefix: "toxi", + suffix: "tox" + }, + { + tag: "WeaponProcTimeMod", + value: 0.01111, + prefix: "deci", + suffix: "des" + }, + { + tag: "WeaponMeleeFactionDamageCorpus", + value: 0.005, + prefix: "manti", + suffix: "tron" + }, + { + tag: "WeaponMeleeFactionDamageGrineer", + value: 0.005, + prefix: "argi", + suffix: "con" + }, + { + tag: "WeaponMeleeFactionDamageInfested", + value: 0.005, + prefix: "pura", + suffix: "ada" + }, + { + tag: "WeaponFireRateMod", + value: 0.0061, + prefix: "croni", + suffix: "dra" + }, + { + tag: "WeaponStunChanceMod", + value: 0.01, + prefix: "hexa", + suffix: "dex" + }, + { + tag: "ComboDurationMod", + value: 0.09, + prefix: "tempi", + suffix: "nem" + }, + { + tag: "SlideAttackCritChanceMod", + value: 0.013334, + prefix: "pleci", + suffix: "nent" + }, + { + tag: "WeaponMeleeRangeIncMod", + value: 0.02158, + prefix: "locti", + suffix: "tor" + }, + { + tag: "WeaponMeleeFinisherDamageMod", + value: 0.0133, + prefix: "exi", + suffix: "cta" + }, + { + tag: "WeaponMeleeComboEfficiencyMod", + value: 0.00816, + prefix: "forti", + suffix: "us" + }, + { + tag: "WeaponMeleeComboInitialBonusMod", + value: 0.27224, + prefix: "para", + suffix: "um" + }, + { + tag: "WeaponMeleeComboPointsOnHitMod", + value: -0.01165 + }, + { + tag: "WeaponMeleeComboBonusOnHitMod", + value: 0.00653, + prefix: "laci", + suffix: "nus" + } + ] +}; + +function rivenIntToFloat(i) { + const f = i / 0x3fffffff; // 1073741823 + if (f >= 0.0 && f <= 1.0) { + return f; + } + return 0.0; +} + +function floatToRivenInt(f) { + return Math.round(f * 0x3fffffff); +} + +function lerp(a, b, t) { + return a + (b - a) * t; +} + +const numBuffsAtten = [0, 1, 0.66000003, 0.5, 0.40000001, 0.34999999]; +const numBuffsCurseAtten = [0, 1, 0.33000001, 0.5, 1.25, 1.5]; + +function valueToDisplayValue(tag, value) { + if (tag == "WeaponMeleeComboInitialBonusMod") { + return Math.round(value * 10) / 10; + } + return Math.round(value * 1000) / 10; +} + +function displayValueToValue(tag, displayValue) { + if (tag == "WeaponMeleeComboInitialBonusMod") { + return displayValue; + } + return displayValue / 100; +} + +function toTitleCase(word) { + return word.charAt(0).toUpperCase() + word.substr(1); +} + +function parseRiven( + rivenType, // the part after /Lotus/Upgrades/Mods/Randomized/ + fingerprint, + omegaAttenuation // the weapon's riven disposition +) { + const curseAtten = Math.pow(1.25, fingerprint.curses.length); + + let stats = []; + + let attenuation = 1; + attenuation *= 1.5; // SPECIFIC_FIT_ATTENUATION + attenuation *= omegaAttenuation; + attenuation *= 10; // getBaseDrain(RIVEN_BASE_DRAIN) + + for (const buff of fingerprint.buffs) { + let upgradeValue = riven_tags[rivenType].find(x => x.tag == buff.Tag).value; + upgradeValue *= attenuation; + upgradeValue *= curseAtten; + upgradeValue *= lerp(0.9, 1.1, rivenIntToFloat(buff.Value)); + upgradeValue *= numBuffsAtten[Math.min(fingerprint.buffs.length, numBuffsAtten.length - 1)]; + upgradeValue *= fingerprint.lvl + 1; + stats.push({ + tag: buff.Tag, + value: upgradeValue, + displayValue: valueToDisplayValue(buff.Tag, upgradeValue) + }); + } + + for (const curse of fingerprint.curses) { + let upgradeValue = riven_tags[rivenType].find(x => x.tag == curse.Tag).value * -1.0; + upgradeValue *= attenuation; + upgradeValue *= lerp(0.9, 1.1, rivenIntToFloat(curse.Value)); + upgradeValue *= numBuffsCurseAtten[Math.min(fingerprint.buffs.length, numBuffsCurseAtten.length - 1)]; + upgradeValue *= numBuffsAtten[Math.min(fingerprint.curses.length, numBuffsAtten.length - 1)]; + upgradeValue *= fingerprint.lvl + 1; + stats.push({ + tag: curse.Tag, + value: upgradeValue, + displayValue: valueToDisplayValue(curse.Tag, upgradeValue) + }); + } + + let name = ""; + const sortedBuffs = structuredClone(fingerprint.buffs).sort((a, b) => { + if (a.Value == b.Value) { + return ( + riven_tags[rivenType].find(x => x.tag == b.Tag).value - + riven_tags[rivenType].find(x => x.tag == a.Tag).value + ); + } + return b.Value - a.Value; + }); + for (const buff of sortedBuffs) { + if (buff.Tag == sortedBuffs[sortedBuffs.length - 1].Tag) { + name += riven_tags[rivenType].find(x => x.tag == buff.Tag).suffix; + } else if (buff.Tag == sortedBuffs[0].Tag) { + name += toTitleCase(riven_tags[rivenType].find(x => x.tag == buff.Tag).prefix); + } else { + name += "-"; + name += riven_tags[rivenType].find(x => x.tag == buff.Tag).prefix; + } + } + + return { stats, name }; +} + +function unparseBuff(rivenType, omegaAttenuation, lvl, numBuffs, numCurses, tag, value) { + const curseAtten = Math.pow(1.25, numCurses); + + let attenuation = 1; + attenuation *= 1.5; // SPECIFIC_FIT_ATTENUATION + attenuation *= omegaAttenuation; + attenuation *= 10; // getBaseDrain(RIVEN_BASE_DRAIN) + + value /= lvl + 1; + value /= numBuffsAtten[Math.min(numBuffs, numBuffsAtten.length - 1)]; + value /= curseAtten; + value /= attenuation; + value /= riven_tags[rivenType].find(x => x.tag == tag).value; + + value -= 0.9; // 0.9..1.1 -> 0.0..0.2 + value /= 0.2; // 0.0..0.2 -> 0.0..1.0 + + return value; +} + +function unparseCurse(rivenType, omegaAttenuation, lvl, numBuffs, numCurses, tag, value) { + let attenuation = 1; + attenuation *= 1.5; // SPECIFIC_FIT_ATTENUATION + attenuation *= omegaAttenuation; + attenuation *= 10; // getBaseDrain(RIVEN_BASE_DRAIN) + + value /= lvl + 1; + value /= numBuffsAtten[Math.min(numCurses, numBuffsAtten.length - 1)]; + value /= numBuffsCurseAtten[Math.min(numBuffs, numBuffsCurseAtten.length - 1)]; + value /= attenuation; + value /= riven_tags[rivenType].find(x => x.tag == tag).value; + value /= -1.0; + + value -= 0.9; // 0.9..1.1 -> 0.0..0.2 + value /= 0.2; // 0.0..0.2 -> 0.0..1.0 + + return value; +} + +function floatToGrade(value) { + value = lerp(-10, +10, value); + if (value >= +9.5) return "S"; + if (value >= +7.5) return "A+"; + if (value >= +5.5) return "A"; + if (value >= +3.5) return "A-"; + if (value >= +1.5) return "B+"; + if (value >= -1.5) return "B"; + if (value >= -3.5) return "B-"; + if (value >= -5.5) return "C+"; + if (value >= -7.5) return "C"; + if (value >= -9.5) return "C-"; + return "F"; +} + +const RivenParser = { + riven_tags, + rivenIntToFloat, + floatToRivenInt, + valueToDisplayValue, + displayValueToValue, + parseRiven, + unparseBuff, + unparseCurse, + floatToGrade +}; +if (typeof module != "undefined") { + module.exports = RivenParser; +} +if (typeof window != "undefined") { + window.RivenParser = RivenParser; +} diff --git a/static/webui/index.html b/static/webui/index.html index c8556dc3..ac4f14a0 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -51,8 +51,12 @@
@@ -87,7 +91,7 @@
Warframes
- +
@@ -105,7 +109,7 @@
Weapons
- +
@@ -139,6 +143,14 @@ Need help with the fingerprint?
+
+
Rivens
+
+ + +
+
+
@@ -152,6 +164,7 @@ > + - - - + + + + - + diff --git a/static/webui/RivenParser.js b/static/webui/libs/RivenParser.js similarity index 100% rename from static/webui/RivenParser.js rename to static/webui/libs/RivenParser.js diff --git a/static/webui/libs/bootstrap.bundle.min.js b/static/webui/libs/bootstrap.bundle.min.js new file mode 100644 index 00000000..04e9185b --- /dev/null +++ b/static/webui/libs/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function j(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function M(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${M(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${M(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=j(t.dataset[n])}return e},getDataAttribute:(t,e)=>j(t.getAttribute(`data-bs-${M(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>n(t))).join(","):null},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",jt="collapsing",Mt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(jt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(jt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(Mt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function je(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const Me={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:je(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:je(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},j=p?3:1;j>0&&"break"!==P(j);j--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],j=f?-T[$]/2:0,M=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-j-q-z-O.mainAxis:M-q-z-O.mainAxis,K=v?-E[$]/2+j+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,jn=`hide${xn}`,Mn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,jn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,Mn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,Mn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",js="Home",Ms="End",Fs="active",Hs="fade",Ws="show",Bs=".dropdown-toggle",zs=`:not(${Bs})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,js,Ms].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([js,Ms].includes(t.key))i=e[t.key===js?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/static/webui/libs/bootstrap.min.css b/static/webui/libs/bootstrap.min.css new file mode 100644 index 00000000..39934146 --- /dev/null +++ b/static/webui/libs/bootstrap.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/static/webui/libs/jquery-3.6.0.min.js b/static/webui/libs/jquery-3.6.0.min.js new file mode 100644 index 00000000..c4c6022f --- /dev/null +++ b/static/webui/libs/jquery-3.6.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00;){u[q]=[]} +for(p=0;p<256;p++){B=s.charCodeAt(p/2);f=((p&1)==0)?B>>>8:B&255;e=f<<1;if(e>=256){e^=285} +b=e<<1;if(b>=256){b^=285} +a=b^f;G=b<<1;if(G>=256){G^=285} +F=G^f;u[0][p]=[0,0];u[0][p][0]=(f<<24)|(f<<16)|(b<<8)|(f);u[0][p][1]=(G<<24)|(a<<16)|(e<<8)|(F);for(var q=1;q<8;q++){u[q][p]=[0,0];u[q][p][0]=(u[q-1][p][0]>>>8)|((u[q-1][p][1]<<24));u[q][p][1]=(u[q-1][p][1]>>>8)|((u[q-1][p][0]<<24))}} +w[0]=[0,0];for(v=1;v<=h;v++){A=8*(v-1);w[v]=[0,0];w[v][0]=(u[0][A][0]&4278190080)^(u[1][A+1][0]&16711680)^(u[2][A+2][0]&65280)^(u[3][A+3][0]&255);w[v][1]=(u[4][A+4][1]&4278190080)^(u[5][A+5][1]&16711680)^(u[6][A+6][1]&65280)^(u[7][A+7][1]&255)} +let z=[],y=[],d=[],o=[],m=[],l=[],g=[],n=0,j=0;function E(){let C,c,I,H,x;for(C=0,c=0;C<8;C++,c+=8){l[C]=[0,0];l[C][0]=((y[c]&255)<<24)^((y[c+1]&255)<<16)^((y[c+2]&255)<<8)^((y[c+3]&255));l[C][1]=((y[c+4]&255)<<24)^((y[c+5]&255)<<16)^((y[c+6]&255)<<8)^((y[c+7]&255))} +for(C=0;C<8;C++){g[C]=[0,0];o[C]=[0,0];g[C][0]=l[C][0]^(o[C][0]=d[C][0]);g[C][1]=l[C][1]^(o[C][1]=d[C][1])} +for(I=1;I<=h;I++){for(C=0;C<8;C++){m[C]=[0,0];for(x=0,H=56,c=0;x<8;x++,H-=8,c=H<32?1:0){m[C][0]^=u[x][(o[(C-x)&7][c]>>>(H%32))&255][0];m[C][1]^=u[x][(o[(C-x)&7][c]>>>(H%32))&255][1]}} +for(C=0;C<8;C++){o[C][0]=m[C][0];o[C][1]=m[C][1]} +o[0][0]^=w[I][0];o[0][1]^=w[I][1];for(C=0;C<8;C++){m[C][0]=o[C][0];m[C][1]=o[C][1];for(x=0,H=56,c=0;x<8;x++,H-=8,c=H<32?1:0){m[C][0]^=u[x][(g[(C-x)&7][c]>>>(H%32))&255][0];m[C][1]^=u[x][(g[(C-x)&7][c]>>>(H%32))&255][1]}} +for(C=0;C<8;C++){g[C][0]=m[C][0];g[C][1]=m[C][1]}} +for(C=0;C<8;C++){d[C][0]^=g[C][0]^l[C][0];d[C][1]^=g[C][1]^l[C][1]}};function k(r){let c,x,t=r.toString();r=[];for(c=0;c=256){r.push(x>>>8&255)} +r.push(x&255)} +return r};const enc={init:function(){for(var c=32;c-->0;){z[c]=0} +n=j=0;y=[0];for(c=8;c-->0;){d[c]=[0,0]} +return enc},add:function(c){if(!c){return enc} +c=k(c);let K=c.length*8,r=0,t=(8-(K&7))&7,C=n&7,x,H,J,I=K;for(x=31,J=0;x>=0;x--){J+=(z[x]&255)+(I%256);z[x]=J&255;J>>>=8;I=Math.floor(I/256)} +while(K>8){H=((c[r]<>>(8-t));y[j++]|=H>>>C;n+=8-C;if(n==512){E();n=j=0;y=[]} +y[j]=((H<<(8-C))&255);n+=C;K-=8;r++} +if(K>0){H=(c[r]<>>C}else{H=0} +if(C+K<8){n+=K}else{j++;n+=8-C;K-=8-C;if(n==512){E();n=j=0;y=[]} +y[j]=((H<<(8-C))&255);n+=K} +return enc},finalize:function(){let r,c,t,H="",C=[],x="0123456789ABCDEF".split("");y[j]|=128>>>(n&7);j++;if(j>32){while(j<64){y[j++]=0} +E();j=0;y=[]} +while(j<32){y[j++]=0} +y.push.apply(y,z);E();for(r=0,c=0;r<8;r++,c+=8){t=d[r][0];C[c]=t>>>24&255;C[c+1]=t>>>16&255;C[c+2]=t>>>8&255;C[c+3]=t&255;t=d[r][1];C[c+4]=t>>>24&255;C[c+5]=t>>>16&255;C[c+6]=t>>>8&255;C[c+7]=t&255} +for(r=0;r>>4];H+=x[C[r]&15]} +return H.toLowerCase();}} +function h2b(str){let hexString=str,strOut='';for(var x=0;x Date: Fri, 31 May 2024 13:17:10 +0200 Subject: [PATCH 136/522] improve: say the magic words to log the client out when nonce is invalidated (#250) --- src/controllers/api/getCreditsController.ts | 10 ++++++++-- src/controllers/api/inventoryController.ts | 8 +------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/controllers/api/getCreditsController.ts b/src/controllers/api/getCreditsController.ts index e6b88241..805b0505 100644 --- a/src/controllers/api/getCreditsController.ts +++ b/src/controllers/api/getCreditsController.ts @@ -5,6 +5,14 @@ import { getInventory } from "@/src/services/inventoryService"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const getCreditsController: RequestHandler = async (req, res) => { + let accountId; + try { + accountId = await getAccountIdForRequest(req); + } catch (e) { + res.status(400).send("Log-in expired"); + return; + } + if (config.infiniteResources) { res.json({ RegularCredits: 999999999, @@ -15,8 +23,6 @@ export const getCreditsController: RequestHandler = async (req, res) => { return; } - const accountId = await getAccountIdForRequest(req); - const inventory = await getInventory(accountId); res.json({ RegularCredits: inventory.RegularCredits, diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 7712fafb..368f4823 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -17,13 +17,7 @@ const inventoryController: RequestHandler = async (request: Request, response: R try { accountId = await getAccountIdForRequest(request); } catch (e) { - if ((e as Error).message == "Invalid accountId-nonce pair") { - // TODO: Figure out some way to tell the game to stop trying with this nonce. - // For now, we'll have to be a little nasty. - response.destroy(); - return; - } - response.status(400).json({ error: (e as Error).message }); + response.status(400).send("Log-in expired"); return; } -- 2.47.2 From ec801abba3e6470bbf0139dea6c79890e97b2d38 Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 31 May 2024 14:15:43 +0200 Subject: [PATCH 137/522] fix: broken (beginner/intermediate) mods in modNames map (#243) --- src/services/itemDataService.ts | 5 +- static/json/exclude-mods.json | 253 ++++++++++++++++++++++++++++++++ 2 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 static/json/exclude-mods.json diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index b936d3f5..2aafbcc5 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -1,6 +1,7 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; +import badItems from "@/static/json/exclude-mods.json"; export type MinWarframe = Omit; export type MinWeapon = Omit; @@ -51,7 +52,9 @@ export const getWeaponType = (weaponName: string) => { const getNamesObj = (category: Category) => new Items({ category: [category] }).reduce<{ [index: string]: string }>((acc, item) => { - acc[item.name!.replace("'S", "'s")] = item.uniqueName!; + if (!(item.uniqueName! in badItems)) { + acc[item.name!.replace("'S", "'s")] = item.uniqueName!; + } return acc; }, {}); diff --git a/static/json/exclude-mods.json b/static/json/exclude-mods.json new file mode 100644 index 00000000..9134cb49 --- /dev/null +++ b/static/json/exclude-mods.json @@ -0,0 +1,253 @@ +{ + "/Lotus/Powersuits/Banshee/SonarPvPAugmentCard": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Archwing/Rifle/ArchwingEventRadiationFireIterationRifleMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Archwing/Rifle/PrimedArchwingDamageOnReloadMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Archwing/Rifle/PrimedArchwingRifleFireIterationsMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Hoverboard/HBFireWorksMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponCritChanceModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponCritFireRateBonusModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponFireDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponGlaivePowerthrowModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponGlaiveSpeedModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeChannelingEfficiencyModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeFactionDamageCorpusBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeFactionDamageGrineerBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeFactionDamageInfestedBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponStunChanceModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponCritChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponCritDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponCritFireRateBonusModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponElectricityDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponFireDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponFreezeDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponGlaivePowerthrowModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponGlaiveSpeedModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponMeleeChannelingEfficiencyModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponMeleeFinisherDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponPowerDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Expert/WeaponStunChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponMeleeChannelingEfficiencyeModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponMeleeFinisherDamageModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponMeleeRangeIncModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponPowerDamageModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponStunChanceModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Melee/WeaponMeleeDamageOnHeavyKillMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Necromech/NecromechSprintEfficiencyMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Nemesis/AvatarSentientArmourMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponAmmoMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponClipMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponDamageAmountModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFireDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFireIterationsModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPistolFactionDamageCorpusBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPistolFactionDamageGrineerBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPistolFactionDamageInfestedBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPunctureDepthModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponReloadSpeedModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponStatusChanceModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Expert/PrimedWeaponElectricityDamageMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponAmmoMaxModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponCritDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponElectricityDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponFireIterationsModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponFireRateModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponFreezeDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponImpactDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponPistolZoomFovModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponPunctureDepthModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponRecoilReductionModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponStatusChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponToxinDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponDamageAmountModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponPistolConvertAmmoModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponPistolZoomFovModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponRecoilReductionModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponStatusChanceModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Pistol/ProjectileExplosionChanceMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/PvPMods/Melee/AirborneMeleeAutoTargetBonus": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/PvPMods/Melee/GroundingMeleeMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/PvPMods/Rifle/MarkTargetAddDamageMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Randomized/LotusArchgunRandomModRare": "unveiled-riven", + "/Lotus/Upgrades/Mods/Randomized/LotusModularMeleeRandomModRare": "unveiled-riven", + "/Lotus/Upgrades/Mods/Randomized/LotusModularPistolRandomModRare": "unveiled-riven", + "/Lotus/Upgrades/Mods/Randomized/LotusPistolRandomModRare": "unveiled-riven", + "/Lotus/Upgrades/Mods/Randomized/LotusRifleRandomModRare": "unveiled-riven", + "/Lotus/Upgrades/Mods/Randomized/LotusShotgunRandomModRare": "unveiled-riven", + "/Lotus/Upgrades/Mods/Randomized/PlayerMeleeWeaponRandomModRare": "unveiled-riven", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponAmmoMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponCritChanceModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponDamageAmountModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFactionDamageCorpusBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFactionDamageGrineerBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFactionDamageInfestedBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFireIterationsModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponPunctureDepthModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponReloadSpeedModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponStatusChanceModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Expert/BowExplosionChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/SniperReloadDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponAmmoMaxModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponBowConvertAmmoModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponCritChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponCritDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponElectricityDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFactionDamageCorpusExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFactionDamageGrineerExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFactionDamageInfestedExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFireDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFireIterationsModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFireRateModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponImpactDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponPunctureDepthModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponRecoilReductionModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponStatusChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponToxinDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponZoomFovModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/BowExplosionChanceModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/SniperReloadDamageModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponBowConvertAmmoModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponDamageAmountModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponRecoilReductionModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponRifleConvertAmmoModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponSnipersConvertAmmoModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponStatusChanceModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponZoomFovModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Sentinel/Kubrow/ChargerFinisherMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponAmmoMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponClipMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponCritChanceModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponDamageAmountModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFireDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFireIterationsModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponPunctureDepthModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponReloadSpeedModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponShotgunFactionDamageCorpusBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponShotgunFactionDamageGrineerBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponShotgunFactionDamageInfestedBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponStunChanceModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponAmmoMaxModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponCritChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponFireDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponFireIterationsModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponFireRateModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponImpactDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponPunctureDepthModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponStunChanceModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponToxinDamageModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Shotgun/Intermediate/WeaponShotgunConvertAmmoModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Syndicate/BallisticaMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityDurationModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityEfficiencyModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityRangeModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityStrengthModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarArmourModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceElectricityBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceFireBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceIceBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceLaserBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistancePoisonBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarEnemyRadarModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarFallingImpactModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarGroundFireDmgModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarHealthMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarLootRadarModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarParryMeleeModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarParryReflectModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarPickupBonusModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarPowerMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarPowerToHealthOnDeathModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarShieldMaxModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarShieldRechargeRateModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarSlideBoostModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarSprintSpeedModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarTimeLimitIncreaseModBeginner": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarAbilityEfficiencyModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarAbilityRangeModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarAbilityStrengthModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarChanceToLootExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageReductionInAirExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceElectricityExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceFireExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceIceExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceLaserExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistancePoisonExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageToEnergyModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarEnemyRadarModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarFallingImpactModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarKnockdownRecoveryModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarLootRadarModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarMissionSpecificResistanceIceExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarParryMeleeModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarParryReflectModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarRevengeDamageMeleeExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarShieldRechargeRateModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarSprintSpeedModExpert": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarArmourModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarChanceToLootIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarDamageReductionInAirIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarDamageResistanceKnockdownIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarDamageToEnergyModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarGroundFireDmgModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarHealthMaxModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarKnockdownRecoveryModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarKnockdownResistanceModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarMissionSpecificResistanceIceIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarParryMeleeModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarRevengeDamageMeleeIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarShieldMaxModIntermediate": "broken (beginner/intermediate)", + "/Lotus/Upgrades/Mods/Warframe/Kahl/KahlAvatarAbilityRangeSubMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Kahl/KahlAvatarAbilityStrengthSubMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/Kahl/KahlAvatarDropEnergySubMod": "unreleased/unobtainable", + "/Lotus/Upgrades/Mods/Warframe/AvatarDamageResistanceStun": "unreleased/unobtainable", + "/Lotus/Weapons/CrewShip/ElectricTether/ElectricTetherInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/Laser/Beam/RailJackBeamInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/Laser/Blaster/BlasterInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/Laser/Blaster/BlasterShotgunInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/Laser/PulseLaser/PulseLaserInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/MassDriver/AutoCannon/AutoCannonInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/ShrapnelShotgun/ShrapnelShotgunInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/CrewShipInnateDamageRandomMod": "innate-damage", + "/Lotus/Weapons/CrewShip/CrewShipInnateFireRateRandomMod": "innate-damage", + "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod": "innate-damage" +} -- 2.47.2 From ef220ca6d78b0cbf4707b4e86842907bb8ce003d Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 31 May 2024 14:17:39 +0200 Subject: [PATCH 138/522] feat: allow optionally connecting to WebUI via HTTPS by using p2ptls cert (#246) --- src/index.ts | 3 +- static/certs/cert.pem | 132 ++++++++++++++++++++++++++++++++---------- static/certs/key.pem | 82 +++++++++----------------- 3 files changed, 130 insertions(+), 87 deletions(-) diff --git a/src/index.ts b/src/index.ts index 57381218..9c2a3e9a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,8 +12,7 @@ import { config } from "./services/configService"; const options = { key: fs.readFileSync("static/certs/key.pem"), - cert: fs.readFileSync("static/certs/cert.pem"), - passphrase: "123456" + cert: fs.readFileSync("static/certs/cert.pem") }; const httpPort = config.httpPort || 80; diff --git a/static/certs/cert.pem b/static/certs/cert.pem index 1bb31711..dce14b62 100644 --- a/static/certs/cert.pem +++ b/static/certs/cert.pem @@ -1,33 +1,103 @@ -----BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgIUTTlTpl18Pp7Dh6Da3EgLZuR7y5gwDQYJKoZIhvcNAQEL -BQAwazELMAkGA1UEBhMCREUxDDAKBgNVBAgMA05OTjEMMAoGA1UEBwwDTk5OMQ0w -CwYDVQQKDAROT05FMQ0wCwYDVQQLDAROT05FMQ0wCwYDVQQDDAROT05FMRMwEQYJ -KoZIhvcNAQkBFgROT05FMB4XDTIyMTIxNTE1MTQ0OFoXDTIzMTIxNTE1MTQ0OFow -azELMAkGA1UEBhMCREUxDDAKBgNVBAgMA05OTjEMMAoGA1UEBwwDTk5OMQ0wCwYD -VQQKDAROT05FMQ0wCwYDVQQLDAROT05FMQ0wCwYDVQQDDAROT05FMRMwEQYJKoZI -hvcNAQkBFgROT05FMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9Jkb -YfGil30uDb6qbsxlqBbebgCrpOBfa4V2vxRqjOzTW1DOy7B2GRP1G/YyKvEZmzP3 -8sjm0WAC/Xe2Fb44NsQmPnPbRfNhkajs/nLlHM7AmFlJX0vOL97BQBu60F/GOhNB -2xVDQpPMWADGX6NqdZ4a7V5rEp/1EmVNYtyycgxbmDQDDvs36busVTztMv2EzJSr -9WBSKDVCMFJsAUZUq97J+ejIUAfmfQQVnsJSVvLaxjLmkrpZppj/hUn+CrZCJUnw -KSAirYYvsbucjUpXuaMBoNxlNc3AVaLGmLphwsIJjVJ6ypU60vZZOCgZNXk/v+Cz -Zp+RgBIpRurSnB8mmh6x3fjgrWch4zmiLWVI8OfEc/69sf/RTgGk8ZIZXdNKAHVj -a61gfsqz17II5o20b/3qTezk4t8LQBb9k1lNdNrF1KsJLhFVR1rfQJ7LCoJ00+5F -bHztAOtAQswJZeIx5KoFqvUh3N8ycBMNcMKikYEdn4Te9KL8Svd/v77Iaz1KkMFD -8zTmg5vUTEn5/dE6V/nsNMcyLIiMn8e3EaLXvC1qAqcU+8TknrLK3XwyUTzYq07x -fOWj5g63TQ8Ypnoby2vQZfpNyDln69ltdIQzAG8ZfTIuULRgQruHVA+v+JyLnThz -QdeXTZF/GyzmWqE0HcshyAoMetDA8momloSN20ECAwEAAaNTMFEwHQYDVR0OBBYE -FKdA6ZD0RL1erdOO03xQ/zhBCb+1MB8GA1UdIwQYMBaAFKdA6ZD0RL1erdOO03xQ -/zhBCb+1MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBANoxXq+p -51ZD+NmLR6Kb8vdAtURQlxbeVohic1WPOIzSzb7rZ8Aamixnu/fCBYycfX8r3tf4 -3qB3rCtNCowHhPryQLblw8wPbhkoIIyRaaR6FXCRT3B29pg2XcJwc7w9eQZuTiRq -Ctfai1FJn4w2lRslIu+wKlS76JJyTnmK39aq3vBjE3HdquTzkqP8ZTf36ETwI88E -OqovePuqFVXSV6ZycHY5l/oAcJuQ0ytxc6EH0raLJTHFhOEeYLbWlNvjE6vg9tGC -yua9ifERyRwEplHNpVmZxMl+K1BmZhlTiPdxmtmuULgpOUTiwTeLGybwmbICk6i1 -g3MWammvwp/AuVqTHfl83JbgwW7mdPdnPGXZA8u8EaMbj0/Wcg1E9BpBZne+NYmc -7bSbTFARNCPN0/qvHZsp1aJTBlvTJ4nvrWlsny53fvmudEsgMYg1N+Qq7woc+svH -sucKpA8REg21uJNDRg701ungxKR0azDAiVSAPOmIGQ2KKqqY05bZCufo6dl5Jro7 -WzjKDdks2JMUjczaytX+Ys4zHyUYiahOm2dI01FU+Ybfu41GNQxSH9EYy1itqIpB -fqNGFL6YkzBi3mSg566UG/3Ew2B6fuFZdOU3VcBw4dV38tFbEkqZUxdOTwWd6a4b -andcuRgK1qhphfEqVeHrjPz66G9tm4gv+P1l +MIIGLjCCBRagAwIBAgIRAPeLmReXnv+ALT/3Tm2Vts4wDQYJKoZIhvcNAQELBQAw +gY8xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE +AxMuU2VjdGlnbyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD +QTAeFw0yNDA0MTUwMDAwMDBaFw0yNTA0MTUyMzU5NTlaMBcxFTATBgNVBAMMDCou +cDJwdGxzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKoxU6lW +K5iAXZfLrKOY5lcy7z+mML2cYZkW0XXJeC6jYDyYSGAPJogeIgd3JsJWjZvHxnj7 +8KJGjO5j8B8kz4CVcV6aEx4ExJvtFUSzkgXHhlvSo2p0TTtWxC+ib3vWv+5kBSzb +4mdKKHiaz9shcLNKB77305xSBnKjAPGElgaZRwjwMqUSbPyjx4KrehyPQZDOU0aR +TKUbQNDbKYbeEmmUku0FTpao35GNsJrwzKKFIgzWAGKY+QiywIMeOGf0dTqX60GQ +MeXkKbueibuFKA12foV8RGojdT+bPIdRQyyEyntUkbu+UMknJ9bsPbKTEyQgv5nY +62O+A2lYG89Ub7MCAwEAAaOCAvowggL2MB8GA1UdIwQYMBaAFI2MXsRUrYrhd+mb ++ZsF4bgBjWHhMB0GA1UdDgQWBBQgFEQlEKO9vXkpBU7pQjbMU8MZvTAOBgNVHQ8B +Af8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB +BQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICBzAlMCMGCCsGAQUFBwIBFhdo +dHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYQGCCsGAQUFBwEBBHgw +djBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNB +RG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAjBggrBgEFBQcwAYYX +aHR0cDovL29jc3Auc2VjdGlnby5jb20wIwYDVR0RBBwwGoIMKi5wMnB0bHMuY29t +ggpwMnB0bHMuY29tMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdgDPEVbu1S58 +r/OHW9lpLpvpGnFnSrAX7KwB0lt3zsw7CAAAAY7jjWjnAAAEAwBHMEUCIQD/BajQ +AYjbiSmZZaTZ1j2miDHS4onTeIwMA5/jeAYzLgIgTAoSaQnX6Niyld5gmysgfkRC +zkiI/WwEJUxmI+R3Ll4AdwCi4wrkRe+9rZt+OO1HZ3dT14JbhJTXK14bLMS5UKRH +5wAAAY7jjWiVAAAEAwBIMEYCIQC1tH+VO0bRco4oSYvfsPaJDbLoJ2vfqSrCjtqu +nLavHwIhANuDbW4fRFA/myvN7mrLm3VLHI63RTl/gnzNqxodfB5oAHUATnWjJ1ya +EMM4W2zU3z9S6x3w4I4bjWnAsfpksWKaOd8AAAGO441ojgAABAMARjBEAiAzv6zf +dPxtnecz30Rb63+UiyvT2SdmdTTP+ap3r1rpCgIgX5z8mLnJJ3WL0LIB5NRC9qPn +/t324TkyWDHKgMPom2gwDQYJKoZIhvcNAQELBQADggEBAH7mgrQLmTkMs6/F/RoE +nsHQ9ddsDAA+Fs04alH8D8kuuXSsUWhaf0OYfBHLtOZ238qfigLxXZ6oGj9qNQ0I +hMP56sjEqd2IF2Vfi/qV3igLuJcICWnqqKIegCcS4fmy90NwYVtp2Z/7ovUa8aY/ +yKGoXTfmDQwuyaH88j14Ft95lmvOJ4VPheGmSotZOaIkp1os/wPIoQAmWoecj173 +jnLQ6O5/IZC4s/xKLKVt+vW+nmyR5U7VjUqAFN8eBHgdGWRcAiEaTRLBZMwWYP2D +XPFWmwT8vkvvK0WagFYOoITH9Zu13dHHzReIEyBhCDXWYyfib8i3K+acXidmi7Lu +fAw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx +MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV +BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE +ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g +VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N +TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj +eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E +oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk +Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY +uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j +BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb ++ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G +A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw +CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0 +LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr +BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv +bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov +L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H +ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH +7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi +H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx +RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv +xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38 +sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL +l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq +6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY +LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5 +yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K +00u/I5sUKUErmgQfky3xxzlIPK1aEn8= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7 +MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD +VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE +AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4 +MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5 +MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO +ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI +s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG +vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ +Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb +IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0 +tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E +xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV +icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5 +D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ +WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ +5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG +KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg +EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID +ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG +BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t +L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr +BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA +A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+ +rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+ +/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA +CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F +zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA +vGp4z7h/jnZymQyd/teRCBaho1+V -----END CERTIFICATE----- diff --git a/static/certs/key.pem b/static/certs/key.pem index bc241411..892d7dfa 100644 --- a/static/certs/key.pem +++ b/static/certs/key.pem @@ -1,54 +1,28 @@ ------BEGIN ENCRYPTED PRIVATE KEY----- -MIIJpDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIhPJDUgdojjcCAggA -MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECBekTRM5Tk7lBIIJUNdO7a5uVPxQ -FZYNrfQskiENOviT0Yr1a0J2zagG4PEZ9bTsNmDDI1kU9nlnXlBRSuwT5+tTM3jp -hKgQQ5VG1FwlZmvMUWijtM99iz6YMGETQG+cpU4kBBwD+Qicym6kt2Loa57N7334 -0DJyyPlEpJ48nqkXTC6zNtdeohWhGFdFZcNep5loLBdyAFqjxc/HitrNUD0eWu8B -TkWaoZnaxS0aBlmCRCU+bWiVIRnrDjOB/YLKTSZWQMVaq9gSWyCso5rFkR2QOLKK -MrsIkiQ/I5Y/QwyS04pxf3/UBLgFHjH/zmnwuc/LXtCPoNXbe7K9fOMlFO2Z0ywE -Oo11fQ3ih0zisURJXQDfc9Y1BkKciISEVW9upuCw6sbsMAnnaS57k34V7ZbuxNnD -qq95k1rEpwIbyfYjYfGmwa7STfCCSY1dC7sXZ1M1VtLjCYg7oDQk2WAcHF5w6pyf -jTQCpgHizsnLOpkFRaS7qfHGqS7XFee0m95tPOI+PDQQ4D3knbhdrG1Gajly0enI -LJxsbdpfb+rVuhF/mj6pdUAwo646PgtZ1D/WrSmludO1uLOEbylmsN7xTROS3JZd -KNEihudApxceUAPlBbSVTds7+bzHvBoflLiomIFJW5MH0nw8ezAEHb18a0H+PorE -OrHKfSk7n2kzeKDtws7o1bN4s03AF87SY1xCildQNo6mOOYiJjTPXaUQ5iGmZKcF -PndYmE06QFAHPxE9jmRL5QdxBl3tS6Tz7aHO9DcGGMM3Jadb+drurjePPGszbPTp -gdgmpRgecF362ELveAnI4Nsz2EHX/pMvVo4Zil4JeVfKrh1WBpcE/sVVhMVnezm7 -DWqVCp2ngTGCs+Ti+J8kVfQtKmk1XEUtTnytrTRlJjrpLHby/w44r28mY2fQGzri -mFaDt79U/caA80PlUbYsmC0hvPQOhhprax8Hq4hPh61y1e8azXx49o1qJ84wp3uQ -R7kYz2JnNvPU3GbF7N7GCRGVnwX98WS8p4/BW0n33UGY5oiAX1q0QpjKMBxILwbD -13JfJg/B+DZHmhMkM4NXORzAB6e6rui+EsNg5T43KDM/D2XefHs2i3+MohnEb6Y6 -D8YA6tHCU4b+MHwCgM6U9r+6ec0/mma6pbGeuRcgPx7e8PiNCuCaN4D/8dNUnSIt -QN9JuC9EJc+PVi0TYOum69WXdt2tzNt4ylhAAHawmiu+3GeO+rzjviE1eTTM0z+8 -lrNuClWV+zUCPKJNt84/NWK1sTgkwIqesf5H4vnc5S4EslAlEV8W8K1QDXf2uF4g -dK+5FxExETZCMgZ27yTUR31BoJZCdvRUBSugGn4ygwRg5gswpRfHpafmVVZlnCEc -NDKdZBGepq93/HzHCaRCrl0+5eal9bq1ZTnqnBTrsBW6JNjt4Kgk4UkHLQxW0e8i -7+jN147QvVoJ0DCpEHvfIYnAhZGI+aO0+nmJbo1ccjLanuZL+r/arX0+BjLE1pbx -yYuKyXNT8O2cIMQ68nAtt8XmTYb+Sh6xLDHTn6QISh1o+Af5oO0AscbCXIZJpZ7V -b95X/EUygQhlEJaI+SqGgybBGAYNOP48MjJQQsGof4S6pmfkAf0LqUIT8y/6Y/DV -7ecS4gk2R2M8h1krhSA4ytefi7PRg91PJWJEXKxaV0V+LCfvEfnbAeQ+VLtutjSL -i4+lNT7H7kCxnuKMiVIah69B5lbP6cCV3WiXr0qhaaGUbxPGmhiQXqIZfun0BS3H -xXNbIJkgOOzw6HuWnyXr0AgwTlDmOFSnQkqelNEVhNsJaqWPUOxVZ+/bZ9lMK9Id -EY0MPPdF74hMrol4uSkLNwoM9CTwd/SVUprSy/74nUlvIje1dyh7+GR4C8pcsWNv -1zguqe8Cfc9EiiVY2rCl6xb4uxujOw6juWFuXkKrWrRbgGH3UTHk2khKAhUpg6/N -TmPBQkaGMFuJwN9b2Q3w6y6T5hHPowRM6SObjN06F2JixewcqAgN8oNTF1bAy6pu -AJ0Yr/ljPXitETYke3iEO/kgnv6ZtBUaK4TCFCTYZIDSot/IA3svGK4cr1yq+8mH -hAiHaxlzwbUJ2K75iCUdIKbK6U+55GUofZ5EvQWKnr4Or0TKdt1R58dYaY3Rrxhx -Opv3l/uQJNxF7SGW+N/S+2pMuP2uzDHfuIW+AQ3CWPM47ulPHSYRXzVqDdmwbkfK -VpNlRR1Fl2uaH3RyAGOau88fIh4eSGQytWAj/BW/A8uNeHQn/uo7XSFFGxX+i2VR -l55dKZOMlxMVo46/IuWvhZRKMEekCVjOFIn7AazQYblCTieI0jvBFRiy+aOiJtOt -duzgAN6AT+qAymkKaKUfXHjx04EpjmJ9LAkgfzWTLA+OGe35N/35+d3fZVwpJS5K -BOD0rCjmA5BD8ccrIiyCJYco/8Ee09POe8s7RjXIl4xoBAN2ekkcasdaKjJkKErv -VXoH75urasna9XcDq/sMSjnZpecM+L+kDH0+YATmQVnNP7PKd/xFU4PS/stxe/p/ -9c3HJ37HTvdbeBCCASC1jO52Kes6rgWRtpituh80YU2Um3YKahptRQdzJASveO45 -8YGWrBwQBDR/QAkPbgj1tGxBr8/9r4Lxjvy1mY7tJRZ5AJT0jIUDtW1U2n7ZaT0p -LK5rAQXD6ujrHZ63193f0TIaBKLA6p+5OgTA0Y4J1SmoTcDKQ33pIbAloQeop00p -HbyUB+V624NqnN0J49IuweB0Yy36P/dYP3WhhuN++ygpnvXn25G8eJwpwXSDAJU4 -JNAXDnPBBloeesppz03AYpKer3ZQ2rAea817/g61tcLg1wSINX8m0wlQ0e9SzzQw -GL1OyDvVHqdLW25pMCKRHTw1hYHVaCgvGgS+6AT4Ul384vygF6FLL/XxjN1Lu1Ei -jO4UnPriK1GmV79/t/vimSUHm/uGOyheLUHAS669TZdTxbQ/u9FYRQORhVf1CIis -GTXmCSeBHClXUYaeVaKO8H67EjMJI5NIKQU1PMUf0ZhvJY2M49sYhVMATjcMTpb8 -fR4uTayLYzNsBBB29mjl1cpikLQ9x/ZPL41YLbKuWMtMaqnFGu2d4q7MIlkrgxkd -8kzj1tU89VhbT56HOUm8SDdfPa3BNYZ9IzsVDYtWWAYS3Y5dJk/DmUFu9lnjxApY -iESTe1sS2ZzZRRYU7f1ftLRslVnuOY5i ------END ENCRYPTED PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqMVOpViuYgF2X +y6yjmOZXMu8/pjC9nGGZFtF1yXguo2A8mEhgDyaIHiIHdybCVo2bx8Z4+/CiRozu +Y/AfJM+AlXFemhMeBMSb7RVEs5IFx4Zb0qNqdE07VsQvom971r/uZAUs2+JnSih4 +ms/bIXCzSge+99OcUgZyowDxhJYGmUcI8DKlEmz8o8eCq3ocj0GQzlNGkUylG0DQ +2ymG3hJplJLtBU6WqN+RjbCa8MyihSIM1gBimPkIssCDHjhn9HU6l+tBkDHl5Cm7 +nom7hSgNdn6FfERqI3U/mzyHUUMshMp7VJG7vlDJJyfW7D2ykxMkIL+Z2OtjvgNp +WBvPVG+zAgMBAAECggEAAzoWM2Xxdt3DaIcxfPr/YXRGYJ2R22myPzw7uN3ODCXu +EDGoknGwsfBoUsRQLtHqgD0K2h/+XjiAn/bmUzpxpY18oP+PRAikT0e9suTFhjVU +EQk7lSwi8fB7BDAydVWk1ywV6qJsqeqx1vLDsb++xEqvpOl/NwqMs4widQtytymu +4n7/5OJik0wMNwSoBApOdRgX4EeGmbPjZj+U8zu1h+xVGDLSAd9stYsZ7jktAZVc +NIiBmNk+d0Laywq+XdD+t3PrbT/IbvqOlq/tAvMI7mAs3t/g6xYWABR6YzkMa0FV +xywzICEgum/ssilWWgnxlAdmhONC/5UNRtg1QflsaQKBgQDkOVN3uTEFuLXnsvyp +IKSxRXnIOc+1RHJiVAZhMGD3Kjr8tuAfTwHFng6CFV6vwAAhli1zU8UJw7U/9rph +aIzNk02RMAPMWQYk1nfUlQkzniG0ydhzI48yEvULSC6t+KKBaQYvmNu6a6pSh+aj +R08r9EzVNRXI9pV22mC+g5C7zQKBgQC+5/JFg55FFyLBzR0SMKHRj6gR1WC0Vovh +tu69yVpg/8JdXUPr7vmtgk617vLP9yttQ4rmBsjeUCG1jtWFDSI9dgtVqolfK+qX +0bh3fmdgolxmta0B51CWdF57zhBnPSoOSuI+d+C4p3AS5Ay1SfPsOCfGu+mZ6KLf +Ee+jYzFZfwKBgQCM7nGCnxOMqvF5sOehMQ1CgtqfMEP5ddkEq0p9PbjDKIrgf7WK +3+kCNYZUAgpEkVYDZ4+Nhg9I5lfItf2GJV+9mtbtby8JQ3gty1qYJahW/bFmyLYm +87B7hYVYgCyDNeRz8Xzma4hUaCP3bwCXl3NmeyfvCSb4wHyvtk7Dls8LiQKBgFZr +IxXqreOyxG4cjtNkJmx57mgcQomAQBQuPka1dm9Ad9jR1mRgKrArs7vR7iLMTeFJ +WQAmBBn3Bjts7CUtu9k8rYbbCxKFC84sBqg5FUz+UnvANBAPiUCCbx72OiCx5G7R +4TbMB3MvgKFckJAkaQH+rard97JPSCNYuDUrOvS7AoGAPRqzqsY1NuSX4NET/5kX +WNpI0C1Y02SodiZEOJiSd1lZdOs+RzKJv0yGZ4bTGzF5g0pPQzRVh7X/RkqvOooi +AdlKGykSXMNzrdgShNxr/RjC+n9+a4pfZWnW8eMbCJWW0ptjycNRbU/rLwmLSuV8 +SOEKVYljbu9o5nFbg1zU0Ck= +-----END PRIVATE KEY----- -- 2.47.2 From f83f80c9913db237e6bc30220fbc8d3912faeea9 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 1 Jun 2024 12:57:27 +0200 Subject: [PATCH 139/522] feat(webui): add Mods card (#252) --- .../custom/getItemListsController.ts | 11 +- static/webui/index.html | 115 +++++++--- static/webui/script.js | 211 ++++++++++++++++-- static/webui/style.css | 5 +- 4 files changed, 282 insertions(+), 60 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 5eeacdc9..c0345716 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,16 +1,19 @@ import { RequestHandler } from "express"; import { MinItem, warframes, weapons, items } from "@/src/services/itemDataService"; +import badItems from "@/static/json/exclude-mods.json"; interface ListedItem { uniqueName: string; name: string; + fusionLimit?: number; } function reduceItems(items: MinItem[]): ListedItem[] { return items.map((item: MinItem): ListedItem => { return { uniqueName: item.uniqueName, - name: item.name + name: item.name, + fusionLimit: (item as any).fusionLimit }; }); } @@ -19,7 +22,11 @@ const getItemListsController: RequestHandler = (_req, res) => { res.json({ warframes: reduceItems(warframes), weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")), - miscitems: reduceItems(items.filter(item => item.category == "Misc" || item.category == "Resources")) + miscitems: reduceItems( + items.filter(item => item.category == "Misc" || item.category == "Resources" || item.category == "Fish") + ), + mods: reduceItems(items.filter(item => item.category == "Mods" || item.category == "Arcanes")), + badItems }); }; diff --git a/static/webui/index.html b/static/webui/index.html index 52efb967..72cb6ebe 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -45,14 +45,30 @@ >
- +
@@ -117,33 +133,61 @@
-
-
Add Riven
-
- - - - Need help with the fingerprint? -
-
-
-
Rivens
-
- - -
+
+
+
+
Add Riven
+
+ + + + + Need help with the fingerprint? + +
+
+
+
Rivens
+
+ + +
+
+
+
+
+
+
Mods
+
+ + +
+
+ + +
+
+
@@ -152,6 +196,7 @@ + diff --git a/static/webui/script.js b/static/webui/script.js index 83fd7789..6fa3bbee 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -76,33 +76,47 @@ single.on("route_load", function (event) { } else { $("body").removeClass("logged-in"); } + + $(".nav-link").removeClass("active"); + const navLink = document.querySelector(".nav-link[href='" + event.route.paths[0] + "']"); + if (navLink) { + navLink.classList.add("active"); + } }); window.itemListPromise = new Promise(resolve => { const req = $.get("/custom/getItemLists"); req.done(data => { - const itemMap = {}; + const itemMap = { + // Generics for rivens + "/Lotus/Weapons/Tenno/Archwing/Primary/ArchGun": { name: "Archgun" }, + "/Lotus/Weapons/Tenno/Melee/PlayerMeleeWeapon": { name: "Melee" }, + "/Lotus/Weapons/Tenno/Pistol/LotusPistol": { name: "Pistol" }, + "/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: "Rifle" }, + "/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: "Shotgun" }, + // Missing in data sources + "/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": { name: "Traumatic Peculiar" }, + "/Lotus/Weapons/Tenno/Grimoire/TnGrimoire": { name: "Grimoire" } + }; for (const [type, items] of Object.entries(data)) { - items.forEach(item => { - const option = document.createElement("option"); - option.setAttribute("data-key", item.uniqueName); - option.value = item.name; - document.getElementById("datalist-" + type).appendChild(option); - itemMap[item.uniqueName] = { ...item, type }; - }); + if (type != "badItems") { + items.forEach(item => { + if (item.uniqueName in data.badItems) { + item.name += " (Imposter)"; + } else if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/") { + const option = document.createElement("option"); + option.setAttribute("data-key", item.uniqueName); + option.value = item.name; + document.getElementById("datalist-" + type).appendChild(option); + } + itemMap[item.uniqueName] = { ...item, type }; + }); + } } resolve(itemMap); }); }); -const rivenGenericCompatNames = { - "/Lotus/Weapons/Tenno/Archwing/Primary/ArchGun": "Archgun", - "/Lotus/Weapons/Tenno/Melee/PlayerMeleeWeapon": "Melee", - "/Lotus/Weapons/Tenno/Pistol/LotusPistol": "Pistol", - "/Lotus/Weapons/Tenno/Rifle/LotusRifle": "Rifle", - "/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": "Shotgun" -}; - function updateInventory() { const req = $.get("/api/inventory.php?" + window.authz); req.done(data => { @@ -190,6 +204,7 @@ function updateInventory() { }); document.getElementById("riven-list").innerHTML = ""; + document.getElementById("mods-list").innerHTML = ""; data.Upgrades.forEach(item => { if (item.ItemType.substr(0, 32) == "/Lotus/Upgrades/Mods/Randomized/") { const rivenType = item.ItemType.substr(32); @@ -198,10 +213,7 @@ function updateInventory() { const tr = document.createElement("tr"); { const td = document.createElement("td"); - td.textContent = - itemMap[fingerprint.compat]?.name ?? - rivenGenericCompatNames[fingerprint.compat] ?? - fingerprint.compat; + td.textContent = itemMap[fingerprint.compat]?.name ?? fingerprint.compat; td.textContent += " " + RivenParser.parseRiven(rivenType, fingerprint, 1).name; td.innerHTML += " ▲ " + fingerprint.buffs.length + ""; td.innerHTML += " ▼ " + fingerprint.curses.length + ""; @@ -245,6 +257,92 @@ function updateInventory() { tr.appendChild(td); } document.getElementById("riven-list").appendChild(tr); + } else { + const tr = document.createElement("tr"); + const rank = parseInt(JSON.parse(item.UpgradeFingerprint).lvl); + const maxRank = itemMap[item.ItemType]?.fusionLimit ?? 5; + { + const td = document.createElement("td"); + td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; + td.innerHTML += " ★ " + rank + "/" + maxRank + ""; + tr.appendChild(td); + } + { + const td = document.createElement("td"); + td.classList = "text-end"; + if (rank < maxRank) { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function (event) { + event.preventDefault(); + setFingerprint(item.ItemType, item.ItemId, { lvl: maxRank }); + }; + a.textContent = "Max Rank"; + td.appendChild(a); + + const span = document.createElement("span"); + span.innerHTML = " · "; + td.appendChild(span); + } + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function (event) { + event.preventDefault(); + disposeOfGear("Upgrades", item.ItemId.$oid); + }; + a.textContent = "Remove"; + td.appendChild(a); + } + tr.appendChild(td); + } + document.getElementById("mods-list").appendChild(tr); + } + }); + data.RawUpgrades.forEach(item => { + if (item.ItemCount > 0) { + const maxRank = itemMap[item.ItemType]?.fusionLimit ?? 5; + const tr = document.createElement("tr"); + { + const td = document.createElement("td"); + td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; + td.innerHTML += " ★ 0/" + maxRank + ""; + if (item.ItemCount > 1) { + td.innerHTML += " 🗍 " + parseInt(item.ItemCount) + ""; + } + tr.appendChild(td); + } + { + const td = document.createElement("td"); + td.classList = "text-end"; + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function (event) { + event.preventDefault(); + setFingerprint(item.ItemType, item.LastAdded, { lvl: maxRank }); + }; + a.textContent = "Max Rank"; + td.appendChild(a); + } + { + const span = document.createElement("span"); + span.innerHTML = " · "; + td.appendChild(span); + } + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function (event) { + event.preventDefault(); + disposeOfItems("Upgrades", item.ItemType, item.ItemCount); + }; + a.textContent = "Remove"; + td.appendChild(a); + } + tr.appendChild(td); + } + document.getElementById("mods-list").appendChild(tr); } }); }); @@ -352,6 +450,29 @@ function disposeOfGear(category, oid) { }); } +function disposeOfItems(category, type, count) { + const data = { + SellCurrency: "SC_RegularCredits", + SellPrice: 0, + Items: {} + }; + data.Items[category] = [ + { + String: type, + Count: count + } + ]; + revalidateAuthz(() => { + $.post({ + url: "/api/sell.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify(data) + }).done(function () { + updateInventory(); + }); + }); +} + function doAcquireMiscItems() { const uniqueName = getKey(document.getElementById("miscitem-type")); if (!uniqueName) { @@ -445,3 +566,53 @@ function doAcquireRiven() { $("#addriven-fingerprint").on("input", () => { $("#addriven-fingerprint").removeClass("is-invalid"); }); + +function setFingerprint(ItemType, ItemId, fingerprint) { + revalidateAuthz(() => { + $.post({ + url: "/api/artifacts.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + Upgrade: { + ItemType, + ItemId, + UpgradeFingerprint: JSON.stringify(fingerprint) + }, + LevelDiff: 0, + Cost: 0, + FusionPointCost: 0 + }) + }).done(function () { + updateInventory(); + }); + }); +} + +function doAcquireMod() { + const uniqueName = getKey(document.getElementById("mod-to-acquire")); + if (!uniqueName) { + $("#mod-to-acquire").addClass("is-invalid").focus(); + return; + } + revalidateAuthz(() => { + $.post({ + url: "/api/missionInventoryUpdate.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + RawUpgrades: [ + { + ItemType: uniqueName, + ItemCount: 1 + } + ] + }) + }).done(function () { + document.getElementById("mod-to-acquire").value = ""; + updateInventory(); + }); + }); +} + +$("#mod-to-acquire").on("input", () => { + $("#mod-to-acquire").removeClass("is-invalid"); +}); diff --git a/static/webui/style.css b/static/webui/style.css index 109802b4..119d4fd2 100644 --- a/static/webui/style.css +++ b/static/webui/style.css @@ -1,14 +1,13 @@ @media (min-width: 992px) { body.logged-in #main-view { - display: grid; - grid-template-columns: 1fr 8fr; - gap: 1.5rem; + display: flex; } body.logged-in #sidebar { position: sticky; top: 5rem; height: 100px; + margin-right: 3rem; } body:not(.logged-in) #sidebar { -- 2.47.2 From e3f543d9be8ff01893cd120287c150475fad92b3 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 1 Jun 2024 13:03:27 +0200 Subject: [PATCH 140/522] improve: ensure 'npm run lint' passes without errors (#249) --- .eslintrc | 21 ++++++++++++------- .github/workflows/build.yml | 1 + src/controllers/api/artifactsController.ts | 1 - .../api/claimCompletedRecipeController.ts | 1 - src/controllers/api/getGuildDojoController.ts | 2 +- src/controllers/api/getShipController.ts | 1 - src/controllers/api/inventoryController.ts | 2 +- src/controllers/api/loginController.ts | 2 +- src/controllers/api/logoutController.ts | 3 +-- .../api/updateChallengeProgressController.ts | 2 +- src/controllers/api/upgradesController.ts | 2 +- src/controllers/stats/viewController.ts | 2 +- src/helpers/customHelpers/addItemHelpers.ts | 2 +- src/index.ts | 5 ++--- src/models/inventoryModels/inventoryModel.ts | 1 + src/models/inventoryModels/loadoutModel.ts | 1 + src/pathman.ts | 1 + src/types/personalRoomsTypes.ts | 1 + src/types/requestTypes.ts | 2 +- 19 files changed, 29 insertions(+), 24 deletions(-) diff --git a/.eslintrc b/.eslintrc index 9c2b88f9..615dc50a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -4,22 +4,27 @@ "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking" ], - "plugins": ["@typescript-eslint", "prettier"], + "plugins": ["@typescript-eslint"], "env": { "browser": true, "es6": true, "node": true }, "rules": { - "prettier/prettier": "error", "@typescript-eslint/semi": ["error"], - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/restrict-template-expressions": "off", - "@typescript-eslint/restrict-plus-operands": "off", - "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/explicit-function-return-type": "warn", + "@typescript-eslint/explicit-module-boundary-types": "warn", + "@typescript-eslint/restrict-template-expressions": "warn", + "@typescript-eslint/restrict-plus-operands": "warn", + "@typescript-eslint/no-unsafe-member-access": "warn", "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], - "no-case-declarations": "off" + "@typescript-eslint/no-misused-promises": "warn", + "@typescript-eslint/no-unsafe-argument": "warn", + "@typescript-eslint/no-unsafe-call": "warn", + "@typescript-eslint/no-unsafe-assignment": "warn", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-loss-of-precision": "warn", + "no-case-declarations": "warn" }, "parser": "@typescript-eslint/parser", "parserOptions": { diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a5bff297..0af70682 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,3 +18,4 @@ jobs: - run: cp config.json.example config.json - run: echo '{"version":"","buildLabel":"","matchmakingBuildId":""}' > static/data/buildConfig.json - run: npm run build + - run: npm run lint diff --git a/src/controllers/api/artifactsController.ts b/src/controllers/api/artifactsController.ts index 65041eca..6b6f6248 100644 --- a/src/controllers/api/artifactsController.ts +++ b/src/controllers/api/artifactsController.ts @@ -1,4 +1,3 @@ -import { parseString } from "@/src/helpers/general"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { upgradeMod } from "@/src/services/inventoryService"; diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts index 291516ef..52236166 100644 --- a/src/controllers/api/claimCompletedRecipeController.ts +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -8,7 +8,6 @@ import { IOid } from "@/src/types/commonTypes"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; -import { IInventoryDatabase } from "@/src/types/inventoryTypes/inventoryTypes"; export interface IClaimCompletedRecipeRequest { RecipeIds: IOid[]; diff --git a/src/controllers/api/getGuildDojoController.ts b/src/controllers/api/getGuildDojoController.ts index b38b23a9..cf60ed13 100644 --- a/src/controllers/api/getGuildDojoController.ts +++ b/src/controllers/api/getGuildDojoController.ts @@ -23,7 +23,7 @@ export const getGuildDojoController: RequestHandler = async (req, res) => { CompletionTime: new Date(Date.now()) } ]; - guild.save(); + await guild.save(); } const dojo: IDojoClient = { diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index 3459548e..f0ba4468 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -4,7 +4,6 @@ import allShipFeatures from "@/static/fixed_responses/allShipFeatures.json"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { getShip } from "@/src/services/shipService"; -import { PersonalRooms } from "@/src/models/personalRoomsModel"; import { Loadout } from "@/src/models/inventoryModels/loadoutModel"; import { logger } from "@/src/utils/logger"; import { toOid } from "@/src/helpers/inventoryHelpers"; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 368f4823..a2fed533 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -56,7 +56,7 @@ const inventoryController: RequestHandler = async (request: Request, response: R if (config.unlockAllSkins) { inventoryResponse.WeaponSkins = []; - for (let skin of allSkins) { + for (const skin of allSkins) { inventoryResponse.WeaponSkins.push({ ItemId: { $oid: "000000000000000000000000" diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 4b0dc26b..0b9477b1 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -66,7 +66,7 @@ const loginController: RequestHandler = async (request, response) => { if (account.Nonce == 0 || loginRequest.ClientType != "webui") { account.Nonce = nonce; - account.save(); + await account.save(); } const { email, password, ...databaseAccount } = account.toJSON(); diff --git a/src/controllers/api/logoutController.ts b/src/controllers/api/logoutController.ts index 16181d7f..735014d4 100644 --- a/src/controllers/api/logoutController.ts +++ b/src/controllers/api/logoutController.ts @@ -1,14 +1,13 @@ import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { Account } from "@/src/models/loginModel"; -import { IDatabaseAccountDocument } from "@/src/types/loginTypes"; const logoutController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const account = await Account.findOne({ _id: accountId }); if (account) { account.Nonce = 0; - account.save(); + await account.save(); } res.writeHead(200, { "Content-Type": "text/html", diff --git a/src/controllers/api/updateChallengeProgressController.ts b/src/controllers/api/updateChallengeProgressController.ts index 887224e3..45490ce3 100644 --- a/src/controllers/api/updateChallengeProgressController.ts +++ b/src/controllers/api/updateChallengeProgressController.ts @@ -13,7 +13,7 @@ const updateChallengeProgressController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); addChallenges(inventory, payload.ChallengeProgress); - inventory.save(); + await inventory.save(); res.status(200).end(); }; diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index f617b70a..09592daf 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -15,7 +15,7 @@ export const upgradesController: RequestHandler = async (req, res) => { operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/ModSlotUnlocker" || operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker" ) { - updateCurrency(10, true, accountId); + await updateCurrency(10, true, accountId); } else { addMiscItems(inventory, [ { diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index 2e014507..03372433 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -8,7 +8,7 @@ import allScans from "@/static/fixed_responses/allScans.json"; const viewController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId }); + const inventory = await Inventory.findOne({ accountOwnerId: accountId }); if (!inventory) { res.status(400).json({ error: "inventory was undefined" }); return; diff --git a/src/helpers/customHelpers/addItemHelpers.ts b/src/helpers/customHelpers/addItemHelpers.ts index 4371856a..2b1f464d 100644 --- a/src/helpers/customHelpers/addItemHelpers.ts +++ b/src/helpers/customHelpers/addItemHelpers.ts @@ -1,4 +1,4 @@ -import { isString, parseString } from "@/src/helpers/general"; +import { isString } from "@/src/helpers/general"; import { items } from "@/src/services/itemDataService"; export enum ItemType { diff --git a/src/index.ts b/src/index.ts index 9c2a3e9a..e82fd2fe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,9 +20,8 @@ const httpsPort = config.httpsPort || 443; // const server = http.createServer(app).listen(80); http.createServer(app).listen(httpPort, () => logger.info("HTTP server started on port " + httpPort)); -const server = https - .createServer(options, app) - .listen(httpsPort, () => logger.info("HTTPS server started on port " + httpsPort)); +const server = https.createServer(options, app); +server.listen(httpsPort, () => logger.info("HTTPS server started on port " + httpsPort)); // server.keepAliveTimeout = 60 * 1000 + 1000; // server.headersTimeout = 60 * 1000 + 2000; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 7efd2ee2..c6c95ca1 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1016,6 +1016,7 @@ type InventoryDocumentProps = { PendingRecipes: Types.DocumentArray; }; +// eslint-disable-next-line @typescript-eslint/ban-types type InventoryModelType = Model; export const Inventory = model("Inventory", inventorySchema); diff --git a/src/models/inventoryModels/loadoutModel.ts b/src/models/inventoryModels/loadoutModel.ts index a9afc0d7..7bd2aaa1 100644 --- a/src/models/inventoryModels/loadoutModel.ts +++ b/src/models/inventoryModels/loadoutModel.ts @@ -89,6 +89,7 @@ type loadoutDocumentProps = { DRIFTER: Types.DocumentArray; }; +// eslint-disable-next-line @typescript-eslint/ban-types type loadoutModelType = Model; export const Loadout = model("Loadout", loadoutSchema); diff --git a/src/pathman.ts b/src/pathman.ts index 1e1d5127..0d41bc4b 100644 --- a/src/pathman.ts +++ b/src/pathman.ts @@ -1,6 +1,7 @@ // Hooks node to support require from "@/" paths for `npm run build && npm run start`. // Based on https://github.com/dividab/tsconfig-paths +/* eslint-disable */ const Module = require("module"); const originalResolveFilename = Module._resolveFilename; Module._resolveFilename = function (request: string, _parent: any): string { diff --git a/src/types/personalRoomsTypes.ts b/src/types/personalRoomsTypes.ts index 68ddec83..dda71362 100644 --- a/src/types/personalRoomsTypes.ts +++ b/src/types/personalRoomsTypes.ts @@ -26,4 +26,5 @@ export type PersonalRoomsDocumentProps = { }; }; +// eslint-disable-next-line @typescript-eslint/ban-types export type PersonalRoomsModelType = Model; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index c58217f0..6693c598 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -80,5 +80,5 @@ export interface IUpgradeOperation { UpgradeRequirement: string; // uniqueName of item being consumed PolarizeSlot: number; PolarizeValue: FocusSchool; - PolarityRemap: {}[]; + PolarityRemap: object[]; } -- 2.47.2 From e980d344582741554615eb56e7ce32c6a5f983d4 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 1 Jun 2024 17:19:51 +0200 Subject: [PATCH 141/522] improve(webui): keep a local copy of riven tool (#261) --- package-lock.json | 6 + package.json | 1 + src/routes/webui.ts | 8 + static/webui/index.html | 6 +- static/webui/libs/RivenParser.js | 1178 ------------------------------ static/webui/script.js | 2 +- 6 files changed, 18 insertions(+), 1183 deletions(-) delete mode 100644 static/webui/libs/RivenParser.js diff --git a/package-lock.json b/package-lock.json index acca0552..66e1892a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", + "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" }, @@ -3892,6 +3893,11 @@ "warframe-worldstate-data": "^2" } }, + "node_modules/warframe-riven-info": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/warframe-riven-info/-/warframe-riven-info-0.1.0.tgz", + "integrity": "sha512-99e1HsGZomE1vHXat97V/eseccEnnQ1rv9vC0bdV9mig1wPdWiixHqCIpvIOBVUGKSEKuw2DJEErPD5Nxg+EsQ==" + }, "node_modules/warframe-worldstate-data": { "version": "2.5.14", "resolved": "https://registry.npmjs.org/warframe-worldstate-data/-/warframe-worldstate-data-2.5.14.tgz", diff --git a/package.json b/package.json index ba09cc40..f0e06c0b 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", + "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" }, diff --git a/src/routes/webui.ts b/src/routes/webui.ts index fcfa402f..750df395 100644 --- a/src/routes/webui.ts +++ b/src/routes/webui.ts @@ -33,4 +33,12 @@ webuiRouter.get("/favicon.ico", (_req, res) => { res.sendFile(path.join(rootDir, "static/fixed_responses/favicon.ico")); }); +// Serve warframe-riven-info +webuiRouter.get("/webui/riven-tool/", (_req, res) => { + res.sendFile(path.join(rootDir, "node_modules/warframe-riven-info/index.html")); +}); +webuiRouter.get("/webui/riven-tool/RivenParser.js", (_req, res) => { + res.sendFile(path.join(rootDir, "node_modules/warframe-riven-info/RivenParser.js")); +}); + export { webuiRouter }; diff --git a/static/webui/index.html b/static/webui/index.html index 72cb6ebe..a680fd33 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -161,9 +161,7 @@ placeholder="Fingerprint" > - - Need help with the fingerprint? - + Need help with the fingerprint?
@@ -200,7 +198,7 @@ - + diff --git a/static/webui/libs/RivenParser.js b/static/webui/libs/RivenParser.js deleted file mode 100644 index d8223ecd..00000000 --- a/static/webui/libs/RivenParser.js +++ /dev/null @@ -1,1178 +0,0 @@ -// Use the collapse feature in your editor :) -const riven_tags = { - LotusArchgunRandomModRare: [ - { - tag: "WeaponArmorPiercingDamageMod", - value: 0.01, - prefix: "insi", - suffix: "cak" - }, - { - tag: "WeaponCritChanceMod", - value: 0.0111, - prefix: "crita", - suffix: "cron" - }, - { - tag: "WeaponCritDamageMod", - value: 0.0089, - prefix: "acri", - suffix: "tis" - }, - { - tag: "WeaponElectricityDamageMod", - value: 0.0133, - prefix: "vexi", - suffix: "tio" - }, - { - tag: "WeaponFireDamageMod", - value: 0.0133, - prefix: "igni", - suffix: "pha" - }, - { - tag: "WeaponFireRateMod", - value: 0.00667, - prefix: "croni", - suffix: "dra" - }, - { - tag: "WeaponFreezeDamageMod", - value: 0.0133, - prefix: "geli", - suffix: "do" - }, - { - tag: "WeaponImpactDamageMod", - value: 0.01, - prefix: "magna", - suffix: "ton" - }, - { - tag: "WeaponProcTimeMod", - value: 0.01111, - prefix: "deci", - suffix: "des" - }, - { - tag: "WeaponSlashDamageMod", - value: 0.01, - prefix: "sci", - suffix: "sus" - }, - { - tag: "WeaponStunChanceMod", - value: 0.0067, - prefix: "hexa", - suffix: "dex" - }, - { - tag: "WeaponToxinDamageMod", - value: 0.0133, - prefix: "toxi", - suffix: "tox" - }, - { - tag: "WeaponAmmoMaxMod", - value: 0.0111, - prefix: "ampi", - suffix: "bin" - }, - { - tag: "WeaponClipMaxMod", - value: 0.0067, - prefix: "arma", - suffix: "tin" - }, - { - tag: "WeaponDamageAmountMod", - value: 0.0111, - prefix: "visi", - suffix: "ata" - }, - { - tag: "WeaponFireIterationsMod", - value: 0.0067, - prefix: "sati", - suffix: "can" - }, - { - tag: "WeaponPunctureDepthMod", - value: 0.03, - prefix: "lexi", - suffix: "nok" - }, - { - tag: "WeaponRecoilReductionMod", - value: -0.01, - prefix: "zeti", - suffix: "mag" - }, - { - tag: "WeaponReloadSpeedMod", - value: 0.0111, - prefix: "feva", - suffix: "tak" - }, - { - tag: "WeaponFactionDamageCorpus", - value: 0.005, - prefix: "manti", - suffix: "tron" - }, - { - tag: "WeaponFactionDamageGrineer", - value: 0.005, - prefix: "argi", - suffix: "con" - }, - { - tag: "WeaponZoomFovMod", - value: 0.006666, - prefix: "hera", - suffix: "lis" - } - ], - LotusModularMeleeRandomModRare: [ - { - tag: "WeaponMeleeDamageMod", - value: 0.0183, - prefix: "visi", - suffix: "ata" - }, - { - tag: "WeaponArmorPiercingDamageMod", - value: 0.0133, - prefix: "insi", - suffix: "cak" - }, - { - tag: "WeaponImpactDamageMod", - value: 0.0133, - prefix: "magna", - suffix: "ton" - }, - { - tag: "WeaponSlashDamageMod", - value: 0.0133, - prefix: "sci", - suffix: "sus" - }, - { - tag: "WeaponCritChanceMod", - value: 0.02, - prefix: "crita", - suffix: "cron" - }, - { - tag: "WeaponCritDamageMod", - value: 0.01, - prefix: "acri", - suffix: "tis" - }, - { - tag: "WeaponElectricityDamageMod", - value: 0.01, - prefix: "vexi", - suffix: "tio" - }, - { - tag: "WeaponFireDamageMod", - value: 0.01, - prefix: "igni", - suffix: "pha" - }, - { - tag: "WeaponFreezeDamageMod", - value: 0.01, - prefix: "geli", - suffix: "do" - }, - { - tag: "WeaponToxinDamageMod", - value: 0.01, - prefix: "toxi", - suffix: "tox" - }, - { - tag: "WeaponProcTimeMod", - value: 0.01111, - prefix: "deci", - suffix: "des" - }, - { - tag: "WeaponMeleeFactionDamageCorpus", - value: 0.005, - prefix: "manti", - suffix: "tron" - }, - { - tag: "WeaponMeleeFactionDamageGrineer", - value: 0.005, - prefix: "argi", - suffix: "con" - }, - { - tag: "WeaponMeleeFactionDamageInfested", - value: 0.005, - prefix: "pura", - suffix: "ada" - }, - { - tag: "WeaponFireRateMod", - value: 0.0061, - prefix: "croni", - suffix: "dra" - }, - { - tag: "WeaponStunChanceMod", - value: 0.01, - prefix: "hexa", - suffix: "dex" - }, - { - tag: "ComboDurationMod", - value: 0.09, - prefix: "tempi", - suffix: "nem" - }, - { - tag: "SlideAttackCritChanceMod", - value: 0.013334, - prefix: "pleci", - suffix: "nent" - }, - { - tag: "WeaponMeleeRangeIncMod", - value: 0.02158, - prefix: "locti", - suffix: "tor" - }, - { - tag: "WeaponMeleeFinisherDamageMod", - value: 0.0133, - prefix: "exi", - suffix: "cta" - }, - { - tag: "WeaponMeleeComboEfficiencyMod", - value: 0.00816, - prefix: "forti", - suffix: "us" - }, - { - tag: "WeaponMeleeComboInitialBonusMod", - value: 0.27224, - prefix: "para", - suffix: "um" - }, - { - tag: "WeaponMeleeComboPointsOnHitMod", - value: -0.01165 - }, - { - tag: "WeaponMeleeComboBonusOnHitMod", - value: 0.00653, - prefix: "laci", - suffix: "nus" - } - ], - LotusModularPistolRandomModRare: [ - { - tag: "WeaponArmorPiercingDamageMod", - value: 0.01333, - prefix: "insi", - suffix: "cak" - }, - { - tag: "WeaponCritChanceMod", - value: 0.016666, - prefix: "crita", - suffix: "cron" - }, - { - tag: "WeaponCritDamageMod", - value: 0.01, - prefix: "acri", - suffix: "tis" - }, - { - tag: "WeaponElectricityDamageMod", - value: 0.01, - prefix: "vexi", - suffix: "tio" - }, - { - tag: "WeaponFireDamageMod", - value: 0.01, - prefix: "igni", - suffix: "pha" - }, - { - tag: "WeaponFireRateMod", - value: 0.0083, - prefix: "croni", - suffix: "dra" - }, - { - tag: "WeaponFreezeDamageMod", - value: 0.01, - prefix: "geli", - suffix: "do" - }, - { - tag: "WeaponImpactDamageMod", - value: 0.013333, - prefix: "magna", - suffix: "ton" - }, - { - tag: "WeaponProcTimeMod", - value: 0.01111, - prefix: "deci", - suffix: "des" - }, - { - tag: "WeaponSlashDamageMod", - value: 0.013333, - prefix: "sci", - suffix: "sus" - }, - { - tag: "WeaponStunChanceMod", - value: 0.01, - prefix: "hexa", - suffix: "dex" - }, - { - tag: "WeaponToxinDamageMod", - value: 0.01, - prefix: "toxi", - suffix: "tox" - }, - { - tag: "WeaponAmmoMaxMod", - value: 0.01, - prefix: "ampi", - suffix: "bin" - }, - { - tag: "WeaponClipMaxMod", - value: 0.005555, - prefix: "arma", - suffix: "tin" - }, - { - tag: "WeaponDamageAmountMod", - value: 0.0244, - prefix: "visi", - suffix: "ata" - }, - { - tag: "WeaponFireIterationsMod", - value: 0.0133, - prefix: "sati", - suffix: "can" - }, - { - tag: "WeaponProjectileSpeedMod", - value: 0.01, - prefix: "conci", - suffix: "nak" - }, - { - tag: "WeaponPunctureDepthMod", - value: 0.03, - prefix: "lexi", - suffix: "nok" - }, - { - tag: "WeaponRecoilReductionMod", - value: -0.01, - prefix: "zeti", - suffix: "mag" - }, - { - tag: "WeaponReloadSpeedMod", - value: 0.005555, - prefix: "feva", - suffix: "tak" - }, - { - tag: "WeaponFactionDamageCorpus", - value: 0.005, - prefix: "manti", - suffix: "tron" - }, - { - tag: "WeaponFactionDamageGrineer", - value: 0.005, - prefix: "argi", - suffix: "con" - }, - { - tag: "WeaponFactionDamageInfested", - value: 0.005, - prefix: "pura", - suffix: "ada" - }, - { - tag: "WeaponZoomFovMod", - value: 0.0089, - prefix: "hera", - suffix: "lis" - } - ], - LotusPistolRandomModRare: [ - { - tag: "WeaponArmorPiercingDamageMod", - value: 0.01333, - prefix: "insi", - suffix: "cak" - }, - { - tag: "WeaponCritChanceMod", - value: 0.016666, - prefix: "crita", - suffix: "cron" - }, - { - tag: "WeaponCritDamageMod", - value: 0.01, - prefix: "acri", - suffix: "tis" - }, - { - tag: "WeaponElectricityDamageMod", - value: 0.01, - prefix: "vexi", - suffix: "tio" - }, - { - tag: "WeaponFireDamageMod", - value: 0.01, - prefix: "igni", - suffix: "pha" - }, - { - tag: "WeaponFireRateMod", - value: 0.0083, - prefix: "croni", - suffix: "dra" - }, - { - tag: "WeaponFreezeDamageMod", - value: 0.01, - prefix: "geli", - suffix: "do" - }, - { - tag: "WeaponImpactDamageMod", - value: 0.013333, - prefix: "magna", - suffix: "ton" - }, - { - tag: "WeaponProcTimeMod", - value: 0.01111, - prefix: "deci", - suffix: "des" - }, - { - tag: "WeaponSlashDamageMod", - value: 0.013333, - prefix: "sci", - suffix: "sus" - }, - { - tag: "WeaponStunChanceMod", - value: 0.01, - prefix: "hexa", - suffix: "dex" - }, - { - tag: "WeaponToxinDamageMod", - value: 0.01, - prefix: "toxi", - suffix: "tox" - }, - { - tag: "WeaponAmmoMaxMod", - value: 0.01, - prefix: "ampi", - suffix: "bin" - }, - { - tag: "WeaponClipMaxMod", - value: 0.005555, - prefix: "arma", - suffix: "tin" - }, - { - tag: "WeaponDamageAmountMod", - value: 0.0244, - prefix: "visi", - suffix: "ata" - }, - { - tag: "WeaponFireIterationsMod", - value: 0.0133, - prefix: "sati", - suffix: "can" - }, - { - tag: "WeaponProjectileSpeedMod", - value: 0.01, - prefix: "conci", - suffix: "nak" - }, - { - tag: "WeaponPunctureDepthMod", - value: 0.03, - prefix: "lexi", - suffix: "nok" - }, - { - tag: "WeaponRecoilReductionMod", - value: -0.01, - prefix: "zeti", - suffix: "mag" - }, - { - tag: "WeaponReloadSpeedMod", - value: 0.005555, - prefix: "feva", - suffix: "tak" - }, - { - tag: "WeaponFactionDamageCorpus", - value: 0.005, - prefix: "manti", - suffix: "tron" - }, - { - tag: "WeaponFactionDamageGrineer", - value: 0.005, - prefix: "argi", - suffix: "con" - }, - { - tag: "WeaponFactionDamageInfested", - value: 0.005, - prefix: "pura", - suffix: "ada" - }, - { - tag: "WeaponZoomFovMod", - value: 0.0089, - prefix: "hera", - suffix: "lis" - } - ], - LotusRifleRandomModRare: [ - { - tag: "WeaponArmorPiercingDamageMod", - value: 0.01333, - prefix: "insi", - suffix: "cak" - }, - { - tag: "WeaponCritChanceMod", - value: 0.016666, - prefix: "crita", - suffix: "cron" - }, - { - tag: "WeaponCritDamageMod", - value: 0.013333, - prefix: "acri", - suffix: "tis" - }, - { - tag: "WeaponElectricityDamageMod", - value: 0.01, - prefix: "vexi", - suffix: "tio" - }, - { - tag: "WeaponFireDamageMod", - value: 0.01, - prefix: "igni", - suffix: "pha" - }, - { - tag: "WeaponFireRateMod", - value: 0.00667, - prefix: "croni", - suffix: "dra" - }, - { - tag: "WeaponFreezeDamageMod", - value: 0.01, - prefix: "geli", - suffix: "do" - }, - { - tag: "WeaponImpactDamageMod", - value: 0.013333, - prefix: "magna", - suffix: "ton" - }, - { - tag: "WeaponProcTimeMod", - value: 0.01111, - prefix: "deci", - suffix: "des" - }, - { - tag: "WeaponSlashDamageMod", - value: 0.013333, - prefix: "sci", - suffix: "sus" - }, - { - tag: "WeaponStunChanceMod", - value: 0.01, - prefix: "hexa", - suffix: "dex" - }, - { - tag: "WeaponToxinDamageMod", - value: 0.01, - prefix: "toxi", - suffix: "tox" - }, - { - tag: "WeaponAmmoMaxMod", - value: 0.00555, - prefix: "ampi", - suffix: "bin" - }, - { - tag: "WeaponClipMaxMod", - value: 0.005555, - prefix: "arma", - suffix: "tin" - }, - { - tag: "WeaponDamageAmountMod", - value: 0.018333, - prefix: "visi", - suffix: "ata" - }, - { - tag: "WeaponFireIterationsMod", - value: 0.01, - prefix: "sati", - suffix: "can" - }, - { - tag: "WeaponProjectileSpeedMod", - value: 0.01, - prefix: "conci", - suffix: "nak" - }, - { - tag: "WeaponPunctureDepthMod", - value: 0.03, - prefix: "lexi", - suffix: "nok" - }, - { - tag: "WeaponRecoilReductionMod", - value: -0.01, - prefix: "zeti", - suffix: "mag" - }, - { - tag: "WeaponReloadSpeedMod", - value: 0.005555, - prefix: "feva", - suffix: "tak" - }, - { - tag: "WeaponFactionDamageCorpus", - value: 0.005, - prefix: "manti", - suffix: "tron" - }, - { - tag: "WeaponFactionDamageGrineer", - value: 0.005, - prefix: "argi", - suffix: "con" - }, - { - tag: "WeaponFactionDamageInfested", - value: 0.005, - prefix: "pura", - suffix: "ada" - }, - { - tag: "WeaponZoomFovMod", - value: 0.006666, - prefix: "hera", - suffix: "lis" - } - ], - LotusShotgunRandomModRare: [ - { - tag: "WeaponArmorPiercingDamageMod", - value: 0.01333, - prefix: "insi", - suffix: "cak" - }, - { - tag: "WeaponCritChanceMod", - value: 0.01, - prefix: "crita", - suffix: "cron" - }, - { - tag: "WeaponCritDamageMod", - value: 0.01, - prefix: "acri", - suffix: "tis" - }, - { - tag: "WeaponElectricityDamageMod", - value: 0.01, - prefix: "vexi", - suffix: "tio" - }, - { - tag: "WeaponFireDamageMod", - value: 0.01, - prefix: "igni", - suffix: "pha" - }, - { - tag: "WeaponFireRateMod", - value: 0.01, - prefix: "croni", - suffix: "dra" - }, - { - tag: "WeaponFreezeDamageMod", - value: 0.01, - prefix: "geli", - suffix: "do" - }, - { - tag: "WeaponImpactDamageMod", - value: 0.013333, - prefix: "magna", - suffix: "ton" - }, - { - tag: "WeaponProcTimeMod", - value: 0.01111, - prefix: "deci", - suffix: "des" - }, - { - tag: "WeaponSlashDamageMod", - value: 0.013333, - prefix: "sci", - suffix: "sus" - }, - { - tag: "WeaponStunChanceMod", - value: 0.01, - prefix: "hexa", - suffix: "dex" - }, - { - tag: "WeaponToxinDamageMod", - value: 0.01, - prefix: "toxi", - suffix: "tox" - }, - { - tag: "WeaponAmmoMaxMod", - value: 0.01, - prefix: "ampi", - suffix: "bin" - }, - { - tag: "WeaponClipMaxMod", - value: 0.005555, - prefix: "arma", - suffix: "tin" - }, - { - tag: "WeaponDamageAmountMod", - value: 0.0183, - prefix: "visi", - suffix: "ata" - }, - { - tag: "WeaponFireIterationsMod", - value: 0.0133, - prefix: "sati", - suffix: "can" - }, - { - tag: "WeaponProjectileSpeedMod", - value: 0.01, - prefix: "conci", - suffix: "nak" - }, - { - tag: "WeaponPunctureDepthMod", - value: 0.03, - prefix: "lexi", - suffix: "nok" - }, - { - tag: "WeaponRecoilReductionMod", - value: -0.01, - prefix: "zeti", - suffix: "mag" - }, - { - tag: "WeaponReloadSpeedMod", - value: 0.005555, - prefix: "feva", - suffix: "tak" - }, - { - tag: "WeaponFactionDamageCorpus", - value: 0.005, - prefix: "manti", - suffix: "tron" - }, - { - tag: "WeaponFactionDamageGrineer", - value: 0.005, - prefix: "argi", - suffix: "con" - }, - { - tag: "WeaponFactionDamageInfested", - value: 0.005, - prefix: "pura", - suffix: "ada" - } - ], - PlayerMeleeWeaponRandomModRare: [ - { - tag: "WeaponMeleeDamageMod", - value: 0.0183, - prefix: "visi", - suffix: "ata" - }, - { - tag: "WeaponArmorPiercingDamageMod", - value: 0.0133, - prefix: "insi", - suffix: "cak" - }, - { - tag: "WeaponImpactDamageMod", - value: 0.0133, - prefix: "magna", - suffix: "ton" - }, - { - tag: "WeaponSlashDamageMod", - value: 0.0133, - prefix: "sci", - suffix: "sus" - }, - { - tag: "WeaponCritChanceMod", - value: 0.02, - prefix: "crita", - suffix: "cron" - }, - { - tag: "WeaponCritDamageMod", - value: 0.01, - prefix: "acri", - suffix: "tis" - }, - { - tag: "WeaponElectricityDamageMod", - value: 0.01, - prefix: "vexi", - suffix: "tio" - }, - { - tag: "WeaponFireDamageMod", - value: 0.01, - prefix: "igni", - suffix: "pha" - }, - { - tag: "WeaponFreezeDamageMod", - value: 0.01, - prefix: "geli", - suffix: "do" - }, - { - tag: "WeaponToxinDamageMod", - value: 0.01, - prefix: "toxi", - suffix: "tox" - }, - { - tag: "WeaponProcTimeMod", - value: 0.01111, - prefix: "deci", - suffix: "des" - }, - { - tag: "WeaponMeleeFactionDamageCorpus", - value: 0.005, - prefix: "manti", - suffix: "tron" - }, - { - tag: "WeaponMeleeFactionDamageGrineer", - value: 0.005, - prefix: "argi", - suffix: "con" - }, - { - tag: "WeaponMeleeFactionDamageInfested", - value: 0.005, - prefix: "pura", - suffix: "ada" - }, - { - tag: "WeaponFireRateMod", - value: 0.0061, - prefix: "croni", - suffix: "dra" - }, - { - tag: "WeaponStunChanceMod", - value: 0.01, - prefix: "hexa", - suffix: "dex" - }, - { - tag: "ComboDurationMod", - value: 0.09, - prefix: "tempi", - suffix: "nem" - }, - { - tag: "SlideAttackCritChanceMod", - value: 0.013334, - prefix: "pleci", - suffix: "nent" - }, - { - tag: "WeaponMeleeRangeIncMod", - value: 0.02158, - prefix: "locti", - suffix: "tor" - }, - { - tag: "WeaponMeleeFinisherDamageMod", - value: 0.0133, - prefix: "exi", - suffix: "cta" - }, - { - tag: "WeaponMeleeComboEfficiencyMod", - value: 0.00816, - prefix: "forti", - suffix: "us" - }, - { - tag: "WeaponMeleeComboInitialBonusMod", - value: 0.27224, - prefix: "para", - suffix: "um" - }, - { - tag: "WeaponMeleeComboPointsOnHitMod", - value: -0.01165 - }, - { - tag: "WeaponMeleeComboBonusOnHitMod", - value: 0.00653, - prefix: "laci", - suffix: "nus" - } - ] -}; - -function rivenIntToFloat(i) { - const f = i / 0x3fffffff; // 1073741823 - if (f >= 0.0 && f <= 1.0) { - return f; - } - return 0.0; -} - -function floatToRivenInt(f) { - return Math.round(f * 0x3fffffff); -} - -function lerp(a, b, t) { - return a + (b - a) * t; -} - -const numBuffsAtten = [0, 1, 0.66000003, 0.5, 0.40000001, 0.34999999]; -const numBuffsCurseAtten = [0, 1, 0.33000001, 0.5, 1.25, 1.5]; - -function valueToDisplayValue(tag, value) { - if (tag == "WeaponMeleeComboInitialBonusMod") { - return Math.round(value * 10) / 10; - } - return Math.round(value * 1000) / 10; -} - -function displayValueToValue(tag, displayValue) { - if (tag == "WeaponMeleeComboInitialBonusMod") { - return displayValue; - } - return displayValue / 100; -} - -function toTitleCase(word) { - return word.charAt(0).toUpperCase() + word.substr(1); -} - -function parseRiven( - rivenType, // the part after /Lotus/Upgrades/Mods/Randomized/ - fingerprint, - omegaAttenuation // the weapon's riven disposition -) { - const curseAtten = Math.pow(1.25, fingerprint.curses.length); - - let stats = []; - - let attenuation = 1; - attenuation *= 1.5; // SPECIFIC_FIT_ATTENUATION - attenuation *= omegaAttenuation; - attenuation *= 10; // getBaseDrain(RIVEN_BASE_DRAIN) - - for (const buff of fingerprint.buffs) { - let upgradeValue = riven_tags[rivenType].find(x => x.tag == buff.Tag).value; - upgradeValue *= attenuation; - upgradeValue *= curseAtten; - upgradeValue *= lerp(0.9, 1.1, rivenIntToFloat(buff.Value)); - upgradeValue *= numBuffsAtten[Math.min(fingerprint.buffs.length, numBuffsAtten.length - 1)]; - upgradeValue *= fingerprint.lvl + 1; - stats.push({ - tag: buff.Tag, - value: upgradeValue, - displayValue: valueToDisplayValue(buff.Tag, upgradeValue) - }); - } - - for (const curse of fingerprint.curses) { - let upgradeValue = riven_tags[rivenType].find(x => x.tag == curse.Tag).value * -1.0; - upgradeValue *= attenuation; - upgradeValue *= lerp(0.9, 1.1, rivenIntToFloat(curse.Value)); - upgradeValue *= numBuffsCurseAtten[Math.min(fingerprint.buffs.length, numBuffsCurseAtten.length - 1)]; - upgradeValue *= numBuffsAtten[Math.min(fingerprint.curses.length, numBuffsAtten.length - 1)]; - upgradeValue *= fingerprint.lvl + 1; - stats.push({ - tag: curse.Tag, - value: upgradeValue, - displayValue: valueToDisplayValue(curse.Tag, upgradeValue) - }); - } - - let name = ""; - const sortedBuffs = structuredClone(fingerprint.buffs).sort((a, b) => { - if (a.Value == b.Value) { - return ( - riven_tags[rivenType].find(x => x.tag == b.Tag).value - - riven_tags[rivenType].find(x => x.tag == a.Tag).value - ); - } - return b.Value - a.Value; - }); - for (const buff of sortedBuffs) { - if (buff.Tag == sortedBuffs[sortedBuffs.length - 1].Tag) { - name += riven_tags[rivenType].find(x => x.tag == buff.Tag).suffix; - } else if (buff.Tag == sortedBuffs[0].Tag) { - name += toTitleCase(riven_tags[rivenType].find(x => x.tag == buff.Tag).prefix); - } else { - name += "-"; - name += riven_tags[rivenType].find(x => x.tag == buff.Tag).prefix; - } - } - - return { stats, name }; -} - -function unparseBuff(rivenType, omegaAttenuation, lvl, numBuffs, numCurses, tag, value) { - const curseAtten = Math.pow(1.25, numCurses); - - let attenuation = 1; - attenuation *= 1.5; // SPECIFIC_FIT_ATTENUATION - attenuation *= omegaAttenuation; - attenuation *= 10; // getBaseDrain(RIVEN_BASE_DRAIN) - - value /= lvl + 1; - value /= numBuffsAtten[Math.min(numBuffs, numBuffsAtten.length - 1)]; - value /= curseAtten; - value /= attenuation; - value /= riven_tags[rivenType].find(x => x.tag == tag).value; - - value -= 0.9; // 0.9..1.1 -> 0.0..0.2 - value /= 0.2; // 0.0..0.2 -> 0.0..1.0 - - return value; -} - -function unparseCurse(rivenType, omegaAttenuation, lvl, numBuffs, numCurses, tag, value) { - let attenuation = 1; - attenuation *= 1.5; // SPECIFIC_FIT_ATTENUATION - attenuation *= omegaAttenuation; - attenuation *= 10; // getBaseDrain(RIVEN_BASE_DRAIN) - - value /= lvl + 1; - value /= numBuffsAtten[Math.min(numCurses, numBuffsAtten.length - 1)]; - value /= numBuffsCurseAtten[Math.min(numBuffs, numBuffsCurseAtten.length - 1)]; - value /= attenuation; - value /= riven_tags[rivenType].find(x => x.tag == tag).value; - value /= -1.0; - - value -= 0.9; // 0.9..1.1 -> 0.0..0.2 - value /= 0.2; // 0.0..0.2 -> 0.0..1.0 - - return value; -} - -function floatToGrade(value) { - value = lerp(-10, +10, value); - if (value >= +9.5) return "S"; - if (value >= +7.5) return "A+"; - if (value >= +5.5) return "A"; - if (value >= +3.5) return "A-"; - if (value >= +1.5) return "B+"; - if (value >= -1.5) return "B"; - if (value >= -3.5) return "B-"; - if (value >= -5.5) return "C+"; - if (value >= -7.5) return "C"; - if (value >= -9.5) return "C-"; - return "F"; -} - -const RivenParser = { - riven_tags, - rivenIntToFloat, - floatToRivenInt, - valueToDisplayValue, - displayValueToValue, - parseRiven, - unparseBuff, - unparseCurse, - floatToGrade -}; -if (typeof module != "undefined") { - module.exports = RivenParser; -} -if (typeof window != "undefined") { - window.RivenParser = RivenParser; -} diff --git a/static/webui/script.js b/static/webui/script.js index 6fa3bbee..a50e0ab6 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -227,7 +227,7 @@ function updateInventory() { { const a = document.createElement("a"); a.href = - "https://riven.builds.wf/#" + + "riven-tool/#" + encodeURIComponent( JSON.stringify({ rivenType: rivenType, -- 2.47.2 From ae8913931ccc85cb2d11f9a4bcb89d72523c864c Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 1 Jun 2024 18:22:02 +0200 Subject: [PATCH 142/522] feat: implement focus.php (#254) --- src/controllers/api/focusController.ts | 151 ++++++++++++++++++++- src/types/inventoryTypes/inventoryTypes.ts | 2 + static/json/baseFocusPointCosts.json | 82 +++++++++++ 3 files changed, 231 insertions(+), 4 deletions(-) create mode 100644 static/json/baseFocusPointCosts.json diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index f5d945fc..b2ac53f6 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -1,6 +1,149 @@ -import { Handler } from "express"; +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory, addMiscItems } from "@/src/services/inventoryService"; +import { IMiscItem, TFocusPolarity } from "@/src/types/inventoryTypes/inventoryTypes"; +import { logger } from "@/src/utils/logger"; +import baseFocusPointCosts from "@/static/json/baseFocusPointCosts.json"; -export const focusController: Handler = (_req, _res) => { - //console.log("focusController", req.query); - _res.sendStatus(400); +export const focusController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + switch (req.query.op) { + default: + logger.error("Unhandled focus op type: " + req.query.op); + logger.debug(req.body.toString()); + res.end(); + break; + case FocusOperation.UnlockWay: { + const focusType = (JSON.parse(req.body.toString()) as IWayRequest).FocusType; + const focusPolarity = focusTypeToPolarity(focusType); + const inventory = await getInventory(accountId); + const cost = inventory.FocusAbility ? 50_000 : 0; + inventory.FocusAbility ??= focusType; + inventory.FocusUpgrades.push({ ItemType: focusType }); + if (inventory.FocusXP) { + inventory.FocusXP[focusPolarity] -= cost; + } + await inventory.save(); + res.json({ + FocusUpgrade: { ItemType: focusType }, + FocusPointCosts: { [focusPolarity]: cost } + }); + break; + } + case FocusOperation.ActivateWay: { + const focusType = (JSON.parse(req.body.toString()) as IWayRequest).FocusType; + const inventory = await getInventory(accountId); + inventory.FocusAbility = focusType; + await inventory.save(); + res.end(); + break; + } + case FocusOperation.UnlockUpgrade: { + const request = JSON.parse(req.body.toString()) as IUnlockUpgradeRequest; + const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]); + const inventory = await getInventory(accountId); + let cost = 0; + for (const focusType of request.FocusTypes) { + cost += baseFocusPointCosts[focusType as keyof typeof baseFocusPointCosts]; + inventory.FocusUpgrades.push({ ItemType: focusType, Level: 0 }); + } + inventory.FocusXP[focusPolarity] -= cost; + await inventory.save(); + res.json({ + FocusTypes: request.FocusTypes, + FocusPointCosts: { [focusPolarity]: cost } + }); + break; + } + case FocusOperation.LevelUpUpgrade: { + const request = JSON.parse(req.body.toString()) as ILevelUpUpgradeRequest; + const focusPolarity = focusTypeToPolarity(request.FocusInfos[0].ItemType); + const inventory = await getInventory(accountId); + let cost = 0; + for (const focusUpgrade of request.FocusInfos) { + cost += focusUpgrade.FocusXpCost; + const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!; + focusUpgradeDb.Level = focusUpgrade.Level; + if (focusUpgrade.IsUniversal) { + focusUpgradeDb.IsUniversal = true; + } + } + inventory.FocusXP[focusPolarity] -= cost; + await inventory.save(); + res.json({ + FocusInfos: request.FocusInfos, + FocusPointCosts: { [focusPolarity]: cost } + }); + break; + } + case FocusOperation.ConvertShard: { + const request = JSON.parse(req.body.toString()) as IConvertShardRequest; + // Tally XP + let xp = 0; + for (const shard of request.Shards) { + xp += shardValues[shard.ItemType as keyof typeof shardValues] * shard.ItemCount; + } + // Send response + res.json({ + FocusPointGains: { + [request.Polarity]: xp + }, + MiscItemCosts: request.Shards + }); + // Commit added XP and removed shards to DB + for (const shard of request.Shards) { + shard.ItemCount *= -1; + } + const inventory = await getInventory(accountId); + inventory.FocusXP ??= { AP_POWER: 0, AP_TACTIC: 0, AP_DEFENSE: 0, AP_ATTACK: 0, AP_WARD: 0 }; + inventory.FocusXP[request.Polarity] += xp; + addMiscItems(inventory, request.Shards); + await inventory.save(); + break; + } + } +}; + +enum FocusOperation { + UnlockWay = "2", + UnlockUpgrade = "3", + LevelUpUpgrade = "4", + ActivateWay = "5", + ConvertShard = "9" +} + +// For UnlockWay & ActivateWay +interface IWayRequest { + FocusType: string; +} + +interface IUnlockUpgradeRequest { + FocusTypes: string[]; +} + +interface ILevelUpUpgradeRequest { + FocusInfos: { + ItemType: string; + FocusXpCost: number; + IsUniversal: boolean; + Level: number; + IsActiveAbility: boolean; + }[]; +} + +interface IConvertShardRequest { + Shards: IMiscItem[]; + Polarity: TFocusPolarity; +} + +// Works for ways & upgrades +const focusTypeToPolarity = (type: string): TFocusPolarity => { + return ("AP_" + type.substr(1).split("/")[3].toUpperCase()) as TFocusPolarity; +}; + +const shardValues = { + "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardCommonItem": 2_500, + "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardSynthesizedItem": 5_000, + "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem": 25_000, + "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantTierTwoItem": 40_000 }; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 8bf01538..1173be27 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -553,6 +553,8 @@ export interface IFocusXP { AP_WARD: number; } +export type TFocusPolarity = keyof IFocusXP; + export interface IFusionTreasure { ItemCount: number; ItemType: string; diff --git a/static/json/baseFocusPointCosts.json b/static/json/baseFocusPointCosts.json new file mode 100644 index 00000000..5f69e30b --- /dev/null +++ b/static/json/baseFocusPointCosts.json @@ -0,0 +1,82 @@ +{ + "/Lotus/Upgrades/Focus/Attack/Active/AttackEfficiencyFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Attack/Active/BlastChargeFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Attack/Active/BlastFireballFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Attack/Active/CloakAttackChargeFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Attack/Active/CloakBlindFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Attack/Active/ConsecutiveEfficienyUpgrade": 60000, + "/Lotus/Upgrades/Focus/Attack/Active/ConsecutivePowerUpgrade": 95000, + "/Lotus/Upgrades/Focus/Attack/Active/DashDamageFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Attack/Active/DashFireFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Attack/Active/GhostWaveUpgrade": 60000, + "/Lotus/Upgrades/Focus/Attack/Active/GhostlyTouchUpgrade": 95000, + "/Lotus/Upgrades/Focus/Attack/Residual/ElementalDamageFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Attack/Residual/PhysicalDamageFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Attack/Residual/PowerSnapFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Attack/Stats/MoreAmmoFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Attack/Stats/RegenAmmoFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Defense/Active/BlastAllyShieldFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Defense/Active/BlastSelfShieldFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Defense/Active/CloakHealFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Defense/Active/CloakHealOthersFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Defense/Active/CloakShieldFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Defense/Active/DashImmunityFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Defense/Active/DashShockwaveFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Defense/Active/DefenseShieldBreakFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Defense/Active/DefenseShieldFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Defense/Active/SonicDissipationUpgrade": 60000, + "/Lotus/Upgrades/Focus/Defense/Residual/InstantReviveFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Defense/Residual/RadialXpFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Defense/Stats/HealthMaxFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Defense/Stats/HealthRegenFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Power/Active/BlastBurstFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Power/Active/BlastSlowFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Power/Active/CloakPullFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Power/Active/CloakStaticFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Power/Active/DashBubbleFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Power/Active/DashElectricityFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Power/Active/DisarmedEnergyUpgrade": 95000, + "/Lotus/Upgrades/Focus/Power/Active/DisarmingProjectionUpgrade": 60000, + "/Lotus/Upgrades/Focus/Power/Active/PowerFieldFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Power/Residual/EnergyOverTimeFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Power/Residual/FreeAbilityCastsFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Power/Residual/SlowHeadshotDamageFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Power/Stats/EnergyPoolFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Power/Stats/EnergyRestoreFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Tactic/Active/BlastConfuseFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Tactic/Active/BlastDisarmFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Tactic/Active/CloakMeleeCritFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Tactic/Active/CloakRevealFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Tactic/Active/ComboAmpDamageFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Tactic/Active/DashFinisherFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Tactic/Active/DashWaveFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Tactic/Active/FinisherTransferenceUpgrade": 95000, + "/Lotus/Upgrades/Focus/Tactic/Active/LiftHitDamageUpgrade": 95000, + "/Lotus/Upgrades/Focus/Tactic/Active/LiftHitWaveUpgrade": 60000, + "/Lotus/Upgrades/Focus/Tactic/Active/ProjectionExecutionUpgrade": 60000, + "/Lotus/Upgrades/Focus/Tactic/Active/ProjectionStretchUpgrade": 95000, + "/Lotus/Upgrades/Focus/Tactic/Active/SlamComboFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Tactic/Residual/MeleeComboFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Tactic/Residual/MeleeXpFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Tactic/Stats/DashSpeedFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Tactic/Stats/MoveSpeedFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Ward/Active/BlastBulletAttractorFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Ward/Active/BlastDamagePickupFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Ward/Active/ClearStaticOnKillFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Ward/Active/CloakAllyCloakFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Ward/Active/CloakReduceDamageFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Ward/Active/DashReduceArmourFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Ward/Active/DashReduceDamageFocusUpgrade": 80000, + "/Lotus/Upgrades/Focus/Ward/Active/InvulnerableReturnFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Ward/Active/KnockdownImmunityFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Ward/Active/MagneticExtensionUpgrade": 95000, + "/Lotus/Upgrades/Focus/Ward/Active/MagneticFieldFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Ward/Active/SunderingDissipationUpgrade": 60000, + "/Lotus/Upgrades/Focus/Ward/Active/UnairuWispFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Ward/Residual/ArmourBuffFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Ward/Residual/ReflectDamageFocusUpgrade": 25000, + "/Lotus/Upgrades/Focus/Ward/Residual/SecondChanceDamageBuffFocusUpgrade": 95000, + "/Lotus/Upgrades/Focus/Ward/Residual/SecondChanceFocusUpgrade": 60000, + "/Lotus/Upgrades/Focus/Ward/Stats/ArmourIncreaseFocusUpgrade": 50000, + "/Lotus/Upgrades/Focus/Ward/Stats/BlastRadiusFocusUpgrade": 50000 +} -- 2.47.2 From 41f4065a390fe7b01f2a17d75ea065a9d914e967 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 2 Jun 2024 14:31:20 +0200 Subject: [PATCH 143/522] feat: handle installation of aura & stance formas (#264) --- src/controllers/api/upgradesController.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 09592daf..a90d02b8 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -58,6 +58,8 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/Forma": + case "/Lotus/Types/Items/MiscItems/FormaAura": + case "/Lotus/Types/Items/MiscItems/FormaStance": for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.XP = 0; -- 2.47.2 From 259822d60ac7913a2a3e9ad25565ee32c5c5a164 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 2 Jun 2024 14:31:49 +0200 Subject: [PATCH 144/522] fix: npm run build && npm run start (again) (#263) --- package.json | 2 +- src/routes/webui.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index f0e06c0b..87a35cf0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "start": "node --import ./build/src/pathman.js build/src/index.js", "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts ", - "build": "tsc && copyfiles static/webui/* build", + "build": "tsc && copyfiles static/webui/** build", "lint": "eslint --ext .ts .", "lint:fix": "eslint --fix --ext .ts .", "prettier": "prettier --write ." diff --git a/src/routes/webui.ts b/src/routes/webui.ts index 750df395..677031c6 100644 --- a/src/routes/webui.ts +++ b/src/routes/webui.ts @@ -3,6 +3,7 @@ import path from "path"; const webuiRouter = express.Router(); const rootDir = path.join(__dirname, "../.."); +const repoDir = path.basename(rootDir) == "build" ? path.join(rootDir, "..") : rootDir; // Redirect / to /webui/ webuiRouter.get("/", (_req, res) => { @@ -35,10 +36,10 @@ webuiRouter.get("/favicon.ico", (_req, res) => { // Serve warframe-riven-info webuiRouter.get("/webui/riven-tool/", (_req, res) => { - res.sendFile(path.join(rootDir, "node_modules/warframe-riven-info/index.html")); + res.sendFile(path.join(repoDir, "node_modules/warframe-riven-info/index.html")); }); webuiRouter.get("/webui/riven-tool/RivenParser.js", (_req, res) => { - res.sendFile(path.join(rootDir, "node_modules/warframe-riven-info/RivenParser.js")); + res.sendFile(path.join(repoDir, "node_modules/warframe-riven-info/RivenParser.js")); }); export { webuiRouter }; -- 2.47.2 From 3e4eeb601d25ab7b91b0d75d3a460654be0dfb0b Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 2 Jun 2024 15:28:11 +0200 Subject: [PATCH 145/522] fix: don't fail lint on missing semicolon; prettier will fix it (#266) --- .eslintrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index 615dc50a..e2313617 100644 --- a/.eslintrc +++ b/.eslintrc @@ -11,7 +11,7 @@ "node": true }, "rules": { - "@typescript-eslint/semi": ["error"], + "@typescript-eslint/semi": "warn", "@typescript-eslint/explicit-function-return-type": "warn", "@typescript-eslint/explicit-module-boundary-types": "warn", "@typescript-eslint/restrict-template-expressions": "warn", -- 2.47.2 From 2a1a4e77b5cbe9045f5545e56b171d7412a5b63e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Sun, 2 Jun 2024 18:35:06 +0300 Subject: [PATCH 146/522] feat: syndicates (#269) Co-authored-by: janisslsm --- .../api/syndicateSacrificeController.ts | 25 +++++++ .../api/updateChallengeProgressController.ts | 16 ++-- src/routes/api.ts | 2 + src/services/inventoryService.ts | 75 ++++++++++++++++++- src/types/inventoryTypes/inventoryTypes.ts | 5 ++ src/types/requestTypes.ts | 17 ++++- src/types/syndicateTypes.ts | 13 ++++ 7 files changed, 141 insertions(+), 12 deletions(-) create mode 100644 src/controllers/api/syndicateSacrificeController.ts create mode 100644 src/types/syndicateTypes.ts diff --git a/src/controllers/api/syndicateSacrificeController.ts b/src/controllers/api/syndicateSacrificeController.ts new file mode 100644 index 00000000..e6ee04b9 --- /dev/null +++ b/src/controllers/api/syndicateSacrificeController.ts @@ -0,0 +1,25 @@ +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { syndicateSacrifice } from "@/src/services/inventoryService"; +import { ISyndicateSacrifice } from "@/src/types/syndicateTypes"; +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const syndicateSacrificeController: RequestHandler = async (request, response) => { + const accountId = await getAccountIdForRequest(request); + const body = getJSONfromString(request.body); + let reply = {}; + try { + const update = JSON.parse(body) as ISyndicateSacrifice; + if (typeof update !== "object") { + throw new Error("Invalid data format"); + } + + reply = await syndicateSacrifice(update, accountId); + } catch (err) { + console.error("Error parsing JSON data:", err); + } + + response.json(reply); +}; + +export { syndicateSacrificeController }; diff --git a/src/controllers/api/updateChallengeProgressController.ts b/src/controllers/api/updateChallengeProgressController.ts index 45490ce3..e41880e6 100644 --- a/src/controllers/api/updateChallengeProgressController.ts +++ b/src/controllers/api/updateChallengeProgressController.ts @@ -1,19 +1,15 @@ import { RequestHandler } from "express"; -import { IChallengeProgress } from "@/src/types/inventoryTypes/inventoryTypes"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getInventory, addChallenges } from "@/src/services/inventoryService"; - -interface IUpdateChallengeProgessRequest { - ChallengeProgress: IChallengeProgress[]; -} +import { updateChallengeProgress } from "@/src/services/inventoryService"; +import { IUpdateChallengeProgressRequest } from "@/src/types/requestTypes"; const updateChallengeProgressController: RequestHandler = async (req, res) => { - const payload: IUpdateChallengeProgessRequest = getJSONfromString(req.body.toString()); + const payload: IUpdateChallengeProgressRequest = getJSONfromString(req.body.toString()); const accountId = await getAccountIdForRequest(req); - const inventory = await getInventory(accountId); - addChallenges(inventory, payload.ChallengeProgress); - await inventory.save(); + + await updateChallengeProgress(payload, accountId); + res.status(200).end(); }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 8ca15002..fc1a1ee2 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -52,6 +52,7 @@ import { getGuildLogController } from "../controllers/api/getGuildLogController" import { guildTechController } from "../controllers/api/guildTechController"; import { dojoController } from "@/src/controllers/api/dojoController"; import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController"; +import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; const apiRouter = express.Router(); @@ -114,5 +115,6 @@ apiRouter.post("/createGuild.php", createGuildController); apiRouter.post("/sell.php", sellController); apiRouter.post("/upgrades.php", upgradesController); apiRouter.post("/guildTech.php", guildTechController); +apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); export { apiRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index bc10e555..6727a75e 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -13,12 +13,19 @@ import { IMiscItem, IMission, IRawUpgrade, + ISeasonChallengeHistory, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate } from "../types/genericUpdate"; -import { IArtifactsRequest, IMissionInventoryUpdateRequest, IThemeUpdateRequest } from "../types/requestTypes"; +import { + IArtifactsRequest, + IMissionInventoryUpdateRequest, + IThemeUpdateRequest, + IUpdateChallengeProgressRequest +} from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal } from "@/src/services/itemDataService"; +import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; export const createInventory = async ( accountOwnerId: Types.ObjectId, @@ -164,6 +171,28 @@ export const updateTheme = async (data: IThemeUpdateRequest, accountId: string) await inventory.save(); }; +export const syndicateSacrifice = async ( + data: ISyndicateSacrifice, + accountId: string +): Promise => { + const inventory = await getInventory(accountId); + const syndicate = inventory.Affiliations.find(x => x.Tag == data.AffiliationTag); + const level = data.SacrificeLevel - (syndicate?.Title ?? 0); + const res: ISyndicateSacrificeResponse = { + AffiliationTag: data.AffiliationTag, + InventoryChanges: [], + Level: data.SacrificeLevel, + LevelIncrease: level <= 0 ? 1 : level, + NewEpisodeReward: syndicate?.Tag == "RadioLegionIntermission9Syndicate" + }; + + if (syndicate?.Title !== undefined) syndicate.Title += 1; + + await inventory.save(); + + return res; +}; + export const addWeapon = async ( weaponType: WeaponTypeInternal, weaponName: string, @@ -290,6 +319,32 @@ export const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawU }); }; +export const updateChallengeProgress = async (challenges: IUpdateChallengeProgressRequest, accountId: string) => { + const inventory = await getInventory(accountId); + + addChallenges(inventory, challenges.ChallengeProgress); + addSeasonalChallengeHistory(inventory, challenges.SeasonChallengeHistory); + + await inventory.save(); +}; + +export const addSeasonalChallengeHistory = ( + inventory: IInventoryDatabaseDocument, + itemsArray: ISeasonChallengeHistory[] | undefined +) => { + const category = inventory.SeasonChallengeHistory; + + itemsArray?.forEach(({ challenge, id }) => { + const itemIndex = category.findIndex(i => i.challenge === challenge); + + if (itemIndex !== -1) { + category[itemIndex].id = id; + } else { + category.push({ challenge, id }); + } + }); +}; + export const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { const category = inventory.ChallengeProgress; @@ -330,6 +385,24 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques // endo inventory.FusionPoints += FusionPoints || 0; + // syndicate + data.AffiliationChanges?.forEach(affiliation => { + const syndicate = inventory.Affiliations.find(x => x.Tag == affiliation.Tag); + if (syndicate !== undefined) { + syndicate.Standing = + syndicate.Standing === undefined ? affiliation.Standing : syndicate.Standing + affiliation.Standing; + syndicate.Title = syndicate.Title === undefined ? affiliation.Title : syndicate.Title + affiliation.Title; + } else { + inventory.Affiliations.push({ + Standing: affiliation.Standing, + Title: affiliation.Title, + Tag: affiliation.Tag, + FreeFavorsEarned: [], + FreeFavorsUsed: [] + }); + } + }); + // Gear XP gearKeys.forEach(key => addGearExpByCategory(inventory, data[key], key)); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 1173be27..decec7c1 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1028,6 +1028,11 @@ export interface ISeasonChallengeHistory { id: string; } +export interface ISeasonChallengeCompletions { + challenge: string; + id: string; +} + export interface ISentientSpawnChanceBoosters { numOceanMissionsCompleted: number; } diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 6693c598..bdb68be4 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -7,7 +7,9 @@ import { ICrewShipSalvagedWeaponSkin, IMiscItem, IMission, - IRawUpgrade + IRawUpgrade, + ISeasonChallengeCompletions, + ISeasonChallengeHistory } from "./inventoryTypes/inventoryTypes"; import { IWeaponClient } from "./inventoryTypes/weaponTypes"; import { ISuitClient } from "./inventoryTypes/SuitTypes"; @@ -25,9 +27,22 @@ export interface IThemeUpdateRequest { Sounds?: string; } +export interface IAffiliationChange { + Tag: string; + Standing: number; + Title: number; +} + +export interface IUpdateChallengeProgressRequest { + ChallengeProgress: IChallengeProgress[]; + SeasonChallengeHistory: ISeasonChallengeHistory[]; + SeasonChallengeCompletions: ISeasonChallengeCompletions[]; +} + export interface IMissionInventoryUpdateRequest { rewardsMultiplier?: number; ActiveBoosters?: IBooster[]; + AffiliationChanges?: IAffiliationChange[]; LongGuns?: IWeaponClient[]; Pistols?: IWeaponClient[]; Suits?: ISuitClient[]; diff --git a/src/types/syndicateTypes.ts b/src/types/syndicateTypes.ts new file mode 100644 index 00000000..fae4e446 --- /dev/null +++ b/src/types/syndicateTypes.ts @@ -0,0 +1,13 @@ +export interface ISyndicateSacrifice { + AffiliationTag: string; + SacrificeLevel: number; + AllowMultiple: boolean; +} + +export interface ISyndicateSacrificeResponse { + AffiliationTag: string; + Level: number; + LevelIncrease: number; + InventoryChanges: any[]; + NewEpisodeReward: boolean; +} -- 2.47.2 From defaf61b79a5d2413a2a81f05b0946154a552a2f Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 2 Jun 2024 17:36:04 +0200 Subject: [PATCH 147/522] feat: add completeAllQuests to config (#268) --- config.json.example | 1 + src/controllers/api/inventoryController.ts | 14 ++++- src/services/configService.ts | 1 + static/fixed_responses/allQuestKeys.json | 72 +++++++++++----------- 4 files changed, 51 insertions(+), 37 deletions(-) diff --git a/config.json.example b/config.json.example index 8d634d8f..c3a7eddd 100644 --- a/config.json.example +++ b/config.json.example @@ -14,6 +14,7 @@ "unlockAllScans": true, "unlockAllMissions": true, "unlockAllQuests": true, + "completeAllQuests": false, "infiniteResources": true, "unlockallShipFeatures": true, "unlockAllShipDecorations": true, diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index a2fed533..e78bf3d8 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -50,7 +50,19 @@ const inventoryController: RequestHandler = async (request: Request, response: R inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked"); } - if (config.unlockAllQuests) inventoryResponse.QuestKeys = allQuestKeys; + if (config.unlockAllQuests) { + for (const questKey of allQuestKeys) { + if (!inventoryResponse.QuestKeys.find(quest => quest.ItemType == questKey)) { + inventoryResponse.QuestKeys.push({ ItemType: questKey }); + } + } + } + if (config.completeAllQuests) { + for (const quest of inventoryResponse.QuestKeys) { + quest.Completed = true; + } + } + if (config.unlockAllShipDecorations) inventoryResponse.ShipDecorations = allShipDecorations; if (config.unlockAllFlavourItems) inventoryResponse.FlavourItems = allFlavourItems satisfies IFlavourItem[]; diff --git a/src/services/configService.ts b/src/services/configService.ts index b7922349..b70e24df 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -12,6 +12,7 @@ interface IConfig { unlockAllScans?: boolean; unlockAllMissions?: boolean; unlockAllQuests?: boolean; + completeAllQuests?: boolean; infiniteResources?: boolean; unlockallShipFeatures?: boolean; unlockAllShipDecorations?: boolean; diff --git a/static/fixed_responses/allQuestKeys.json b/static/fixed_responses/allQuestKeys.json index 61520beb..370197b9 100644 --- a/static/fixed_responses/allQuestKeys.json +++ b/static/fixed_responses/allQuestKeys.json @@ -1,38 +1,38 @@ [ - { "ItemType": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/GlassQuest/GlassQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/SolarisQuest/SolarisQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/ArchwingQuest/ArchwingQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/GetClemQuest/GetClemQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/SpyQuestKeyChain/SpyQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/DragonQuest/DragonQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/LimboQuest/LimboQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/SentientQuest/SentientQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/MirageQuest/MirageQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/InfestedAladVQuest/InfestedAladVQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/GolemQuest/GolemQuestKeyChainItem" }, - { "ItemType": "/Lotus/Types/Keys/BardQuest/BardQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/FairyQuest/FairyQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/IndexQuest/IndexQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/PriestFrameQuest/PriestQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/ApostasyQuest/ApostasyKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/SacrificeQuest/SacrificeQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/ChimeraQuest/ChimeraKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/MummyQuest/MummyQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/NewWarIntroQuest/NewWarIntroKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/ProteaQuest/ProteaQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/RevenantQuest/RevenantQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/WraithQuest/WraithQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/YareliQuest/YareliQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/ZarimanQuest/ZarimanQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/KahlQuest/KahlQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain" }, - { "ItemType": "/Lotus/Types/Keys/EntratiLab/EntratiQuestKeyChain" } + "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain", + "/Lotus/Types/Keys/GlassQuest/GlassQuestKeyChain", + "/Lotus/Types/Keys/SolarisQuest/SolarisQuestKeyChain", + "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain", + "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain", + "/Lotus/Types/Keys/ArchwingQuest/ArchwingQuestKeyChain", + "/Lotus/Types/Keys/GetClemQuest/GetClemQuestKeyChain", + "/Lotus/Types/Keys/SpyQuestKeyChain/SpyQuestKeyChain", + "/Lotus/Types/Keys/DragonQuest/DragonQuestKeyChain", + "/Lotus/Types/Keys/LimboQuest/LimboQuestKeyChain", + "/Lotus/Types/Keys/SentientQuest/SentientQuestKeyChain", + "/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain", + "/Lotus/Types/Keys/MirageQuest/MirageQuestKeyChain", + "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain", + "/Lotus/Types/Keys/InfestedAladVQuest/InfestedAladVQuestKeyChain", + "/Lotus/Types/Keys/GolemQuest/GolemQuestKeyChainItem", + "/Lotus/Types/Keys/BardQuest/BardQuestKeyChain", + "/Lotus/Types/Keys/FairyQuest/FairyQuestKeyChain", + "/Lotus/Types/Keys/IndexQuest/IndexQuestKeyChain", + "/Lotus/Types/Keys/PriestFrameQuest/PriestQuestKeyChain", + "/Lotus/Types/Keys/ApostasyQuest/ApostasyKeyChain", + "/Lotus/Types/Keys/SacrificeQuest/SacrificeQuestKeyChain", + "/Lotus/Types/Keys/ChimeraQuest/ChimeraKeyChain", + "/Lotus/Types/Keys/MummyQuest/MummyQuestKeyChain", + "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestKeyChain", + "/Lotus/Types/Keys/NewWarIntroQuest/NewWarIntroKeyChain", + "/Lotus/Types/Keys/ProteaQuest/ProteaQuestKeyChain", + "/Lotus/Types/Keys/RevenantQuest/RevenantQuestKeyChain", + "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain", + "/Lotus/Types/Keys/WraithQuest/WraithQuestKeyChain", + "/Lotus/Types/Keys/YareliQuest/YareliQuestKeyChain", + "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain", + "/Lotus/Types/Keys/ZarimanQuest/ZarimanQuestKeyChain", + "/Lotus/Types/Keys/KahlQuest/KahlQuestKeyChain", + "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain", + "/Lotus/Types/Keys/EntratiLab/EntratiQuestKeyChain" ] -- 2.47.2 From fd7945095724d255efbd38aa7865d1ec1e23cfc0 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 2 Jun 2024 17:37:09 +0200 Subject: [PATCH 148/522] fix(webui): not listing melee arcanes (#265) --- package-lock.json | 6 ++++++ package.json | 1 + src/controllers/custom/getItemListsController.ts | 12 ++++++++++-- src/services/itemDataService.ts | 5 +++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66e1892a..4efe9437 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", + "warframe-public-export-plus": "^0.1.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3893,6 +3894,11 @@ "warframe-worldstate-data": "^2" } }, + "node_modules/warframe-public-export-plus": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.1.0.tgz", + "integrity": "sha512-a76Be2pwPjKrin67zMux5L9U6zt9bhEtyy723tM2czGGcOZYWp1XdCZY684q3zPytWS0SmEia0C/h/4EiadBnQ==" + }, "node_modules/warframe-riven-info": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/warframe-riven-info/-/warframe-riven-info-0.1.0.tgz", diff --git a/package.json b/package.json index 87a35cf0..3f4b4f0e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", + "warframe-public-export-plus": "^0.1.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index c0345716..b2f970bc 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,6 +1,7 @@ import { RequestHandler } from "express"; -import { MinItem, warframes, weapons, items } from "@/src/services/itemDataService"; +import { MinItem, warframes, weapons, items, getEnglishString } from "@/src/services/itemDataService"; import badItems from "@/static/json/exclude-mods.json"; +import ExportArcanes from "@/node_modules/warframe-public-export-plus/ExportArcanes.json"; interface ListedItem { uniqueName: string; @@ -19,13 +20,20 @@ function reduceItems(items: MinItem[]): ListedItem[] { } const getItemListsController: RequestHandler = (_req, res) => { + const mods = reduceItems(items.filter(item => item.category == "Mods")); + for (const arcane of ExportArcanes) { + mods.push({ + uniqueName: arcane.uniqueName, + name: getEnglishString(arcane.name) + }); + } res.json({ warframes: reduceItems(warframes), weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")), miscitems: reduceItems( items.filter(item => item.category == "Misc" || item.category == "Resources" || item.category == "Fish") ), - mods: reduceItems(items.filter(item => item.category == "Mods" || item.category == "Arcanes")), + mods, badItems }); }; diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 2aafbcc5..51ad3b68 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -2,6 +2,7 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; import badItems from "@/static/json/exclude-mods.json"; +import dict_en from "@/node_modules/warframe-public-export-plus/dict.en.json"; export type MinWarframe = Omit; export type MinWeapon = Omit; @@ -129,3 +130,7 @@ export const getItemByName = (name: string) => { const item = items.find(item => item.name === name); return item; }; + +export const getEnglishString = (key: string) => { + return dict_en[key as keyof typeof dict_en] ?? key; +}; -- 2.47.2 From f80da0675420e1e409d9856f3b91d2db787b8068 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 6 Jun 2024 14:23:12 +0200 Subject: [PATCH 149/522] feat: handle installation of umbra forma (#281) --- src/controllers/api/upgradesController.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index a90d02b8..3ec9a6dd 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -58,6 +58,7 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/Forma": + case "/Lotus/Types/Items/MiscItems/FormaUmbra": case "/Lotus/Types/Items/MiscItems/FormaAura": case "/Lotus/Types/Items/MiscItems/FormaStance": for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { -- 2.47.2 From 7d169b7c561234e2f7459f437fc81833b577044c Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 6 Jun 2024 14:23:46 +0200 Subject: [PATCH 150/522] fix: considering Zaw parts to be weapons instead of miscitems (#280) --- src/controllers/custom/getItemListsController.ts | 12 +++++++++--- src/services/itemDataService.ts | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index b2f970bc..2efde908 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { MinItem, warframes, weapons, items, getEnglishString } from "@/src/services/itemDataService"; +import { MinItem, MinWeapon, warframes, weapons, items, getEnglishString } from "@/src/services/itemDataService"; import badItems from "@/static/json/exclude-mods.json"; import ExportArcanes from "@/node_modules/warframe-public-export-plus/ExportArcanes.json"; @@ -29,9 +29,15 @@ const getItemListsController: RequestHandler = (_req, res) => { } res.json({ warframes: reduceItems(warframes), - weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")), + weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps" && item.totalDamage != 0)), miscitems: reduceItems( - items.filter(item => item.category == "Misc" || item.category == "Resources" || item.category == "Fish") + items.filter( + item => + item.category == "Misc" || + item.category == "Resources" || + item.category == "Fish" || + ((item as any).productCategory == "Pistols" && (item as MinWeapon).totalDamage == 0) + ) ), mods, badItems diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 51ad3b68..9714c669 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -41,6 +41,11 @@ export const getWeaponType = (weaponName: string) => { throw new Error(`unknown weapon ${weaponName}`); } + // Many non-weapon items are "Pistols" in Public Export, so some duck typing is needed. + if (weaponInfo.totalDamage == 0) { + throw new Error(`${weaponName} doesn't quack like a weapon`); + } + const weaponType = weaponInfo.productCategory as WeaponTypeInternal; if (!weaponType) { -- 2.47.2 From d0256792b7ecf77289ff177ceba45b033679ecc6 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 6 Jun 2024 14:24:22 +0200 Subject: [PATCH 151/522] chore: update warframe-items so Tenet Glaxion etc are known (#279) --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4efe9437..efb09dce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-items": "^1.1261.19", + "warframe-items": "^1.1262.74", "warframe-public-export-plus": "^0.1.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", @@ -3887,9 +3887,9 @@ } }, "node_modules/warframe-items": { - "version": "1.1262.53", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1262.53.tgz", - "integrity": "sha512-Giz4uhphKILnM93dJYuvGnToIR1qewEBlmzyoBWjqfD2pViyE9BHayQrQQgcn9zkfZh0WUfjC+jwiRZukt73hg==", + "version": "1.1262.74", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1262.74.tgz", + "integrity": "sha512-piS27vLxULdeXv1GZrac5Da18DavYnj99w5Pdmvlbyt/vPImq4SWq21PQwaLle1mkyEeqNjbcd3H7zh1I7eA1g==", "peerDependencies": { "warframe-worldstate-data": "^2" } diff --git a/package.json b/package.json index 3f4b4f0e..50b38ba7 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-items": "^1.1261.19", + "warframe-items": "^1.1262.74", "warframe-public-export-plus": "^0.1.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", -- 2.47.2 From aae3d10edbb96649938b3e5b15e17b2b9e240eef Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 6 Jun 2024 14:34:01 +0200 Subject: [PATCH 152/522] fix: allShipFeatures not containing ArsenalMeleeFeatureItem (#271) --- static/fixed_responses/allShipFeatures.json | 1 + 1 file changed, 1 insertion(+) diff --git a/static/fixed_responses/allShipFeatures.json b/static/fixed_responses/allShipFeatures.json index fdbff99f..07e45667 100644 --- a/static/fixed_responses/allShipFeatures.json +++ b/static/fixed_responses/allShipFeatures.json @@ -1,4 +1,5 @@ [ + "/Lotus/Types/Items/ShipFeatureItems/ArsenalMeleeFeatureItem", "/Lotus/Types/Items/ShipFeatureItems/AdvancedOrdisFeatureItem", "/Lotus/Types/Items/ShipFeatureItems/AlchemyRoomFeatureItem", "/Lotus/Types/Items/ShipFeatureItems/AlertsFeatureItem", -- 2.47.2 From 6c64b5070efbc81d69c6b78affaf619a3503af0a Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 6 Jun 2024 14:34:27 +0200 Subject: [PATCH 153/522] feat: update CountryCode on subsequent client logins (#270) Co-authored-by: Sainan --- src/controllers/api/loginController.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 0b9477b1..883b51c4 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -66,8 +66,11 @@ const loginController: RequestHandler = async (request, response) => { if (account.Nonce == 0 || loginRequest.ClientType != "webui") { account.Nonce = nonce; - await account.save(); } + if (loginRequest.ClientType != "webui") { + account.CountryCode = loginRequest.lang.toUpperCase(); + } + await account.save(); const { email, password, ...databaseAccount } = account.toJSON(); const newLoginResponse: ILoginResponse = { -- 2.47.2 From e35a7fd69f6319d53d9e6936afc3bc7120a33a49 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 6 Jun 2024 16:55:37 +0200 Subject: [PATCH 154/522] feat: implement startDojoRecipeController to place new rooms in Dojo (#273) Co-authored-by: Sainan --- .eslintrc | 3 +- src/controllers/api/getGuildDojoController.ts | 16 ++++++++--- .../api/startDojoRecipeController.ts | 28 +++++++++++++++++++ src/models/guildModel.ts | 3 ++ src/routes/api.ts | 2 ++ src/services/guildService.ts | 18 ++++++++++++ src/types/guildTypes.ts | 18 ++++++++---- 7 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 src/controllers/api/startDojoRecipeController.ts create mode 100644 src/services/guildService.ts diff --git a/.eslintrc b/.eslintrc index e2313617..3b7c142a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -24,7 +24,8 @@ "@typescript-eslint/no-unsafe-assignment": "warn", "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-loss-of-precision": "warn", - "no-case-declarations": "warn" + "no-case-declarations": "warn", + "no-mixed-spaces-and-tabs": "warn" }, "parser": "@typescript-eslint/parser", "parserOptions": { diff --git a/src/controllers/api/getGuildDojoController.ts b/src/controllers/api/getGuildDojoController.ts index cf60ed13..a220bb7e 100644 --- a/src/controllers/api/getGuildDojoController.ts +++ b/src/controllers/api/getGuildDojoController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { Types } from "mongoose"; import { Guild } from "@/src/models/guildModel"; -import { IDojoClient } from "@/src/types/guildTypes"; +import { IDojoClient, IDojoComponentClient } from "@/src/types/guildTypes"; import { toOid, toMongoDate } from "@/src/helpers/inventoryHelpers"; export const getGuildDojoController: RequestHandler = async (req, res) => { @@ -39,13 +39,21 @@ export const getGuildDojoController: RequestHandler = async (req, res) => { DojoComponents: [] }; guild.DojoComponents.forEach(dojoComponent => { - dojo.DojoComponents.push({ + const clientComponent: IDojoComponentClient = { id: toOid(dojoComponent._id), pf: dojoComponent.pf, ppf: dojoComponent.ppf, - CompletionTime: toMongoDate(dojoComponent.CompletionTime), DecoCapacity: 600 - }); + }; + if (dojoComponent.pi) { + clientComponent.pi = toOid(dojoComponent.pi); + clientComponent.op = dojoComponent.op!; + clientComponent.pp = dojoComponent.pp!; + } + if (dojoComponent.CompletionTime) { + clientComponent.CompletionTime = toMongoDate(dojoComponent.CompletionTime); + } + dojo.DojoComponents.push(clientComponent); }); res.json(dojo); }; diff --git a/src/controllers/api/startDojoRecipeController.ts b/src/controllers/api/startDojoRecipeController.ts new file mode 100644 index 00000000..8b4104ac --- /dev/null +++ b/src/controllers/api/startDojoRecipeController.ts @@ -0,0 +1,28 @@ +import { RequestHandler } from "express"; +import { IDojoComponentClient } from "@/src/types/guildTypes"; +import { getGuildForRequest } from "@/src/services/guildService"; +import { Types } from "mongoose"; + +interface IStartDojoRecipeRequest { + PlacedComponent: IDojoComponentClient; + Revision: number; +} + +export const startDojoRecipeController: RequestHandler = async (req, res) => { + const guild = await getGuildForRequest(req); + // At this point, we know that a member of the guild is making this request. Assuming they are allowed to start a build. + const request = JSON.parse(req.body.toString()) as IStartDojoRecipeRequest; + guild.DojoComponents!.push({ + _id: new Types.ObjectId(), + pf: request.PlacedComponent.pf, + ppf: request.PlacedComponent.ppf, + pi: new Types.ObjectId(request.PlacedComponent.pi!.$oid), + op: request.PlacedComponent.op, + pp: request.PlacedComponent.pp, + CompletionTime: new Date(Date.now()) // TOOD: Omit this field & handle the "Collecting Materials" state. + }); + await guild.save(); + res.json({ + DojoRequestStatus: 0 + }); +}; diff --git a/src/models/guildModel.ts b/src/models/guildModel.ts index 157007a0..b83a7d42 100644 --- a/src/models/guildModel.ts +++ b/src/models/guildModel.ts @@ -4,6 +4,9 @@ import { model, Schema } from "mongoose"; const dojoComponentSchema = new Schema({ pf: { type: String, required: true }, ppf: String, + pi: Schema.Types.ObjectId, + op: String, + pp: String, CompletionTime: Date }); diff --git a/src/routes/api.ts b/src/routes/api.ts index fc1a1ee2..bc8066be 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -53,6 +53,7 @@ import { guildTechController } from "../controllers/api/guildTechController"; import { dojoController } from "@/src/controllers/api/dojoController"; import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController"; import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; +import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; const apiRouter = express.Router(); @@ -116,5 +117,6 @@ apiRouter.post("/sell.php", sellController); apiRouter.post("/upgrades.php", upgradesController); apiRouter.post("/guildTech.php", guildTechController); apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); +apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); export { apiRouter }; diff --git a/src/services/guildService.ts b/src/services/guildService.ts new file mode 100644 index 00000000..35b697fc --- /dev/null +++ b/src/services/guildService.ts @@ -0,0 +1,18 @@ +import { Request } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory } from "@/src/services/inventoryService"; +import { Guild } from "@/src/models/guildModel"; + +export const getGuildForRequest = async (req: Request) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + const guildId = req.query.guildId as string; + if (!inventory.GuildId || inventory.GuildId.toString() != guildId) { + throw new Error("Account is not in the guild that it has sent a request for"); + } + const guild = await Guild.findOne({ _id: guildId }); + if (!guild) { + throw new Error("Account thinks it is a in guild that doesn't exist"); + } + return guild; +}; diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index c969db6a..fcf34713 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -1,5 +1,6 @@ import { Types } from "mongoose"; import { IOid, IMongoDate } from "@/src/types/commonTypes"; +import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; export interface IGuild { Name: string; @@ -31,13 +32,18 @@ export interface IDojoComponentClient { id: IOid; pf: string; ppf: string; - CompletionTime: IMongoDate; - DecoCapacity: number; + pi?: IOid; // Parent ID. N/A to root. + op?: string; // "Open Portal"? N/A to root. + pp?: string; // "Parent Portal"? N/A to root. + RegularCredits?: number; // "Collecting Materials" state: Number of credits that were donated. + MiscItems?: IMiscItem[]; // "Collecting Materials" state: Resources that were donated. + CompletionTime?: IMongoDate; + DecoCapacity?: number; } -export interface IDojoComponentDatabase { +export interface IDojoComponentDatabase + extends Omit { _id: Types.ObjectId; - pf: string; - ppf: string; - CompletionTime: Date; + pi?: Types.ObjectId; + CompletionTime?: Date; } -- 2.47.2 From 01a9bf24c3d60d167849e9a31eba8299534a3cd9 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Fri, 7 Jun 2024 15:58:20 +0200 Subject: [PATCH 155/522] Auto adding exalted items (#277) Co-authored-by: AMelonInsideLemon --- src/models/inventoryModels/inventoryModel.ts | 4 ++- src/services/inventoryService.ts | 27 +++++++++++++++++++- src/services/itemDataService.ts | 15 +++++++++++ src/types/inventoryTypes/inventoryTypes.ts | 2 +- 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index c6c95ca1..938c0d8a 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -381,6 +381,7 @@ DuviriInfoSchema.set("toJSON", { } }); +// eslint-disable-next-line @typescript-eslint/no-unused-vars const GenericItemSchema2 = new Schema({ ItemType: String, ItemName: String, @@ -703,7 +704,7 @@ const inventorySchema = new Schema( //Melee Weapon Melee: [WeaponSchema], //Ability Weapon like Ultimate Mech\Excalibur\Ivara etc - SpecialItems: [GenericItemSchema2], + SpecialItems: [GenericItemSchema], //The Mandachord(Octavia) is a step sequencer StepSequencers: [StepSequencersSchema], @@ -1006,6 +1007,7 @@ type InventoryDocumentProps = { MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; OperatorLoadOuts: Types.DocumentArray; + SpecialItems: Types.DocumentArray; AdultOperatorLoadOuts: Types.DocumentArray; //TODO: this should still contain _id MechSuits: Types.DocumentArray; Scoops: Types.DocumentArray; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 6727a75e..357a2120 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -24,7 +24,7 @@ import { IUpdateChallengeProgressRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; -import { WeaponTypeInternal } from "@/src/services/itemDataService"; +import { WeaponTypeInternal, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; export const createInventory = async ( @@ -74,6 +74,12 @@ export const addSentinel = async (sentinelName: string, accountId: string) => { }; export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { + const specialItems = getExalted(powersuitName); + if (specialItems != false) { + for await (const specialItem of specialItems) { + await addSpecialItem(specialItem, accountId); + } + } const inventory = await getInventory(accountId); const suitIndex = inventory.Suits.push({ ItemType: powersuitName, Configs: [], UpgradeVer: 101, XP: 0 }); const changedInventory = await inventory.save(); @@ -81,12 +87,31 @@ export const addPowerSuit = async (powersuitName: string, accountId: string): Pr }; export const addMechSuit = async (mechsuitName: string, accountId: string) => { + const specialItems = getExalted(mechsuitName); + if (specialItems != false) { + for await (const specialItem of specialItems) { + await addSpecialItem(specialItem, accountId); + } + } const inventory = await getInventory(accountId); const suitIndex = inventory.MechSuits.push({ ItemType: mechsuitName, Configs: [], UpgradeVer: 101, XP: 0 }); const changedInventory = await inventory.save(); return changedInventory.MechSuits[suitIndex - 1].toJSON(); }; +export const addSpecialItem = async (itemName: string, accountId: string) => { + const inventory = await getInventory(accountId); + const specialItemIndex = inventory.SpecialItems.push({ + ItemType: itemName, + Configs: [], + Features: 1, + UpgradeVer: 101, + XP: 0 + }); + const changedInventory = await inventory.save(); + return changedInventory.SpecialItems[specialItemIndex - 1].toJSON(); +}; + export const updateSlots = async (accountId: string, slotName: SlotNames, slotAmount: number, extraAmount: number) => { const inventory = await getInventory(accountId); diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 9714c669..0b33302c 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -3,6 +3,7 @@ import { logger } from "@/src/utils/logger"; import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; import badItems from "@/static/json/exclude-mods.json"; import dict_en from "@/node_modules/warframe-public-export-plus/dict.en.json"; +import exportSuits from "@/node_modules/warframe-public-export-plus/ExportWarframes.json"; export type MinWarframe = Omit; export type MinWeapon = Omit; @@ -109,6 +110,15 @@ export const getItemByBlueprint = (uniqueName: string): (MinItem & Buildable) | return item; }; +export const getExalted = (uniqueName: string) => { + const suit = getSuitByUniqueName(uniqueName); + if (suit?.exalted !== undefined) { + return suit.exalted; + } else { + return false; + } +}; + export const getItemCategoryByUniqueName = (uniqueName: string) => { //Lotus/Types/Items/MiscItems/PolymerBundle @@ -126,6 +136,11 @@ export const getItemCategoryByUniqueName = (uniqueName: string) => { return category; }; +export const getSuitByUniqueName = (uniqueName: string) => { + const suit = exportSuits.find(suit => suit.uniqueName === uniqueName); + return suit; +}; + export const getItemByUniqueName = (uniqueName: string) => { const item = items.find(item => item.uniqueName === uniqueName); return item; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index decec7c1..66f863ee 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -231,7 +231,7 @@ export interface IInventoryResponse { AlignmentReplay: IAlignment; PersonalGoalProgress: IPersonalGoalProgress[]; DailyAffiliationSolaris: number; - SpecialItems: IGenericItem2[]; + SpecialItems: IGenericItem[]; ThemeStyle: string; ThemeBackground: string; ThemeSounds: string; -- 2.47.2 From a43237a8aa0805a178f30e1e54ed7dc178f30bb6 Mon Sep 17 00:00:00 2001 From: Master Date: Fri, 7 Jun 2024 22:01:38 +0800 Subject: [PATCH 156/522] feat: implement queueDojoComponentDestructionController to remove room in Dojo (#284) --- .../api/queueDojoComponentDestructionController.ts | 13 +++++++++++++ src/routes/api.ts | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 src/controllers/api/queueDojoComponentDestructionController.ts diff --git a/src/controllers/api/queueDojoComponentDestructionController.ts b/src/controllers/api/queueDojoComponentDestructionController.ts new file mode 100644 index 00000000..23b9b25a --- /dev/null +++ b/src/controllers/api/queueDojoComponentDestructionController.ts @@ -0,0 +1,13 @@ +import { getGuildForRequest } from "@/src/services/guildService"; +import { RequestHandler } from "express"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const queueDojoComponentDestructionController: RequestHandler = async (req, res) => { + const guild = await getGuildForRequest(req); + const componentId = req.query.componentId as string; + guild.DojoComponents!.splice(guild.DojoComponents!.findIndex((x) => x._id.toString() === componentId), 1); + await guild.save(); + res.json({ + DojoRequestStatus: 1 + }); +}; \ No newline at end of file diff --git a/src/routes/api.ts b/src/routes/api.ts index bc8066be..2ed9bdcb 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -54,6 +54,7 @@ import { dojoController } from "@/src/controllers/api/dojoController"; import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController"; import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; +import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController"; const apiRouter = express.Router(); @@ -86,6 +87,7 @@ apiRouter.get("/getDailyDealStockLevels.php", getDailyDealStockLevelsController) apiRouter.get("/getGuildLog.php", getGuildLogController); apiRouter.get("/dojo", dojoController); apiRouter.get("/getGuildDojo.php", getGuildDojoController); +apiRouter.get("/queueDojoComponentDestruction.php", queueDojoComponentDestructionController); // post // eslint-disable-next-line @typescript-eslint/no-misused-promises -- 2.47.2 From c1f5a2b4649b8f3f0847244c8bad4bc0ac0b5de3 Mon Sep 17 00:00:00 2001 From: OrdisPrime Date: Fri, 7 Jun 2024 14:02:00 +0000 Subject: [PATCH 157/522] Apply prettier changes --- .../api/queueDojoComponentDestructionController.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/controllers/api/queueDojoComponentDestructionController.ts b/src/controllers/api/queueDojoComponentDestructionController.ts index 23b9b25a..7f348b87 100644 --- a/src/controllers/api/queueDojoComponentDestructionController.ts +++ b/src/controllers/api/queueDojoComponentDestructionController.ts @@ -5,9 +5,12 @@ import { RequestHandler } from "express"; export const queueDojoComponentDestructionController: RequestHandler = async (req, res) => { const guild = await getGuildForRequest(req); const componentId = req.query.componentId as string; - guild.DojoComponents!.splice(guild.DojoComponents!.findIndex((x) => x._id.toString() === componentId), 1); + guild.DojoComponents!.splice( + guild.DojoComponents!.findIndex(x => x._id.toString() === componentId), + 1 + ); await guild.save(); res.json({ DojoRequestStatus: 1 }); -}; \ No newline at end of file +}; -- 2.47.2 From 656e70227c8ed816a668311f93a781f1a3a94e0f Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 7 Jun 2024 16:06:35 +0200 Subject: [PATCH 158/522] feat: implement polarity swapping (#283) --- src/controllers/api/upgradesController.ts | 31 ++++++++++++++++---- src/models/inventoryModels/inventoryModel.ts | 11 ++++--- src/types/requestTypes.ts | 4 +-- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 3ec9a6dd..b0545632 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; -import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { FocusSchool } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IGenericItemDatabase, IMiscItem, TGenericItemKey } from "@/src/types/inventoryTypes/inventoryTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; @@ -64,11 +64,7 @@ export const upgradesController: RequestHandler = async (req, res) => { for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.XP = 0; - item.Polarity ??= []; - item.Polarity.push({ - Slot: operation.PolarizeSlot, - Value: operation.PolarizeValue - } satisfies IPolarity); + setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue); item.Polarized ??= 0; item.Polarized += 1; break; @@ -105,6 +101,19 @@ export const upgradesController: RequestHandler = async (req, res) => { } } break; + case "": + console.assert(operation.OperationType == "UOT_SWAP_POLARITY"); + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + for (let i = 0; i != operation.PolarityRemap.length; ++i) { + if (operation.PolarityRemap[i].Slot != i) { + setSlotPolarity(item, i, operation.PolarityRemap[i].Value); + } + } + break; + } + } + break; default: throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement); } @@ -112,3 +121,13 @@ export const upgradesController: RequestHandler = async (req, res) => { await inventory.save(); res.json({ InventoryChanges }); }; + +const setSlotPolarity = (item: IGenericItemDatabase, slot: number, polarity: FocusSchool): void => { + item.Polarity ??= []; + const entry = item.Polarity.find(entry => entry.Slot == slot); + if (entry) { + entry.Value = polarity; + } else { + item.Polarity.push({ Slot: slot, Value: polarity }); + } +}; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 938c0d8a..679216b7 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -97,10 +97,13 @@ pendingRecipeSchema.set("toJSON", { } }); -const polaritySchema = new Schema({ - Slot: Number, - Value: String -}); +const polaritySchema = new Schema( + { + Slot: Number, + Value: String + }, + { _id: false } +); const abilityOverrideSchema = new Schema({ Ability: String, diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index bdb68be4..78ea111f 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -1,5 +1,5 @@ import { IOid } from "./commonTypes"; -import { FocusSchool } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IPolarity, FocusSchool } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IBooster, IChallengeProgress, @@ -95,5 +95,5 @@ export interface IUpgradeOperation { UpgradeRequirement: string; // uniqueName of item being consumed PolarizeSlot: number; PolarizeValue: FocusSchool; - PolarityRemap: object[]; + PolarityRemap: IPolarity[]; } -- 2.47.2 From fdaf3da46770d8eb48b93fd17b545724413060fb Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 10 Jun 2024 13:56:58 +0200 Subject: [PATCH 159/522] fix: webui login failing on pre-nonce account that has not been used in-game since (#287) --- src/models/loginModel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index d100e4c2..03e52265 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -33,7 +33,7 @@ const databaseAccountSchema = new Schema( AmazonRefreshToken: { type: String }, ConsentNeeded: { type: Boolean, required: true }, TrackedSettings: { type: [String], default: [] }, - Nonce: { type: Number, required: true } + Nonce: { type: Number, default: 0 } }, opts ); -- 2.47.2 From d1234589577a810518da414638ba41d823f69058 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 10 Jun 2024 13:57:22 +0200 Subject: [PATCH 160/522] fix: missing note beacon in allShipDecorations (#286) --- static/fixed_responses/allShipDecorations.json | 1 + 1 file changed, 1 insertion(+) diff --git a/static/fixed_responses/allShipDecorations.json b/static/fixed_responses/allShipDecorations.json index 07136cad..ec5a2ca9 100644 --- a/static/fixed_responses/allShipDecorations.json +++ b/static/fixed_responses/allShipDecorations.json @@ -1,4 +1,5 @@ [ + { "ItemCount": 1, "ItemType": "/Lotus/Objects/Tenno/Props/TnoLisetTextProjector" }, { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/7thAnniversaryPoster" }, { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/8thAnniversaryPoster" }, { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead" }, -- 2.47.2 From e660e20c87dc47e7f38a38b8cc98434b78600067 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 10 Jun 2024 14:03:03 +0200 Subject: [PATCH 161/522] fix: being unable to add Grimoire (#285) Co-authored-by: Sainan --- package-lock.json | 8 ++--- package.json | 2 +- .../custom/getItemListsController.ts | 17 ++++++--- src/helpers/customHelpers/addItemHelpers.ts | 7 +--- src/services/itemDataService.ts | 36 +++++++++---------- static/webui/script.js | 3 +- 6 files changed, 36 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index efb09dce..1fe81846 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.1.0", + "warframe-public-export-plus": "^0.2.2", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3895,9 +3895,9 @@ } }, "node_modules/warframe-public-export-plus": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.1.0.tgz", - "integrity": "sha512-a76Be2pwPjKrin67zMux5L9U6zt9bhEtyy723tM2czGGcOZYWp1XdCZY684q3zPytWS0SmEia0C/h/4EiadBnQ==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.2.tgz", + "integrity": "sha512-PAsiyiRDqXcsUwZTweihwrSksd+GT3USrbHwS/TrJUC3TqLS0Ng24OfefFKPWOmPfMxDbdkg2zV39uq72iZ/Yg==" }, "node_modules/warframe-riven-info": { "version": "0.1.0", diff --git a/package.json b/package.json index 50b38ba7..88a71412 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.1.0", + "warframe-public-export-plus": "^0.2.2", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 2efde908..f10b450b 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; -import { MinItem, MinWeapon, warframes, weapons, items, getEnglishString } from "@/src/services/itemDataService"; +import { MinItem, MinWeapon, warframes, items, getEnglishString } from "@/src/services/itemDataService"; import badItems from "@/static/json/exclude-mods.json"; -import ExportArcanes from "@/node_modules/warframe-public-export-plus/ExportArcanes.json"; +import { ExportArcanes, ExportWeapons } from "warframe-public-export-plus"; interface ListedItem { uniqueName: string; @@ -21,15 +21,22 @@ function reduceItems(items: MinItem[]): ListedItem[] { const getItemListsController: RequestHandler = (_req, res) => { const mods = reduceItems(items.filter(item => item.category == "Mods")); - for (const arcane of ExportArcanes) { + for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) { mods.push({ - uniqueName: arcane.uniqueName, + uniqueName: uniqueName, name: getEnglishString(arcane.name) }); } res.json({ warframes: reduceItems(warframes), - weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps" && item.totalDamage != 0)), + weapons: Object.entries(ExportWeapons) + .filter(([_uniqueName, weapon]) => weapon.productCategory !== "OperatorAmps" && weapon.totalDamage !== 0) + .map(([uniqueName, weapon]) => { + return { + uniqueName, + name: getEnglishString(weapon.name) + }; + }), miscitems: reduceItems( items.filter( item => diff --git a/src/helpers/customHelpers/addItemHelpers.ts b/src/helpers/customHelpers/addItemHelpers.ts index 2b1f464d..5ce2378f 100644 --- a/src/helpers/customHelpers/addItemHelpers.ts +++ b/src/helpers/customHelpers/addItemHelpers.ts @@ -1,5 +1,4 @@ import { isString } from "@/src/helpers/general"; -import { items } from "@/src/services/itemDataService"; export enum ItemType { Powersuit = "Powersuit", @@ -22,13 +21,9 @@ interface IAddItemRequest { type: ItemType; InternalName: string; } -export const isInternalItemName = (internalName: string): boolean => { - const item = items.find(i => i.uniqueName === internalName); - return Boolean(item); -}; const parseInternalItemName = (internalName: unknown): string => { - if (!isString(internalName) || !isInternalItemName(internalName)) { + if (!isString(internalName)) { throw new Error("incorrect internal name"); } diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 0b33302c..46a785ba 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -2,8 +2,7 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; import badItems from "@/static/json/exclude-mods.json"; -import dict_en from "@/node_modules/warframe-public-export-plus/dict.en.json"; -import exportSuits from "@/node_modules/warframe-public-export-plus/ExportWarframes.json"; +import { dict_en, ExportWarframes, ExportWeapons, IPowersuit } from "warframe-public-export-plus"; export type MinWarframe = Omit; export type MinWeapon = Omit; @@ -19,15 +18,15 @@ export const warframes: MinWarframe[] = Array.from(new Items({ category: ["Warfr return next; }); -export const weapons: MinWeapon[] = Array.from( - new Items({ category: ["Primary", "Secondary", "Melee"] }) as Weapon[] -).map(item => { - const next = { ...item }; - delete next.patchlogs; - return next; -}); - -export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; +export type WeaponTypeInternal = + | "LongGuns" + | "Pistols" + | "Melee" + | "SpaceMelee" + | "SpaceGuns" + | "SentinelWeapons" + | "OperatorAmps" + | "SpecialItems"; export const items: MinItem[] = Array.from(new Items({ category: ["All"] }) as MinimalItem[]).map(item => { const next = { ...item }; @@ -35,8 +34,8 @@ export const items: MinItem[] = Array.from(new Items({ category: ["All"] }) as M return next; }); -export const getWeaponType = (weaponName: string) => { - const weaponInfo = weapons.find(i => i.uniqueName === weaponName); +export const getWeaponType = (weaponName: string): WeaponTypeInternal => { + const weaponInfo = ExportWeapons[weaponName]; if (!weaponInfo) { throw new Error(`unknown weapon ${weaponName}`); @@ -47,7 +46,7 @@ export const getWeaponType = (weaponName: string) => { throw new Error(`${weaponName} doesn't quack like a weapon`); } - const weaponType = weaponInfo.productCategory as WeaponTypeInternal; + const weaponType = weaponInfo.productCategory; if (!weaponType) { logger.error(`unknown weapon category for item ${weaponName}`); @@ -136,9 +135,8 @@ export const getItemCategoryByUniqueName = (uniqueName: string) => { return category; }; -export const getSuitByUniqueName = (uniqueName: string) => { - const suit = exportSuits.find(suit => suit.uniqueName === uniqueName); - return suit; +export const getSuitByUniqueName = (uniqueName: string): IPowersuit | undefined => { + return ExportWarframes[uniqueName]; }; export const getItemByUniqueName = (uniqueName: string) => { @@ -151,6 +149,6 @@ export const getItemByName = (name: string) => { return item; }; -export const getEnglishString = (key: string) => { - return dict_en[key as keyof typeof dict_en] ?? key; +export const getEnglishString = (key: string): string => { + return dict_en[key] ?? key; }; diff --git a/static/webui/script.js b/static/webui/script.js index a50e0ab6..6d1e0a52 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -95,8 +95,7 @@ window.itemListPromise = new Promise(resolve => { "/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: "Rifle" }, "/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: "Shotgun" }, // Missing in data sources - "/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": { name: "Traumatic Peculiar" }, - "/Lotus/Weapons/Tenno/Grimoire/TnGrimoire": { name: "Grimoire" } + "/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": { name: "Traumatic Peculiar" } }; for (const [type, items] of Object.entries(data)) { if (type != "badItems") { -- 2.47.2 From 5a083f5b13bd16d1bdb28ff2ef428c72f6aaa2e9 Mon Sep 17 00:00:00 2001 From: Vampire Kitten <95658710+VampireKitten@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:56:51 +0200 Subject: [PATCH 162/522] Fixed Typo in config.json (#291) --- config.json.example | 2 +- src/controllers/api/getShipController.ts | 2 +- src/services/configService.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config.json.example b/config.json.example index c3a7eddd..e874d450 100644 --- a/config.json.example +++ b/config.json.example @@ -16,7 +16,7 @@ "unlockAllQuests": true, "completeAllQuests": false, "infiniteResources": true, - "unlockallShipFeatures": true, + "unlockAllShipFeatures": true, "unlockAllShipDecorations": true, "unlockAllFlavourItems": true, "unlockAllSkins": true, diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index f0ba4468..65483101 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -31,7 +31,7 @@ export const getShipController: RequestHandler = async (req, res) => { Apartment: personalRooms.Apartment }; - if (config.unlockallShipFeatures) { + if (config.unlockAllShipFeatures) { getShipResponse.Ship.Features = allShipFeatures; } diff --git a/src/services/configService.ts b/src/services/configService.ts index b70e24df..e5199a3c 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -14,7 +14,7 @@ interface IConfig { unlockAllQuests?: boolean; completeAllQuests?: boolean; infiniteResources?: boolean; - unlockallShipFeatures?: boolean; + unlockAllShipFeatures?: boolean; unlockAllShipDecorations?: boolean; unlockAllFlavourItems?: boolean; unlockAllSkins?: boolean; -- 2.47.2 From b1f92c854e5eedea940f101cfc70468af45534ed Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 11 Jun 2024 13:18:59 +0200 Subject: [PATCH 163/522] fix(webui): being unable to add Kuva (#292) Co-authored-by: Sainan --- static/webui/script.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/static/webui/script.js b/static/webui/script.js index 6d1e0a52..4220234a 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -102,7 +102,10 @@ window.itemListPromise = new Promise(resolve => { items.forEach(item => { if (item.uniqueName in data.badItems) { item.name += " (Imposter)"; - } else if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/") { + } else if ( + item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/" && + item.uniqueName.substr(0, 18) != "/Lotus/StoreItems/" + ) { const option = document.createElement("option"); option.setAttribute("data-key", item.uniqueName); option.value = item.name; -- 2.47.2 From 60c7d5b5b064a8fe145c3f3f28d1e970c2b0d9ca Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 12 Jun 2024 13:59:37 +0200 Subject: [PATCH 164/522] chore: npm audit fix (#293) --- package-lock.json | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1fe81846..14580188 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1153,12 +1153,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1922,9 +1922,9 @@ } }, "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -2022,6 +2022,20 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "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", -- 2.47.2 From 1c6412a6a41aff074d9ab789330c15ba63ed6c83 Mon Sep 17 00:00:00 2001 From: Vampire Kitten <95658710+VampireKitten@users.noreply.github.com> Date: Sat, 15 Jun 2024 00:38:12 +0200 Subject: [PATCH 165/522] feat(webui): change server config through UI (#294) --- .../custom/getConfigDataController.ts | 8 ++ .../custom/updateConfigDataController.ts | 16 ++++ src/routes/custom.ts | 7 +- src/routes/webui.ts | 3 + static/webui/index.html | 78 ++++++++++++++++++- static/webui/script.js | 45 +++++++++++ 6 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 src/controllers/custom/getConfigDataController.ts create mode 100644 src/controllers/custom/updateConfigDataController.ts diff --git a/src/controllers/custom/getConfigDataController.ts b/src/controllers/custom/getConfigDataController.ts new file mode 100644 index 00000000..8d946384 --- /dev/null +++ b/src/controllers/custom/getConfigDataController.ts @@ -0,0 +1,8 @@ +import { RequestHandler } from "express"; +import configFile from "@/config.json"; + +const getConfigDataController: RequestHandler = (_req, res) => { + res.json(configFile); +}; + +export { getConfigDataController }; diff --git a/src/controllers/custom/updateConfigDataController.ts b/src/controllers/custom/updateConfigDataController.ts new file mode 100644 index 00000000..38d6ca35 --- /dev/null +++ b/src/controllers/custom/updateConfigDataController.ts @@ -0,0 +1,16 @@ +import { RequestHandler } from "express"; +import path from "path"; +import fs from "fs"; +const rootDir = path.join(__dirname, "../../.."); + +const updateConfigDataController: RequestHandler = (req) => { + const updateSettingsData = req.body; + + fs.writeFile(path.join(rootDir, "config.json"), updateSettingsData, function(err:any) { + if(err) { + return console.log(err); + } + }); +}; + +export { updateConfigDataController }; diff --git a/src/routes/custom.ts b/src/routes/custom.ts index 8a4218d7..6c0a7416 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -2,6 +2,8 @@ import express from "express"; import { getItemListsController } from "@/src/controllers/custom/getItemListsController"; import { createAccountController } from "@/src/controllers/custom/createAccountController"; import { addItemController } from "@/src/controllers/custom/addItemController"; +import { getConfigDataController } from "@/src/controllers/custom/getConfigDataController"; +import { updateConfigDataController } from "@/src/controllers/custom/updateConfigDataController"; const customRouter = express.Router(); @@ -10,4 +12,7 @@ customRouter.get("/getItemLists", getItemListsController); customRouter.post("/createAccount", createAccountController); customRouter.post("/addItem", addItemController); -export { customRouter }; +customRouter.get("/config", getConfigDataController); +customRouter.post("/config", updateConfigDataController); + +export { customRouter }; \ No newline at end of file diff --git a/src/routes/webui.ts b/src/routes/webui.ts index 677031c6..93005f34 100644 --- a/src/routes/webui.ts +++ b/src/routes/webui.ts @@ -19,6 +19,9 @@ webuiRouter.use("/webui", (req, res, next) => { }); // Serve virtual routes +webuiRouter.get("/webui/settings", (_req, res) => { + res.sendFile(path.join(rootDir, "static/webui/index.html")); +}); webuiRouter.get("/webui/inventory", (_req, res) => { res.sendFile(path.join(rootDir, "static/webui/index.html")); }); diff --git a/static/webui/index.html b/static/webui/index.html index a680fd33..6ab05bad 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -67,15 +67,21 @@ Mods +
-

- Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. - Visiting the navigation should be the easiest way to trigger that. -

Login using your OpenWF account credentials.

@@ -89,6 +95,10 @@
+

+ Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. + Visiting the navigation should be the easiest way to trigger that. +

Add Items
@@ -133,6 +143,10 @@
+

+ Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. + Visiting the navigation should be the easiest way to trigger that. +

@@ -189,6 +203,62 @@
+
+
+
Change Settings
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+
diff --git a/static/webui/script.js b/static/webui/script.js index 4220234a..b03de1d2 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -15,6 +15,7 @@ function loginFromLocalStorage() { window.accountId = data.id; window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce; updateInventory(); + fetchSettings(); }, () => { logout(); @@ -618,3 +619,47 @@ function doAcquireMod() { $("#mod-to-acquire").on("input", () => { $("#mod-to-acquire").removeClass("is-invalid"); }); + +function fetchSettings() { + fetch('/custom/config') + .then((response) => response.json()) + .then((json) => Object.entries(json).forEach((entry) => { + const [key, value] = entry; + var x = document.getElementById(`${key}`); + if (x!=null) { + if (x.type == "checkbox") { + if (value === true) { + x.setAttribute("checked", "checked") + } + } else if (x.type == "number") { + x.setAttribute("value", `${value}`) + } + } + })); +} + +function doChangeSettings() { + fetch('/custom/config') + .then((response) => response.json()) + .then((json) => { + for(var i in json) { + var x = document.getElementById(`${i}`); + if (x!=null) { + if (x.type == "checkbox") { + if (x.checked === true) { + json[i]=true; + } else { + json[i]=false; + } + } else if (x.type == "number") { + json[i]=parseInt(x.value); + } + } + } + $.post({ + url: "/custom/config", + contentType: "text/plain", + data: JSON.stringify(json, null, 2) + }) + }) +} \ No newline at end of file -- 2.47.2 From ba8a3afce5c2a5dda60b1b365f089a98e18f1c2b Mon Sep 17 00:00:00 2001 From: OrdisPrime Date: Fri, 14 Jun 2024 22:38:33 +0000 Subject: [PATCH 166/522] Apply prettier changes --- .../custom/updateConfigDataController.ts | 8 +-- src/routes/custom.ts | 2 +- static/webui/index.html | 67 ++++++++++++------- static/webui/script.js | 52 +++++++------- 4 files changed, 76 insertions(+), 53 deletions(-) diff --git a/src/controllers/custom/updateConfigDataController.ts b/src/controllers/custom/updateConfigDataController.ts index 38d6ca35..1b13cc60 100644 --- a/src/controllers/custom/updateConfigDataController.ts +++ b/src/controllers/custom/updateConfigDataController.ts @@ -3,11 +3,11 @@ import path from "path"; import fs from "fs"; const rootDir = path.join(__dirname, "../../.."); -const updateConfigDataController: RequestHandler = (req) => { +const updateConfigDataController: RequestHandler = req => { const updateSettingsData = req.body; - - fs.writeFile(path.join(rootDir, "config.json"), updateSettingsData, function(err:any) { - if(err) { + + fs.writeFile(path.join(rootDir, "config.json"), updateSettingsData, function (err: any) { + if (err) { return console.log(err); } }); diff --git a/src/routes/custom.ts b/src/routes/custom.ts index 6c0a7416..476c5997 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -15,4 +15,4 @@ customRouter.post("/addItem", addItemController); customRouter.get("/config", getConfigDataController); customRouter.post("/config", updateConfigDataController); -export { customRouter }; \ No newline at end of file +export { customRouter }; diff --git a/static/webui/index.html b/static/webui/index.html index 6ab05bad..df711a5f 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -96,8 +96,8 @@

- Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. - Visiting the navigation should be the easiest way to trigger that. + Note: Changes made here will only be reflected in-game when the game re-downloads your + inventory. Visiting the navigation should be the easiest way to trigger that.

Add Items
@@ -144,8 +144,8 @@

- Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. - Visiting the navigation should be the easiest way to trigger that. + Note: Changes made here will only be reflected in-game when the game re-downloads your + inventory. Visiting the navigation should be the easiest way to trigger that.

@@ -208,51 +208,72 @@
Change Settings
- - + +
- +
- +
- - + +
- +
- - + +
- - + +
- - + +
- - + +
- - + +
- +
- +
diff --git a/static/webui/script.js b/static/webui/script.js index b03de1d2..37fa5177 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -621,38 +621,40 @@ $("#mod-to-acquire").on("input", () => { }); function fetchSettings() { - fetch('/custom/config') - .then((response) => response.json()) - .then((json) => Object.entries(json).forEach((entry) => { - const [key, value] = entry; - var x = document.getElementById(`${key}`); - if (x!=null) { - if (x.type == "checkbox") { - if (value === true) { - x.setAttribute("checked", "checked") - } - } else if (x.type == "number") { - x.setAttribute("value", `${value}`) + fetch("/custom/config") + .then(response => response.json()) + .then(json => + Object.entries(json).forEach(entry => { + const [key, value] = entry; + var x = document.getElementById(`${key}`); + if (x != null) { + if (x.type == "checkbox") { + if (value === true) { + x.setAttribute("checked", "checked"); + } + } else if (x.type == "number") { + x.setAttribute("value", `${value}`); + } } - } - })); + }) + ); } function doChangeSettings() { - fetch('/custom/config') - .then((response) => response.json()) - .then((json) => { - for(var i in json) { + fetch("/custom/config") + .then(response => response.json()) + .then(json => { + for (var i in json) { var x = document.getElementById(`${i}`); - if (x!=null) { + if (x != null) { if (x.type == "checkbox") { if (x.checked === true) { - json[i]=true; + json[i] = true; } else { - json[i]=false; + json[i] = false; } } else if (x.type == "number") { - json[i]=parseInt(x.value); + json[i] = parseInt(x.value); } } } @@ -660,6 +662,6 @@ function doChangeSettings() { url: "/custom/config", contentType: "text/plain", data: JSON.stringify(json, null, 2) - }) - }) -} \ No newline at end of file + }); + }); +} -- 2.47.2 From b08fff190687e9210fdf08d79fbb069267a6a586 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 15 Jun 2024 02:50:43 +0200 Subject: [PATCH 167/522] feat: rushing recipes, refactor: addItem (#248) --- .../api/claimCompletedRecipeController.ts | 46 +++-- .../api/inventorySlotsController.ts | 4 +- src/services/inventoryService.ts | 131 +++++++++++- src/services/purchaseService.ts | 186 ++---------------- src/types/inventoryTypes/inventoryTypes.ts | 8 + src/types/purchaseTypes.ts | 8 - 6 files changed, 174 insertions(+), 209 deletions(-) diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts index 52236166..034b2e10 100644 --- a/src/controllers/api/claimCompletedRecipeController.ts +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -3,11 +3,11 @@ import { RequestHandler } from "express"; import { logger } from "@/src/utils/logger"; -import { getItemByBlueprint, getItemCategoryByUniqueName } from "@/src/services/itemDataService"; +import { getItemByBlueprint } from "@/src/services/itemDataService"; import { IOid } from "@/src/types/commonTypes"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getInventory } from "@/src/services/inventoryService"; +import { getInventory, updateCurrency, addItem } from "@/src/services/inventoryService"; export interface IClaimCompletedRecipeRequest { RecipeIds: IOid[]; @@ -19,12 +19,10 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) = const accountId = await getAccountIdForRequest(req); if (!accountId) throw new Error("no account id"); - console.log(claimCompletedRecipeRequest); const inventory = await getInventory(accountId); const pendingRecipe = inventory.PendingRecipes.find( recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$oid ); - console.log(pendingRecipe); if (!pendingRecipe) { logger.error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`); throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`); @@ -36,29 +34,29 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) = // throw new Error(`recipe ${pendingRecipe._id} is not ready to be completed`); // } - //get completed Items - const completedItemName = getItemByBlueprint(pendingRecipe.ItemType)?.uniqueName; + inventory.PendingRecipes.pull(pendingRecipe._id); + await inventory.save(); - if (!completedItemName) { + const buildable = getItemByBlueprint(pendingRecipe.ItemType); + if (!buildable) { logger.error(`no completed item found for recipe ${pendingRecipe._id}`); throw new Error(`no completed item found for recipe ${pendingRecipe._id}`); } - const itemCategory = getItemCategoryByUniqueName(completedItemName) as keyof typeof inventory; - console.log(itemCategory); - //TODO: remove all Schema.Mixed for inventory[itemCategory] not to be any - //add item - //inventory[itemCategory]. - //add additional item components like mods or weapons for a sentinel. - //const additionalItemComponents = itemComponents[uniqueName] - //add these items to inventory - //return changes as InventoryChanges - - //remove pending recipe - inventory.PendingRecipes.pull(pendingRecipe._id); - // await inventory.save(); - - logger.debug("Claiming Completed Recipe", { completedItemName }); - - res.json({ InventoryChanges: {} }); + if (req.query.cancel) { + // TODO: Refund items + res.json({}); + } else { + logger.debug("Claiming Recipe", { buildable, pendingRecipe }); + let currencyChanges = {}; + if (req.query.rush && buildable.skipBuildTimePrice) { + currencyChanges = await updateCurrency(buildable.skipBuildTimePrice, true, accountId); + } + res.json({ + InventoryChanges: { + ...currencyChanges, + ...(await addItem(accountId, buildable.uniqueName, buildable.buildQuantity)).InventoryChanges + } + }); + } }; diff --git a/src/controllers/api/inventorySlotsController.ts b/src/controllers/api/inventorySlotsController.ts index fc3c68a7..b026077b 100644 --- a/src/controllers/api/inventorySlotsController.ts +++ b/src/controllers/api/inventorySlotsController.ts @@ -2,7 +2,7 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { updateCurrency } from "@/src/services/inventoryService"; import { RequestHandler } from "express"; import { updateSlots } from "@/src/services/inventoryService"; -import { SlotNameToInventoryName } from "@/src/types/purchaseTypes"; +import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes"; /* loadout slots are additionally purchased slots only @@ -28,7 +28,7 @@ export const inventorySlotsController: RequestHandler = async (req, res) => { //TODO: check which slot was purchased because pvpBonus is also possible const currencyChanges = await updateCurrency(20, true, accountId); - await updateSlots(accountId, SlotNameToInventoryName.LOADOUT, 1, 1); + await updateSlots(accountId, InventorySlot.PVE_LOADOUTS, 1, 1); //console.log({ InventoryChanges: currencyChanges }, " added loadout changes:"); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 357a2120..f21ea25a 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -14,7 +14,8 @@ import { IMission, IRawUpgrade, ISeasonChallengeHistory, - ITypeCount + ITypeCount, + InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate } from "../types/genericUpdate"; import { @@ -24,7 +25,7 @@ import { IUpdateChallengeProgressRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; -import { WeaponTypeInternal, getExalted } from "@/src/services/itemDataService"; +import { WeaponTypeInternal, getWeaponType, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; export const createInventory = async ( @@ -65,6 +66,132 @@ export const getInventory = async (accountOwnerId: string) => { return inventory; }; +export const addItem = async ( + accountId: string, + typeName: string, + quantity: number = 1 +): Promise<{ InventoryChanges: object }> => { + switch (typeName.substr(1).split("/")[1]) { + case "Powersuits": + if (typeName.includes("EntratiMech")) { + const mechSuit = await addMechSuit(typeName, accountId); + await updateSlots(accountId, InventorySlot.MECHSUITS, 0, 1); + logger.debug("mech suit", mechSuit); + return { + InventoryChanges: { + MechBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + MechSuits: [mechSuit] + } + }; + } + const suit = await addPowerSuit(typeName, accountId); + await updateSlots(accountId, InventorySlot.SUITS, 0, 1); + return { + InventoryChanges: { + SuitBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + Suits: [suit] + } + }; + case "Weapons": + const weaponType = getWeaponType(typeName); + const weapon = await addWeapon(weaponType, typeName, accountId); + await updateSlots(accountId, InventorySlot.WEAPONS, 0, 1); + return { + InventoryChanges: { + WeaponBin: { count: 1, platinum: 0, Slots: -1 }, + [weaponType]: [weapon] + } + }; + case "Interface": + return { + InventoryChanges: { + FlavourItems: [await addCustomization(typeName, accountId)] + } + }; + case "Types": + switch (typeName.substr(1).split("/")[2]) { + case "AvatarImages": + case "SuitCustomizations": + return { + InventoryChanges: { + FlavourItems: [await addCustomization(typeName, accountId)] + } + }; + case "Sentinels": + // TOOD: Sentinels should also grant their DefaultUpgrades & SentinelWeapon. + const sentinel = await addSentinel(typeName, accountId); + await updateSlots(accountId, InventorySlot.SENTINELS, 0, 1); + return { + InventoryChanges: { + SentinelBin: { count: 1, platinum: 0, Slots: -1 }, + Sentinels: [sentinel] + } + }; + case "Items": { + const inventory = await getInventory(accountId); + const miscItemChanges = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies IMiscItem + ]; + addMiscItems(inventory, miscItemChanges); + await inventory.save(); + return { + InventoryChanges: { + MiscItems: miscItemChanges + } + }; + } + case "Recipes": + case "Consumables": { + // Blueprints for Ciphers, Antitoxins + const inventory = await getInventory(accountId); + const recipeChanges = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies ITypeCount + ]; + addRecipes(inventory, recipeChanges); + await inventory.save(); + return { + InventoryChanges: { + Recipes: recipeChanges + } + }; + } + case "Restoratives": // Codex Scanner, Remote Observer, Starburst + const inventory = await getInventory(accountId); + const consumablesChanges = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies IConsumable + ]; + addConsumables(inventory, consumablesChanges); + await inventory.save(); + return { + InventoryChanges: { + Consumables: consumablesChanges + } + }; + } + break; + } + const errorMessage = `unable to add item: ${typeName}`; + logger.error(errorMessage); + throw new Error(errorMessage); +}; + //TODO: maybe genericMethod for all the add methods, they share a lot of logic export const addSentinel = async (sentinelName: string, accountId: string) => { const inventory = await getInventory(accountId); diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index d9ca8e14..ba13666a 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,22 +1,7 @@ import { parseSlotPurchaseName } from "@/src/helpers/purchaseHelpers"; -import { getWeaponType } from "@/src/services/itemDataService"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; -import { - addBooster, - addConsumables, - addCustomization, - addMechSuit, - addMiscItems, - addPowerSuit, - addRecipes, - addSentinel, - addWeapon, - getInventory, - updateCurrency, - updateSlots -} from "@/src/services/inventoryService"; -import { IConsumable, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; -import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; +import { addItem, addBooster, updateCurrency, updateSlots } from "@/src/services/inventoryService"; +import { IPurchaseRequest, SlotPurchase } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; export const getStoreItemCategory = (storeItem: string) => { @@ -40,34 +25,24 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI const internalName = purchaseRequest.PurchaseParams.StoreItem.replace("/StoreItems", ""); logger.debug(`store category ${storeCategory}`); - let inventoryChanges; + let purchaseResponse; switch (storeCategory) { - case "Powersuits": - inventoryChanges = await handlePowersuitPurchase(internalName, accountId); - break; - case "Weapons": - inventoryChanges = await handleWeaponsPurchase(internalName, accountId); + default: + purchaseResponse = await addItem(accountId, internalName); break; case "Types": - inventoryChanges = await handleTypesPurchase( + purchaseResponse = await handleTypesPurchase( internalName, accountId, purchaseRequest.PurchaseParams.Quantity ); break; case "Boosters": - inventoryChanges = await handleBoostersPurchase(internalName, accountId); + purchaseResponse = await handleBoostersPurchase(internalName, accountId); break; - case "Interface": - inventoryChanges = await handleCustomizationPurchase(internalName, accountId); - break; - default: - const errorMessage = `unknown store category: ${storeCategory} not implemented or new`; - logger.error(errorMessage); - throw new Error(errorMessage); } - if (!inventoryChanges) throw new Error("purchase response was undefined"); + if (!purchaseResponse) throw new Error("purchase response was undefined"); const currencyChanges = await updateCurrency( purchaseRequest.PurchaseParams.ExpectedPrice, @@ -75,12 +50,12 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI accountId ); - inventoryChanges.InventoryChanges = { + purchaseResponse.InventoryChanges = { ...currencyChanges, - ...inventoryChanges.InventoryChanges + ...purchaseResponse.InventoryChanges }; - return inventoryChanges; + return purchaseResponse; }; export const slotPurchaseNameToSlotName: SlotPurchase = { @@ -126,102 +101,18 @@ const handleSlotPurchase = async (slotPurchaseNameFull: string, accountId: strin }; }; -const handleWeaponsPurchase = async (weaponName: string, accountId: string) => { - const weaponType = getWeaponType(weaponName); - const addedWeapon = await addWeapon(weaponType, weaponName, accountId); - - await updateSlots(accountId, SlotNameToInventoryName.WEAPON, 0, 1); - - return { - InventoryChanges: { - WeaponBin: { count: 1, platinum: 0, Slots: -1 }, - [weaponType]: [addedWeapon] - } - } as IPurchaseResponse; -}; - -const handlePowersuitPurchase = async (powersuitName: string, accountId: string) => { - if (powersuitName.includes("EntratiMech")) { - const mechSuit = await addMechSuit(powersuitName, accountId); - - await updateSlots(accountId, SlotNameToInventoryName.MECHSUIT, 0, 1); - logger.debug("mech suit", mechSuit); - - return { - InventoryChanges: { - MechBin: { - count: 1, - platinum: 0, - Slots: -1 - }, - MechSuits: [mechSuit] - } - } as IPurchaseResponse; - } - - const suit = await addPowerSuit(powersuitName, accountId); - await updateSlots(accountId, SlotNameToInventoryName.SUIT, 0, 1); - - return { - InventoryChanges: { - SuitBin: { - count: 1, - platinum: 0, - Slots: -1 - }, - Suits: [suit] - } - }; -}; - //TODO: change to getInventory, apply changes then save at the end const handleTypesPurchase = async (typesName: string, accountId: string, quantity: number) => { const typeCategory = getStoreItemTypesCategory(typesName); logger.debug(`type category ${typeCategory}`); switch (typeCategory) { - case "AvatarImages": - case "SuitCustomizations": - return await handleCustomizationPurchase(typesName, accountId); - case "Sentinels": - return await handleSentinelPurchase(typesName, accountId); + default: + return await addItem(accountId, typesName, quantity); case "SlotItems": return await handleSlotPurchase(typesName, accountId); - case "Items": - return await handleMiscItemPurchase(typesName, accountId, quantity); - case "Recipes": - case "Consumables": // Blueprints for Ciphers, Antitoxins - return await handleRecipesPurchase(typesName, accountId, quantity); - case "Restoratives": // Codex Scanner, Remote Observer, Starburst - return await handleRestorativesPurchase(typesName, accountId, quantity); - break; - default: - throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); } }; -const handleSentinelPurchase = async (sentinelName: string, accountId: string) => { - const sentinel = await addSentinel(sentinelName, accountId); - - await updateSlots(accountId, SlotNameToInventoryName.SENTINEL, 0, 1); - - return { - InventoryChanges: { - SentinelBin: { count: 1, platinum: 0, Slots: -1 }, - Sentinels: [sentinel] - } - }; -}; - -const handleCustomizationPurchase = async (customizationName: string, accountId: string) => { - const customization = await addCustomization(customizationName, accountId); - - return { - InventoryChanges: { - FlavourItems: [customization] - } - }; -}; - const boosterCollection = [ "/Lotus/Types/Boosters/ResourceAmountBooster", "/Lotus/Types/Boosters/AffinityBooster", @@ -247,54 +138,3 @@ const handleBoostersPurchase = async (boosterStoreName: string, accountId: strin } }; }; - -const handleMiscItemPurchase = async (uniqueName: string, accountId: string, quantity: number) => { - const inventory = await getInventory(accountId); - const miscItemChanges = [ - { - ItemType: uniqueName, - ItemCount: quantity - } satisfies IMiscItem - ]; - addMiscItems(inventory, miscItemChanges); - await inventory.save(); - return { - InventoryChanges: { - MiscItems: miscItemChanges - } - }; -}; - -const handleRecipesPurchase = async (uniqueName: string, accountId: string, quantity: number) => { - const inventory = await getInventory(accountId); - const recipeChanges = [ - { - ItemType: uniqueName, - ItemCount: quantity - } satisfies ITypeCount - ]; - addRecipes(inventory, recipeChanges); - await inventory.save(); - return { - InventoryChanges: { - Recipes: recipeChanges - } - }; -}; - -const handleRestorativesPurchase = async (uniqueName: string, accountId: string, quantity: number) => { - const inventory = await getInventory(accountId); - const consumablesChanges = [ - { - ItemType: uniqueName, - ItemCount: quantity - } satisfies IConsumable - ]; - addConsumables(inventory, consumablesChanges); - await inventory.save(); - return { - InventoryChanges: { - Consumables: consumablesChanges - } - }; -}; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 66f863ee..3bc903cd 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -419,6 +419,14 @@ export interface ICrewShipHarnessConfig { Upgrades?: string[]; } +export enum InventorySlot { + SUITS = "SuitBin", + WEAPONS = "WeaponBin", + MECHSUITS = "MechBin", + PVE_LOADOUTS = "PveBonusLoadoutBin", + SENTINELS = "SentinelBin" +} + export interface ISlots { Extra: number; // can be undefined, but not if used via mongoose Slots: number; diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index c6b5d648..73ee085c 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -42,14 +42,6 @@ export type IBinChanges = { Extra?: number; }; -export enum SlotNameToInventoryName { - SUIT = "SuitBin", - WEAPON = "WeaponBin", - MECHSUIT = "MechBin", - LOADOUT = "PveBonusLoadoutBin", - SENTINEL = "SentinelBin" -} - export type SlotPurchaseName = | "SuitSlotItem" | "TwoSentinelSlotItem" -- 2.47.2 From e5451d52270d7d11bc51ec8f72b9f63c4fa622ff Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 15 Jun 2024 02:52:45 +0200 Subject: [PATCH 168/522] fix: config change on WebUI causing hot reload in dev mode (#297) --- .../custom/getConfigDataController.ts | 4 +- .../custom/updateConfigDataController.ts | 15 +- src/services/configService.ts | 25 +++- static/webui/index.html | 132 ++++++++---------- 4 files changed, 86 insertions(+), 90 deletions(-) diff --git a/src/controllers/custom/getConfigDataController.ts b/src/controllers/custom/getConfigDataController.ts index 8d946384..9a8684ca 100644 --- a/src/controllers/custom/getConfigDataController.ts +++ b/src/controllers/custom/getConfigDataController.ts @@ -1,8 +1,8 @@ import { RequestHandler } from "express"; -import configFile from "@/config.json"; +import { config } from "@/src/services/configService"; const getConfigDataController: RequestHandler = (_req, res) => { - res.json(configFile); + res.json(config); }; export { getConfigDataController }; diff --git a/src/controllers/custom/updateConfigDataController.ts b/src/controllers/custom/updateConfigDataController.ts index 1b13cc60..b7521a1a 100644 --- a/src/controllers/custom/updateConfigDataController.ts +++ b/src/controllers/custom/updateConfigDataController.ts @@ -1,16 +1,9 @@ import { RequestHandler } from "express"; -import path from "path"; -import fs from "fs"; -const rootDir = path.join(__dirname, "../../.."); +import { updateConfig } from "@/src/services/configService"; -const updateConfigDataController: RequestHandler = req => { - const updateSettingsData = req.body; - - fs.writeFile(path.join(rootDir, "config.json"), updateSettingsData, function (err: any) { - if (err) { - return console.log(err); - } - }); +const updateConfigDataController: RequestHandler = async (req, res) => { + await updateConfig(req.body.toString()); + res.end(); }; export { updateConfigDataController }; diff --git a/src/services/configService.ts b/src/services/configService.ts index e5199a3c..8290047b 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -1,4 +1,22 @@ -import rawConfig from "@/config.json"; +import path from "path"; +import fs from "fs"; +import fsPromises from "fs/promises"; +import { logger } from "@/src/utils/logger"; + +const rootDir = path.join(__dirname, "../.."); +const repoDir = path.basename(rootDir) == "build" ? path.join(rootDir, "..") : rootDir; +const configPath = path.join(repoDir, "config.json"); +export const config: IConfig = JSON.parse(fs.readFileSync(configPath, "utf-8")); + +let amnesia = false; +fs.watchFile(configPath, () => { + if (amnesia) { + amnesia = false; + } else { + logger.info("Detected a change to config.json, reloading its contents."); + Object.assign(config, JSON.parse(fs.readFileSync(configPath, "utf-8"))); + } +}); interface IConfig { mongodbUrl: string; @@ -26,4 +44,7 @@ interface ILoggerConfig { level: string; // "fatal" | "error" | "warn" | "info" | "http" | "debug" | "trace"; } -export const config: IConfig = rawConfig; +export const updateConfig = async (data: string) => { + amnesia = true; + return await fsPromises.writeFile(configPath, data); +}; diff --git a/static/webui/index.html b/static/webui/index.html index df711a5f..d19f125a 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -204,81 +204,63 @@
-
-
Change Settings
- -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- - -
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
-- 2.47.2 From e3103d4ab62bf2311c2e1abae1b451c4cc37c6cd Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 15 Jun 2024 15:09:38 +0200 Subject: [PATCH 169/522] fix(webui): webui config change not committing change to memory (#298) --- src/services/configService.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/configService.ts b/src/services/configService.ts index 8290047b..283b31bf 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -46,5 +46,6 @@ interface ILoggerConfig { export const updateConfig = async (data: string) => { amnesia = true; - return await fsPromises.writeFile(configPath, data); + await fsPromises.writeFile(configPath, data); + Object.assign(config, JSON.parse(data)); }; -- 2.47.2 From f216d5222fb44f46af09a9aa12c53f7a9fcecb31 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 15 Jun 2024 15:12:08 +0200 Subject: [PATCH 170/522] feat: purchase shop decorations (#299) --- src/services/inventoryService.ts | 78 ++++++++++++++++++++++++++------ 1 file changed, 65 insertions(+), 13 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index f21ea25a..e5f82b97 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -116,6 +116,23 @@ export const addItem = async ( FlavourItems: [await addCustomization(typeName, accountId)] } }; + case "Objects": { + // /Lotus/Objects/Tenno/Props/TnoLisetTextProjector (Note Beacon) + const inventory = await getInventory(accountId); + const changes = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies IMiscItem + ]; + addShipDecorations(inventory, changes); + await inventory.save(); + return { + InventoryChanges: { + ShipDecorations: changes + } + }; + } case "Types": switch (typeName.substr(1).split("/")[2]) { case "AvatarImages": @@ -136,20 +153,40 @@ export const addItem = async ( } }; case "Items": { - const inventory = await getInventory(accountId); - const miscItemChanges = [ - { - ItemType: typeName, - ItemCount: quantity - } satisfies IMiscItem - ]; - addMiscItems(inventory, miscItemChanges); - await inventory.save(); - return { - InventoryChanges: { - MiscItems: miscItemChanges + switch (typeName.substr(1).split("/")[3]) { + case "ShipDecos": { + const inventory = await getInventory(accountId); + const changes = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies IMiscItem + ]; + addShipDecorations(inventory, changes); + await inventory.save(); + return { + InventoryChanges: { + ShipDecorations: changes + } + }; } - }; + default: { + const inventory = await getInventory(accountId); + const miscItemChanges = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies IMiscItem + ]; + addMiscItems(inventory, miscItemChanges); + await inventory.save(); + return { + InventoryChanges: { + MiscItems: miscItemChanges + } + }; + } + } } case "Recipes": case "Consumables": { @@ -427,6 +464,21 @@ export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: }); }; +export const addShipDecorations = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { + const { ShipDecorations } = inventory; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = ShipDecorations.findIndex(miscItem => miscItem.ItemType === ItemType); + + if (itemIndex !== -1) { + ShipDecorations[itemIndex].ItemCount += ItemCount; + inventory.markModified(`ShipDecorations.${itemIndex}.ItemCount`); + } else { + ShipDecorations.push({ ItemCount, ItemType }); + } + }); +}; + export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { const { Consumables } = inventory; -- 2.47.2 From 21db3b5c5d5dffd60c8f57c1818f6bd48ddbe073 Mon Sep 17 00:00:00 2001 From: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 15 Jun 2024 17:39:13 +0200 Subject: [PATCH 171/522] fix: move ship decorations (#300) --- src/models/personalRoomsModel.ts | 3 +- src/services/shipCustomizationsService.ts | 71 ++++++++++++++++++++++- src/types/shipTypes.ts | 12 +++- 3 files changed, 79 insertions(+), 7 deletions(-) diff --git a/src/models/personalRoomsModel.ts b/src/models/personalRoomsModel.ts index 8f4abede..8a7caaf0 100644 --- a/src/models/personalRoomsModel.ts +++ b/src/models/personalRoomsModel.ts @@ -7,7 +7,8 @@ const placedDecosSchema = new Schema( { Type: String, Pos: [Number], - Rot: [Number] + Rot: [Number], + Scale: Number }, { id: false } ); diff --git a/src/services/shipCustomizationsService.ts b/src/services/shipCustomizationsService.ts index 98125e50..d21510e7 100644 --- a/src/services/shipCustomizationsService.ts +++ b/src/services/shipCustomizationsService.ts @@ -6,6 +6,7 @@ import { IShipDecorationsRequest, IShipDecorationsResponse } from "@/src/types/shipTypes"; +import { logger } from "@/src/utils/logger"; import { Types } from "mongoose"; export const setShipCustomizations = async (shipCustomization: ISetShipCustomizationsRequest) => { @@ -37,12 +38,74 @@ export const handleSetShipDecorations = async ( const rooms = placedDecoration.IsApartment ? personalRooms.Apartment.Rooms : personalRooms.Ship.Rooms; - const room = rooms.find(room => room.Name === placedDecoration.Room); + const roomToPlaceIn = rooms.find(room => room.Name === placedDecoration.Room); + + if (!roomToPlaceIn) { + logger.error("room not found"); + throw new Error("room not found"); + } + + if (placedDecoration.MoveId) { + //moved within the same room + if (placedDecoration.OldRoom === placedDecoration.Room) { + const existingDecorationIndex = roomToPlaceIn?.PlacedDecos?.findIndex( + deco => deco._id.toString() === placedDecoration.MoveId + ); + + if (existingDecorationIndex === -1) { + logger.error("decoration to be moved not found"); + throw new Error("decoration to be moved not found"); + } + + roomToPlaceIn.PlacedDecos[existingDecorationIndex].Pos = placedDecoration.Pos; + roomToPlaceIn.PlacedDecos[existingDecorationIndex].Rot = placedDecoration.Rot; + + if (placedDecoration.Scale) { + roomToPlaceIn.PlacedDecos[existingDecorationIndex].Scale = placedDecoration.Scale; + } + + await personalRooms.save(); + return { + OldRoom: placedDecoration.OldRoom, + NewRoom: placedDecoration.Room, + IsApartment: placedDecoration.IsApartment, + MaxCapacityIncrease: 0 // TODO: calculate capacity change upon removal + }; + } + + //moved to a different room + const oldRoom = rooms.find(room => room.Name === placedDecoration.OldRoom); + + if (!oldRoom) { + logger.error("old room not found"); + throw new Error("old room not found"); + } + + oldRoom.PlacedDecos.pull({ _id: placedDecoration.MoveId }); + + const newDecoration = { + Type: placedDecoration.Type, + Pos: placedDecoration.Pos, + Rot: placedDecoration.Rot, + Scale: placedDecoration.Scale || 1, + _id: placedDecoration.MoveId + }; + + //the new room is still roomToPlaceIn + roomToPlaceIn.PlacedDecos.push(newDecoration); + await personalRooms.save(); + return { + OldRoom: placedDecoration.OldRoom, + NewRoom: placedDecoration.Room, + IsApartment: placedDecoration.IsApartment, + MaxCapacityIncrease: 0 // TODO: calculate capacity change upon removal + }; + } //TODO: check whether to remove from shipitems if (placedDecoration.RemoveId) { - room?.PlacedDecos?.pull({ _id: placedDecoration.RemoveId }); + roomToPlaceIn.PlacedDecos.pull({ _id: placedDecoration.RemoveId }); await personalRooms.save(); return { DecoId: placedDecoration.RemoveId, @@ -54,11 +117,13 @@ export const handleSetShipDecorations = async ( // TODO: handle capacity + //place decoration const decoId = new Types.ObjectId(); - room?.PlacedDecos?.push({ + roomToPlaceIn.PlacedDecos?.push({ Type: placedDecoration.Type, Pos: placedDecoration.Pos, Rot: placedDecoration.Rot, + Scale: placedDecoration.Scale || 1, _id: decoId }); diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index 53cf1f87..6b0e019f 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -69,6 +69,7 @@ export interface IPlacedDecosDatabase { Type: string; Pos: [number, number, number]; Rot: [number, number, number]; + Scale: number; _id: Types.ObjectId; } @@ -100,12 +101,17 @@ export interface IShipDecorationsRequest { Rot: [number, number, number]; Room: string; IsApartment: boolean; - RemoveId: string; + RemoveId?: string; + MoveId?: string; + OldRoom?: string; + Scale?: number; } export interface IShipDecorationsResponse { - DecoId: string; - Room: string; + DecoId?: string; + Room?: string; IsApartment: boolean; MaxCapacityIncrease?: number; + OldRoom?: string; + NewRoom?: string; } -- 2.47.2 From 5036d6dbae41dd4e86204c710d912bff3e3c7770 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 15 Jun 2024 22:12:57 +0200 Subject: [PATCH 172/522] feat: purchasing of bundles (#301) --- package-lock.json | 8 ++-- package.json | 2 +- src/services/purchaseService.ts | 66 +++++++++++++++++++++++---------- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14580188..113407a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.2", + "warframe-public-export-plus": "^0.2.3", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3909,9 +3909,9 @@ } }, "node_modules/warframe-public-export-plus": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.2.tgz", - "integrity": "sha512-PAsiyiRDqXcsUwZTweihwrSksd+GT3USrbHwS/TrJUC3TqLS0Ng24OfefFKPWOmPfMxDbdkg2zV39uq72iZ/Yg==" + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.3.tgz", + "integrity": "sha512-Bl4gb3f1LIdGXLEOJg2XTIFYqrialdTIvVhDqDzVJIRfii0PKsy9jsr9vqM14tWz7oVpQMeCUyvisDkkXijTSg==" }, "node_modules/warframe-riven-info": { "version": "0.1.0", diff --git a/package.json b/package.json index 88a71412..9da3bcca 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.2", + "warframe-public-export-plus": "^0.2.3", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index ba13666a..b8a1c1ea 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -3,6 +3,7 @@ import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addItem, addBooster, updateCurrency, updateSlots } from "@/src/services/inventoryService"; import { IPurchaseRequest, SlotPurchase } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; +import { ExportBundles } from "warframe-public-export-plus"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -21,26 +22,12 @@ export const getStoreItemTypesCategory = (typesItem: string) => { export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountId: string) => { logger.debug("purchase request", purchaseRequest); - const storeCategory = getStoreItemCategory(purchaseRequest.PurchaseParams.StoreItem); - const internalName = purchaseRequest.PurchaseParams.StoreItem.replace("/StoreItems", ""); - logger.debug(`store category ${storeCategory}`); - let purchaseResponse; - switch (storeCategory) { - default: - purchaseResponse = await addItem(accountId, internalName); - break; - case "Types": - purchaseResponse = await handleTypesPurchase( - internalName, - accountId, - purchaseRequest.PurchaseParams.Quantity - ); - break; - case "Boosters": - purchaseResponse = await handleBoostersPurchase(internalName, accountId); - break; - } + const purchaseResponse = await handleStoreItemAcquisition( + purchaseRequest.PurchaseParams.StoreItem, + accountId, + purchaseRequest.PurchaseParams.Quantity + ); if (!purchaseResponse) throw new Error("purchase response was undefined"); @@ -58,6 +45,43 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI return purchaseResponse; }; +const handleStoreItemAcquisition = async ( + storeItemName: string, + accountId: string, + quantity: number +): Promise<{ InventoryChanges: object }> => { + let purchaseResponse = { + InventoryChanges: {} + }; + logger.debug(`handling acquision of ${storeItemName}`); + if (storeItemName in ExportBundles) { + const bundle = ExportBundles[storeItemName]; + logger.debug("acquiring bundle", bundle); + for (const component of bundle.components) { + purchaseResponse = { + ...purchaseResponse, + ...(await handleStoreItemAcquisition(component.typeName, accountId, component.purchaseQuantity)) + }; + } + } else { + const storeCategory = getStoreItemCategory(storeItemName); + const internalName = storeItemName.replace("/StoreItems", ""); + logger.debug(`store category ${storeCategory}`); + switch (storeCategory) { + default: + purchaseResponse = await addItem(accountId, internalName); + break; + case "Types": + purchaseResponse = await handleTypesPurchase(internalName, accountId, quantity); + break; + case "Boosters": + purchaseResponse = await handleBoostersPurchase(internalName, accountId); + break; + } + } + return purchaseResponse; +}; + export const slotPurchaseNameToSlotName: SlotPurchase = { SuitSlotItem: { name: "SuitBin", slotsPerPurchase: 1 }, TwoSentinelSlotItem: { name: "SentinelBin", slotsPerPurchase: 2 }, @@ -122,7 +146,9 @@ const boosterCollection = [ const handleBoostersPurchase = async (boosterStoreName: string, accountId: string) => { const match = boosterStoreName.match(/(\d+)Day/); - if (!match) return; + if (!match) { + return { InventoryChanges: {} }; + } const extractedDigit = Number(match[1]); const ItemType = boosterCollection.find(i => -- 2.47.2 From 31da32889a9adef5f3ee93846ac48bdcfadcb2ad Mon Sep 17 00:00:00 2001 From: Mebius <160588255+Mebiius@users.noreply.github.com> Date: Sun, 16 Jun 2024 03:23:33 -0700 Subject: [PATCH 173/522] improve(webui): Zaw display label (#304) Co-authored-by: Belenus <160588255+Be1enus@users.noreply.github.com> --- static/webui/script.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/webui/script.js b/static/webui/script.js index 37fa5177..288f70c7 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -95,6 +95,8 @@ window.itemListPromise = new Promise(resolve => { "/Lotus/Weapons/Tenno/Pistol/LotusPistol": { name: "Pistol" }, "/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: "Rifle" }, "/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: "Shotgun" }, + // Modular weapons + "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": {name: "Zaw"}, // Missing in data sources "/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": { name: "Traumatic Peculiar" } }; -- 2.47.2 From 8f8d58ade6cf59773d3e9f82bb53196824e20e66 Mon Sep 17 00:00:00 2001 From: OrdisPrime Date: Sun, 16 Jun 2024 10:23:52 +0000 Subject: [PATCH 174/522] Apply prettier changes --- static/webui/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/webui/script.js b/static/webui/script.js index 288f70c7..15db05d7 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -96,7 +96,7 @@ window.itemListPromise = new Promise(resolve => { "/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: "Rifle" }, "/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: "Shotgun" }, // Modular weapons - "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": {name: "Zaw"}, + "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": { name: "Zaw" }, // Missing in data sources "/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": { name: "Traumatic Peculiar" } }; -- 2.47.2 From c9b570059ea3a42ddb6be70a9fc36d900eb003f9 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 16 Jun 2024 12:24:15 +0200 Subject: [PATCH 175/522] improve: don't fake XPInfo if we don't have to (#303) --- src/controllers/api/inventoryController.ts | 23 +++++++++++----------- static/webui/script.js | 4 ++-- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index e78bf3d8..4aa44387 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -78,19 +78,18 @@ const inventoryController: RequestHandler = async (request: Request, response: R } } - if ( - typeof config.spoofMasteryRank === "number" && - config.spoofMasteryRank >= 0 && - config.spoofMasteryRank <= 5030 - ) { + if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) { inventoryResponse.PlayerLevel = config.spoofMasteryRank; - inventoryResponse.XPInfo = []; - let numFrames = getExpRequiredForMr(config.spoofMasteryRank) / 6000; - while (numFrames-- > 0) { - inventoryResponse.XPInfo.push({ - ItemType: "/Lotus/Powersuits/Mag/Mag", - XP: 1_600_000 - }); + if (!("xpBasedLevelCapDisabled" in request.query)) { + // This client has not been patched to accept any mastery rank, need to fake the XP. + inventoryResponse.XPInfo = []; + let numFrames = getExpRequiredForMr(Math.min(config.spoofMasteryRank, 5030)) / 6000; + while (numFrames-- > 0) { + inventoryResponse.XPInfo.push({ + ItemType: "/Lotus/Powersuits/Mag/Mag", + XP: 1_600_000 + }); + } } } diff --git a/static/webui/script.js b/static/webui/script.js index 15db05d7..0475a730 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -123,7 +123,7 @@ window.itemListPromise = new Promise(resolve => { }); function updateInventory() { - const req = $.get("/api/inventory.php?" + window.authz); + const req = $.get("/api/inventory.php?" + window.authz + "&xpBasedLevelCapDisabled=1"); req.done(data => { window.itemListPromise.then(itemMap => { document.getElementById("warframe-list").innerHTML = ""; @@ -539,7 +539,7 @@ function doAcquireRiven() { }) }).done(function () { // Get riven's assigned id - $.get("/api/inventory.php?" + window.authz).done(data => { + $.get("/api/inventory.php?" + window.authz + "&xpBasedLevelCapDisabled=1").done(data => { for (const rawUpgrade of data.RawUpgrades) { if (rawUpgrade.ItemType === uniqueName) { // Add fingerprint to riven -- 2.47.2 From e2221f257b596097f9c14296048d41a63ce144ee Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:51:20 +0200 Subject: [PATCH 176/522] refactor: Combine Equipment and Config Types (#289) Co-authored-by: AMelonInsideLemon Co-authored-by: Ordis <134585663+OrdisPrime@users.noreply.github.com> --- src/controllers/api/upgradesController.ts | 20 +- src/models/inventoryModels/inventoryModel.ts | 215 +++------ src/models/inventoryModels/loadoutModel.ts | 3 +- src/services/inventoryService.ts | 13 +- src/types/inventoryTypes/SuitTypes.ts | 25 -- .../inventoryTypes/commonInventoryTypes.ts | 63 ++- src/types/inventoryTypes/inventoryTypes.ts | 413 ++++-------------- src/types/inventoryTypes/weaponTypes.ts | 33 -- src/types/purchaseTypes.ts | 13 +- src/types/requestTypes.ts | 19 +- src/types/saveLoadoutTypes.ts | 21 +- 11 files changed, 214 insertions(+), 624 deletions(-) delete mode 100644 src/types/inventoryTypes/SuitTypes.ts delete mode 100644 src/types/inventoryTypes/weaponTypes.ts diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index b0545632..88c01dc7 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; -import { FocusSchool } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { IGenericItemDatabase, IMiscItem, TGenericItemKey } from "@/src/types/inventoryTypes/inventoryTypes"; +import { FocusSchool, IEquipmentDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IMiscItem, IEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; @@ -28,7 +28,7 @@ export const upgradesController: RequestHandler = async (req, res) => { switch (operation.UpgradeRequirement) { case "/Lotus/Types/Items/MiscItems/OrokinReactor": case "/Lotus/Types/Items/MiscItems/OrokinCatalyst": - for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 1; @@ -38,7 +38,7 @@ export const upgradesController: RequestHandler = async (req, res) => { break; case "/Lotus/Types/Items/MiscItems/UtilityUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker": - for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 2; @@ -49,7 +49,7 @@ export const upgradesController: RequestHandler = async (req, res) => { case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker": - for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 32; @@ -61,7 +61,7 @@ export const upgradesController: RequestHandler = async (req, res) => { case "/Lotus/Types/Items/MiscItems/FormaUmbra": case "/Lotus/Types/Items/MiscItems/FormaAura": case "/Lotus/Types/Items/MiscItems/FormaStance": - for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.XP = 0; setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue); @@ -72,7 +72,7 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker": - for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.ModSlotPurchases ??= 0; item.ModSlotPurchases += 1; @@ -87,7 +87,7 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": - for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.CustomizationSlotPurchases ??= 0; item.CustomizationSlotPurchases += 1; @@ -103,7 +103,7 @@ export const upgradesController: RequestHandler = async (req, res) => { break; case "": console.assert(operation.OperationType == "UOT_SWAP_POLARITY"); - for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { for (let i = 0; i != operation.PolarityRemap.length; ++i) { if (operation.PolarityRemap[i].Slot != i) { @@ -122,7 +122,7 @@ export const upgradesController: RequestHandler = async (req, res) => { res.json({ InventoryChanges }); }; -const setSlotPolarity = (item: IGenericItemDatabase, slot: number, polarity: FocusSchool): void => { +const setSlotPolarity = (item: IEquipmentDatabase, slot: number, polarity: FocusSchool): void => { item.Polarity ??= []; const entry = item.Polarity.find(entry => entry.Slot == slot); if (entry) { diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 679216b7..dc91ddb7 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -8,7 +8,6 @@ import { IBooster, IInventoryResponse, ISlots, - IGenericItem, IMailbox, IDuviriInfo, IPendingRecipe as IPendingRecipeDatabase, @@ -16,14 +15,13 @@ import { ITypeCount, IFocusXP, IFocusUpgrades, - IGenericItem2, ITypeXPItem, IChallengeProgress, IStepSequencer, IAffiliation, INotePacks, ICompletedJobChain, - ISeasonChallengeHistory, + ISeasonChallenge, IPlayerSkills, ISettings, IInfestedFoundry, @@ -40,15 +38,14 @@ import { ILoreFragmentScan } from "../../types/inventoryTypes/inventoryTypes"; import { IOid } from "../../types/commonTypes"; -import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; -import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; import { IAbilityOverride, IColor, IItemConfig, - IOperatorConfigClient, IOperatorConfigDatabase, - IPolarity + IPolarity, + IEquipmentDatabase, + IOperatorConfigClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; @@ -185,33 +182,35 @@ ItemConfigSchema.set("toJSON", { } }); -//TODO: migrate to one schema for weapons and suits.. and possibly others -const WeaponSchema = new Schema( - { - ItemType: String, - Configs: [ItemConfigSchema], - UpgradeVer: Number, - XP: Number, - Features: Number, - Polarized: Number, - Polarity: [polaritySchema], - FocusLens: String, - ModSlotPurchases: Number, - CustomizationSlotPurchases: Number, - UpgradeType: Schema.Types.Mixed, //todo - UpgradeFingerprint: String, - ItemName: String, - ModularParts: [String], - UnlockLevel: Number - }, - { id: false } -); +const EquipmentSchema = new Schema({ + ItemType: String, + Configs: [ItemConfigSchema], + UpgradeVer: Number, + XP: Number, + Features: Number, + Polarized: Number, + Polarity: [polaritySchema], + FocusLens: String, + ModSlotPurchases: Number, + CustomizationSlotPurchases: Number, + UpgradeType: Schema.Types.Mixed, //todo + UpgradeFingerprint: String, + ItemName: String, + InfestationDate: Date, + InfestationDays: Number, + InfestationType: String, + ModularParts: [String], + UnlockLevel: Number, + Expiry: Date, + SkillTree: String, + ArchonCrystalUpgrades: [Schema.Types.Mixed] //TODO +}); -WeaponSchema.virtual("ItemId").get(function () { +EquipmentSchema.virtual("ItemId").get(function () { return { $oid: this._id.toString() } satisfies IOid; }); -WeaponSchema.set("toJSON", { +EquipmentSchema.set("toJSON", { virtuals: true, transform(_document, returnedObject) { delete returnedObject._id; @@ -248,7 +247,7 @@ RawUpgrades.set("toJSON", { }); //TODO: find out what this is -const upgrqadesSchema = new Schema( +const upgradesSchema = new Schema( { UpgradeFingerprint: String, ItemType: String @@ -256,42 +255,11 @@ const upgrqadesSchema = new Schema( { id: false } ); -upgrqadesSchema.virtual("ItemId").get(function () { +upgradesSchema.virtual("ItemId").get(function () { return toOid(this._id); }); -upgrqadesSchema.set("toJSON", { - virtuals: true, - transform(_document, returnedObject) { - delete returnedObject._id; - delete returnedObject.__v; - } -}); - -//TODO: reduce weapon and suit schemas to one schema if reasonable -const suitSchema = new Schema( - { - ItemType: String, - Configs: [ItemConfigSchema], - UpgradeVer: Number, - XP: Number, - InfestationDate: Date, - Features: Number, - Polarity: [polaritySchema], - Polarized: Number, - ModSlotPurchases: Number, - CustomizationSlotPurchases: Number, - FocusLens: String, - UnlockLevel: Number - }, - { id: false } -); - -suitSchema.virtual("ItemId").get(function () { - return { $oid: this._id.toString() } satisfies IOid; -}); - -suitSchema.set("toJSON", { +upgradesSchema.set("toJSON", { virtuals: true, transform(_document, returnedObject) { delete returnedObject._id; @@ -321,33 +289,6 @@ FlavourItemSchema.set("toJSON", { } }); -const GenericItemSchema = new Schema( - { - ItemType: String, - Configs: [ItemConfigSchema], - UpgradeVer: Number, - XP: Number, - Features: Number, - Polarity: [polaritySchema], - Polarized: Number, - ModSlotPurchases: Number, - CustomizationSlotPurchases: Number - }, - { id: false } -); - -GenericItemSchema.virtual("ItemId").get(function () { - return { $oid: this._id.toString() } satisfies IOid; -}); - -GenericItemSchema.set("toJSON", { - virtuals: true, - transform(_document, returnedObject) { - delete returnedObject._id; - delete returnedObject.__v; - } -}); - // "Mailbox": { "LastInboxId": { "$oid": "123456780000000000000000" } } const MailboxSchema = new Schema( { @@ -384,30 +325,6 @@ DuviriInfoSchema.set("toJSON", { } }); -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const GenericItemSchema2 = new Schema({ - ItemType: String, - ItemName: String, - XP: Number, - UpgradeVer: Number, //this is probably __v - Features: Number, - Polarized: Number, - CustomizationSlotPurchases: Number, - ModSlotPurchases: Number, - FocusLens: String, - Expiry: Date, //TODO: needs conversion - Polarity: [polaritySchema], - Configs: [ItemConfigSchema], - ModularParts: [String], - SkillTree: String, - UpgradeType: String, - UpgradeFingerprint: String, - OffensiveUpgrade: String, - DefensiveUpgrade: String, - UpgradesExpiry: Date, //TODO: needs conversion - ArchonCrystalUpgrades: [] -}); - const TypeXPItemSchema = new Schema( { ItemType: String, @@ -475,7 +392,7 @@ const completedJobChainsSchema = new Schema( { _id: false } ); -const seasonChallengeHistorySchema = new Schema( +const seasonChallengeHistorySchema = new Schema( { challenge: String, id: String @@ -696,31 +613,31 @@ const inventorySchema = new Schema( //Non Upgrade Mods Example:I have 999 item WeaponElectricityDamageMod (only "ItemCount"+"ItemType") RawUpgrades: [RawUpgrades], //Upgrade Mods\Riven\Arcane Example:"UpgradeFingerprint"+"ItemType"+"" - Upgrades: [upgrqadesSchema], + Upgrades: [upgradesSchema], //Warframe - Suits: [suitSchema], + Suits: [EquipmentSchema], //Primary Weapon - LongGuns: [WeaponSchema], + LongGuns: [EquipmentSchema], //Secondary Weapon - Pistols: [WeaponSchema], + Pistols: [EquipmentSchema], //Melee Weapon - Melee: [WeaponSchema], + Melee: [EquipmentSchema], //Ability Weapon like Ultimate Mech\Excalibur\Ivara etc - SpecialItems: [GenericItemSchema], + SpecialItems: [EquipmentSchema], //The Mandachord(Octavia) is a step sequencer StepSequencers: [StepSequencersSchema], //Sentinel(like Helios or modular) - Sentinels: [Schema.Types.Mixed], + Sentinels: [EquipmentSchema], //Any /Sentinels/SentinelWeapons/ (like warframe weapon) - SentinelWeapons: [Schema.Types.Mixed], + SentinelWeapons: [EquipmentSchema], //Modular Pets - MoaPets: [Schema.Types.Mixed], + MoaPets: [EquipmentSchema], KubrowPetEggs: [Schema.Types.Mixed], //Like PowerSuit Cat\Kubrow or etc Pets - KubrowPets: [Schema.Types.Mixed], + KubrowPets: [EquipmentSchema], //Prints Cat(3 Prints)\Kubrow(2 Prints) Pets KubrowPetPrints: [Schema.Types.Mixed], @@ -735,27 +652,27 @@ const inventorySchema = new Schema( //to use add SummonItem to Consumables+EquippedGear //Archwing need Suits+Melee+Guns - SpaceSuits: [GenericItemSchema], - SpaceMelee: [GenericItemSchema], - SpaceGuns: [Schema.Types.Mixed], + SpaceSuits: [EquipmentSchema], + SpaceMelee: [EquipmentSchema], + SpaceGuns: [EquipmentSchema], ArchwingEnabled: Boolean, //Mech need Suits+SpaceGuns+SpecialItem - MechSuits: [suitSchema], + MechSuits: [EquipmentSchema], ///Restoratives/HoverboardSummon (like Suit) - Hoverboards: [Schema.Types.Mixed], + Hoverboards: [EquipmentSchema], //Use Operator\Drifter UseAdultOperatorLoadout: Boolean, //Operator\Drifter Weapon - OperatorAmps: [Schema.Types.Mixed], + OperatorAmps: [EquipmentSchema], //Operator OperatorLoadOuts: [operatorConfigSchema], //Drifter AdultOperatorLoadOuts: [operatorConfigSchema], - DrifterMelee: [GenericItemSchema], - DrifterGuns: [GenericItemSchema], + DrifterMelee: [EquipmentSchema], + DrifterGuns: [EquipmentSchema], //ErsatzHorsePowerSuit - Horses: [GenericItemSchema], + Horses: [EquipmentSchema], //LandingCraft like Liset Ships: { type: [Schema.Types.ObjectId], ref: "Ships" }, @@ -763,7 +680,7 @@ const inventorySchema = new Schema( ShipDecorations: [typeCountSchema], //RailJack Setting(Mods,Skin,Weapon,etc) - CrewShipHarnesses: [Schema.Types.Mixed], + CrewShipHarnesses: [EquipmentSchema], //Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components) CrewShipRawSalvage: [Schema.Types.Mixed], @@ -790,7 +707,7 @@ const inventorySchema = new Schema( FlavourItems: [FlavourItemSchema], //Lunaro Weapon - Scoops: [GenericItemSchema], + Scoops: [EquipmentSchema], //Mastery Rank*(Need item XPInfo to rank up) PlayerLevel: Number, @@ -907,7 +824,7 @@ const inventorySchema = new Schema( InvasionChainProgress: [Schema.Types.Mixed], //https://warframe.fandom.com/wiki/Parazon - DataKnives: [GenericItemSchema], + DataKnives: [EquipmentSchema], //CorpusLich or GrineerLich NemesisAbandonedRewards: [String], @@ -1000,24 +917,24 @@ inventorySchema.set("toJSON", { // type overwrites for subdocuments/subdocument arrays type InventoryDocumentProps = { - Suits: Types.DocumentArray; - LongGuns: Types.DocumentArray; - Pistols: Types.DocumentArray; - Melee: Types.DocumentArray; + Suits: Types.DocumentArray; + LongGuns: Types.DocumentArray; + Pistols: Types.DocumentArray; + Melee: Types.DocumentArray; FlavourItems: Types.DocumentArray; RawUpgrades: Types.DocumentArray; Upgrades: Types.DocumentArray; MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; OperatorLoadOuts: Types.DocumentArray; - SpecialItems: Types.DocumentArray; + SpecialItems: Types.DocumentArray; AdultOperatorLoadOuts: Types.DocumentArray; //TODO: this should still contain _id - MechSuits: Types.DocumentArray; - Scoops: Types.DocumentArray; - DataKnives: Types.DocumentArray; - DrifterMelee: Types.DocumentArray; - Sentinels: Types.DocumentArray; - Horses: Types.DocumentArray; + MechSuits: Types.DocumentArray; + Scoops: Types.DocumentArray; + DataKnives: Types.DocumentArray; + DrifterMelee: Types.DocumentArray; + Sentinels: Types.DocumentArray; + Horses: Types.DocumentArray; PendingRecipes: Types.DocumentArray; }; diff --git a/src/models/inventoryModels/loadoutModel.ts b/src/models/inventoryModels/loadoutModel.ts index 7bd2aaa1..a0cd68e1 100644 --- a/src/models/inventoryModels/loadoutModel.ts +++ b/src/models/inventoryModels/loadoutModel.ts @@ -1,5 +1,6 @@ import { IOid } from "@/src/types/commonTypes"; -import { ILoadoutConfigDatabase, ILoadoutDatabase, IEquipmentSelection } from "@/src/types/saveLoadoutTypes"; +import { IEquipmentSelection } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { ILoadoutConfigDatabase, ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; import { Model, Schema, Types, model } from "mongoose"; const oidSchema = new Schema( diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index e5f82b97..b06dcd14 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2,9 +2,7 @@ import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import { config } from "@/src/services/configService"; import { Types } from "mongoose"; -import { ISuitClient } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotNames } from "@/src/types/purchaseTypes"; -import { IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; import { IChallengeProgress, IConsumable, @@ -13,7 +11,7 @@ import { IMiscItem, IMission, IRawUpgrade, - ISeasonChallengeHistory, + ISeasonChallenge, ITypeCount, InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes"; @@ -27,6 +25,7 @@ import { import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal, getWeaponType, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; +import { IEquipmentClient } from "../types/inventoryTypes/commonInventoryTypes"; export const createInventory = async ( accountOwnerId: Types.ObjectId, @@ -237,7 +236,7 @@ export const addSentinel = async (sentinelName: string, accountId: string) => { return changedInventory.Sentinels[sentinelIndex - 1].toJSON(); }; -export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { +export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { const specialItems = getExalted(powersuitName); if (specialItems != false) { for await (const specialItem of specialItems) { @@ -386,7 +385,7 @@ export const addWeapon = async ( weaponType: WeaponTypeInternal, weaponName: string, accountId: string -): Promise => { +): Promise => { const inventory = await getInventory(accountId); let weaponIndex; @@ -418,7 +417,7 @@ export const addCustomization = async (customizatonName: string, accountId: stri const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, - gearArray: ISuitClient[] | IWeaponClient[] | undefined, + gearArray: IEquipmentClient[] | undefined, categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" ) => { const category = inventory[categoryName]; @@ -534,7 +533,7 @@ export const updateChallengeProgress = async (challenges: IUpdateChallengeProgre export const addSeasonalChallengeHistory = ( inventory: IInventoryDatabaseDocument, - itemsArray: ISeasonChallengeHistory[] | undefined + itemsArray: ISeasonChallenge[] | undefined ) => { const category = inventory.SeasonChallengeHistory; diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts deleted file mode 100644 index 8fe48081..00000000 --- a/src/types/inventoryTypes/SuitTypes.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { IOid } from "@/src/types/commonTypes"; -import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { Types } from "mongoose"; -import { IItemConfig } from "./commonInventoryTypes"; - -export interface ISuitClient extends Omit { - ItemId: IOid; -} - -export interface ISuitDatabase { - ItemType: string; - Configs: IItemConfig[]; - UpgradeVer?: number; - XP?: number; - InfestationDate?: Date; - Features?: number; - Polarity?: IPolarity[]; - Polarized?: number; - ModSlotPurchases?: number; - CustomizationSlotPurchases?: number; - FocusLens?: string; - UnlockLevel?: number; - _id: Types.ObjectId; - ItemId?: IOid; // only in response -} diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index b86cb719..8596c6e4 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -1,4 +1,4 @@ -import { IOid } from "@/src/types/commonTypes"; +import { IMongoDate, IOid } from "@/src/types/commonTypes"; import { Types } from "mongoose"; export interface IPolarity { @@ -38,15 +38,8 @@ export interface ISlotsBin { Slots: number; } -// ISigCol? IsIgCoL? ISIGCOL! -export interface Isigcol { - t0: number; - t1: number; - en: number; -} - -interface IItemConfigBase { - Skins: string[]; +export interface IItemConfig { + Skins?: string[]; pricol?: IColor; attcol?: IColor; sigcol?: IColor; @@ -56,12 +49,7 @@ interface IItemConfigBase { cloth?: IColor; Upgrades?: string[]; Name?: string; - ugly?: boolean; -} - -//TODO: Proper names for the different config types, this should be something like -//IItemConfigPlayable -export interface IItemConfig extends IItemConfigBase { + OperatorAmp?: IOid; Songs?: ISong[]; AbilityOverride?: IAbilityOverride; PvpUpgrades?: string[]; @@ -74,14 +62,47 @@ export interface ISong { p?: string; s: string; } - -//TODO: Consider renaming it to loadout instead of config -export interface IOperatorConfigDatabase extends IItemConfigBase { +export interface IOperatorConfigDatabase extends IItemConfig { _id: Types.ObjectId; - AbilityOverride?: IAbilityOverride; // not present in adultOperator - OperatorAmp?: IOid; // not present in adultOperator } export interface IOperatorConfigClient extends Omit { ItemId: IOid; } + +export interface IEquipmentSelection { + ItemId: IOid; + mod?: number; + cus?: number; + ItemType?: string; + hide?: boolean; +} + +export interface IEquipmentClient extends Omit { + ItemId: IOid; +} + +export interface IEquipmentDatabase { + ItemType: string; + ItemName?: string; + Configs: IItemConfig[]; + UpgradeVer?: number; + XP?: number; + Features?: number; + Polarized?: number; + Polarity?: IPolarity[]; + FocusLens?: string; + ModSlotPurchases?: number; + CustomizationSlotPurchases?: number; + UpgradeType?: string; + UpgradeFingerprint?: string; + InfestationDate?: IMongoDate; + InfestationDays?: number; + InfestationType?: string; + ModularParts?: string[]; + UnlockLevel?: number; + Expiry?: IMongoDate; + SkillTree?: string; + ArchonCrystalUpgrades?: []; //TODO + _id: Types.ObjectId; +} diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 3bc903cd..4b4f589a 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -2,15 +2,13 @@ import { Document, Types } from "mongoose"; import { IOid, IMongoDate } from "../commonTypes"; import { - IAbilityOverride, IColor, FocusSchool, - IPolarity, IItemConfig, - IOperatorConfigClient + IOperatorConfigClient, + IEquipmentSelection, + IEquipmentDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; -import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; //Document extends will be deleted soon. TODO: delete and migrate uses to ... export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} @@ -61,48 +59,14 @@ export interface ITypeCount { ItemCount: number; } -export interface IGenericItem2 { - ItemType: string; - ItemName: string; - ItemId: IOid; - XP: number; - UpgradeVer: number; - Features: number; - Polarized: number; - CustomizationSlotPurchases: number; - ModSlotPurchases: number; - FocusLens: string; - Expiry: IMongoDate; - Polarity: IPolarity[]; - Configs: IItemConfig[]; - ModularParts: string[]; - SkillTree: string; - UpgradeType: string; - UpgradeFingerprint: string; - OffensiveUpgrade: string; - DefensiveUpgrade: string; - UpgradesExpiry: IMongoDate; - ArchonCrystalUpgrades: []; -} - -export interface IGenericItem { - ItemType: string; - XP?: number; - Configs: IItemConfig[]; - UpgradeVer: number; - ItemId: IOid; - Features?: number; - Polarity?: IPolarity[]; - Polarized?: number; - ModSlotPurchases?: number; - CustomizationSlotPurchases?: number; -} - -export interface IGenericItemDatabase extends Omit { - _id: Types.ObjectId; -} - -export type TGenericItemKey = "Suits" | "LongGuns" | "Pistols" | "Melee"; +export type IEquipmentKey = + | "Suits" + | "LongGuns" + | "Pistols" + | "Melee" + | "SpecialItems" + | "Sentinels" + | "SentinelWeapons"; export interface IDuviriInfo { Seed: number; @@ -119,12 +83,12 @@ export interface IPendingRecipeResponse extends Omit; Missions: IMission[]; - RandomUpgradesIdentified: number; + RandomUpgradesIdentified?: number; LastRegionPlayed: string; XPInfo: ITypeXPItem[]; Recipes: ITypeCount[]; @@ -198,14 +162,14 @@ export interface IInventoryResponse { Affiliations: IAffiliation[]; QualifyingInvasions: any[]; FactionScores: number[]; - SpaceSuits: IGenericItem[]; - SpaceMelee: IGenericItem[]; - SpaceGuns: ISpaceGun[]; + SpaceSuits: IEquipmentDatabase[]; + SpaceMelee: IEquipmentDatabase[]; + SpaceGuns: IEquipmentDatabase[]; ArchwingEnabled: boolean; PendingSpectreLoadouts: any[]; SpectreLoadouts: ISpectreLoadout[]; - SentinelWeapons: IWeaponDatabase[]; - Sentinels: IWeaponDatabase[]; + SentinelWeapons: IEquipmentDatabase[]; + Sentinels: IEquipmentDatabase[]; EmailItems: ITypeXPItem[]; CompletedSyndicates: string[]; FocusXP: IFocusXP; @@ -216,7 +180,7 @@ export interface IInventoryResponse { Drones: IDrone[]; StepSequencers: IStepSequencer[]; ActiveAvatarImageType: string; - KubrowPets: IKubrowPet[]; + KubrowPets: IEquipmentDatabase[]; ShipDecorations: IConsumable[]; DailyAffiliationCetus: number; DailyAffiliationQuills: number; @@ -224,14 +188,14 @@ export interface IInventoryResponse { CompletedJobs: ICompletedJob[]; FocusAbility: string; FocusUpgrades: IFocusUpgrade[]; - OperatorAmps: IOperatorAmp[]; - HasContributedToDojo: boolean; + OperatorAmps: IEquipmentDatabase[]; + HasContributedToDojo?: boolean; HWIDProtectEnabled: boolean; KubrowPetPrints: IKubrowPetPrint[]; AlignmentReplay: IAlignment; PersonalGoalProgress: IPersonalGoalProgress[]; DailyAffiliationSolaris: number; - SpecialItems: IGenericItem[]; + SpecialItems: IEquipmentDatabase[]; ThemeStyle: string; ThemeBackground: string; ThemeSounds: string; @@ -242,17 +206,17 @@ export interface IInventoryResponse { DailyAffiliationVentkids: number; DailyAffiliationVox: number; RecentVendorPurchases: Array; - Hoverboards: IHoverboard[]; + Hoverboards: IEquipmentDatabase[]; NodeIntrosCompleted: string[]; GuildId?: IOid; CompletedJobChains: ICompletedJobChain[]; - SeasonChallengeHistory: ISeasonChallengeHistory[]; - MoaPets: IMoaPet[]; + SeasonChallengeHistory: ISeasonChallenge[]; + MoaPets: IEquipmentDatabase[]; EquippedInstrument: string; InvasionChainProgress: IInvasionChainProgress[]; - DataKnives: IGenericItem[]; + DataKnives: IEquipmentDatabase[]; NemesisHistory: INemesisHistory[]; - LastNemesisAllySpawnTime: IMongoDate; + LastNemesisAllySpawnTime?: IMongoDate; Settings: ISettings; PersonalTechProjects: IPersonalTechProject[]; CrewShips: ICrewShip[]; @@ -262,15 +226,15 @@ export interface IInventoryResponse { CrewShipWeapons: ICrewShipWeapon[]; CrewShipSalvagedWeapons: ICrewShipWeapon[]; CrewShipWeaponSkins: ICrewShipSalvagedWeaponSkin[]; - TradeBannedUntil: IMongoDate; + TradeBannedUntil?: IMongoDate; PlayedParkourTutorial: boolean; SubscribedToEmailsPersonalized: number; DailyAffiliationEntrati: number; DailyAffiliationNecraloid: number; - MechSuits: ISuitDatabase[]; + MechSuits: IEquipmentDatabase[]; InfestedFoundry: IInfestedFoundry; BlessingCooldown: IMongoDate; - CrewShipHarnesses: ICrewShipHarness[]; + CrewShipHarnesses: IEquipmentDatabase[]; CrewShipRawSalvage: IConsumable[]; CrewMembers: ICrewMember[]; AdultOperatorLoadOuts: IOperatorConfigClient[]; @@ -297,16 +261,6 @@ export interface IInventoryResponse { DeathSquadable: boolean; } -export interface IAdultOperatorLoadOut { - Skins: string[]; - attcol: IColor; - eyecol: IColor; - facial: IColor; - pricol: IColor; - Upgrades?: string[]; - ItemId: IOid; -} - export interface IAffiliation { Initiated?: boolean; Standing: number; @@ -384,14 +338,11 @@ export interface ICrewMember { WeaponId: IOid; XP: number; PowersuitType: string; - Configs: ICrewMemberConfig[]; + Configs: IItemConfig[]; SecondInCommand: boolean; ItemId: IOid; } -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ICrewMemberConfig {} - export interface ISkillEfficiency { PILOTING: ICombat; GUNNERY: ICombat; @@ -404,21 +355,6 @@ export interface ICombat { Assigned: number; } -export interface ICrewShipHarness { - ItemType: string; - Configs: ICrewShipHarnessConfig[]; - Features: number; - UpgradeVer: number; - XP: number; - Polarity: IPolarity[]; - Polarized: number; - ItemId: IOid; -} - -export interface ICrewShipHarnessConfig { - Upgrades?: string[]; -} - export enum InventorySlot { SUITS = "SuitBin", WEAPONS = "WeaponBin", @@ -443,25 +379,21 @@ export interface ICrewShipWeapon { ItemType: string; UpgradeType?: string; UpgradeFingerprint?: string; - Configs?: ICrewShipHarnessConfig[]; + Configs?: IItemConfig[]; UpgradeVer?: number; ItemId: IOid; } export interface ICrewShip { ItemType: string; - Configs: ICrewShipConfig[]; + Configs: IItemConfig[]; Weapon: ICrewshipWeapon; Customization: ICustomization; ItemName: string; RailjackImage: IFlavourItem; CrewMembers: ICrewMembers; ItemId: IOid; -} - -export interface ICrewShipConfig { - Skins?: string[]; - pricol?: IColor; + _id: Types.ObjectId; } export interface ICrewMembers { @@ -484,16 +416,6 @@ export interface IShipExterior { ShipAttachments?: IShipAttachments; } -//TODO: check whether it makes sense to use this specifity of color. -export interface IShipExteriorColors { - t0: number; - t1: number; - t2: number; - t3: number; - m0: number; - en: number; -} - export interface IShipAttachments { HOOD_ORNAMENT: string; //TODO: Others are probably possible } @@ -512,22 +434,12 @@ export interface ICrewshipWeapon { PORT_GUNS: IPortGuns; } -export interface IPilot { - PRIMARY_A: IL; - SECONDARY_A: IL; -} - -// L? Bozo. -export interface IL { - ItemId?: IOid; - mod?: number; - cus?: number; - ItemType?: string; - hide?: boolean; -} - export interface IPortGuns { - PRIMARY_A: IL; + PRIMARY_A: IEquipmentSelection; +} + +export interface IPilot extends IPortGuns { + SECONDARY_A: IEquipmentSelection; } export interface IDiscoveredMarker { @@ -569,38 +481,6 @@ export interface IFusionTreasure { Sockets: number; } -export interface IHoverboard { - ItemType: string; - Configs: IHoverboardConfig[]; - ModularParts: string[]; - ItemName?: string; - Polarity?: IPolarity[]; - UpgradeVer: number; - XP: number; - Features: number; - ItemId: IOid; -} - -export interface IHoverboardConfig { - Upgrades?: string[]; - Skins?: IPurpleSkin[]; - pricol?: IColor; - sigcol?: ISigcol; - attcol?: IColor; -} - -export enum IPurpleSkin { - Empty = "", - The5Be4Af71A38E4A9306040E15 = "5be4af71a38e4a9306040e15", - The5C930Ac3A38E4A24Bc3Ad5De = "5c930ac3a38e4a24bc3ad5de", - The5C9C6F9857904A7A3B25656B = "5c9c6f9857904a7a3b25656b", - The5Dd8A8E3A38E4A321A45E6A0 = "5dd8a8e3a38e4a321a45e6a0" -} - -export interface ISigcol { - t3: number; -} - export interface IInfestedFoundry { Name: string; Resources: ITypeCount[]; @@ -653,44 +533,13 @@ export interface ITraits { Personality: string; BodyType: string; Head?: string; - Tail?: Tail; -} - -export enum Tail { - Empty = "", - LotusTypesGameCatbrowPetTailsCatbrowTailA = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailA", - LotusTypesGameCatbrowPetTailsCatbrowTailB = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailB", - LotusTypesGameCatbrowPetTailsCatbrowTailC = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailC", - LotusTypesGameCatbrowPetTailsCatbrowTailD = "/Lotus/Types/Game/CatbrowPet/Tails/CatbrowTailD" + Tail?: string; } export enum KubrowPetPrintItemType { LotusTypesGameKubrowPetImprintedTraitPrint = "/Lotus/Types/Game/KubrowPet/ImprintedTraitPrint" } -export interface IKubrowPet { - ItemType: string; - Configs: IKubrowPetConfig[]; - UpgradeVer: number; - Details: IDetails; - XP?: number; - Polarized?: number; - Polarity?: IPolarity[]; - Features?: number; - InfestationDate?: IMongoDate; - InfestationDays?: number; - InfestationType?: string; - ItemId: IOid; - ModularParts?: string[]; -} - -export interface IKubrowPetConfig { - Skins?: string[]; - pricol?: IColor; - attcol?: IColor; - Upgrades?: string[]; -} - export interface IDetails { Name: string; IsPuppy: boolean; @@ -733,74 +582,32 @@ export interface ILibraryPersonalProgress { //this needs to be checked against ILoadoutDatabase export interface ILoadOutPresets { - NORMAL: INormal[]; - NORMAL_PVP: IArchwing[]; - LUNARO: ILunaro[]; - ARCHWING: IArchwing[]; - SENTINEL: IArchwing[]; - OPERATOR: IArchwing[]; - GEAR: IGear[]; - KDRIVE: IKdrive[]; - DATAKNIFE: IArchwing[]; - MECH: IMech[]; - OPERATOR_ADULT: IArchwing[]; + NORMAL: ILoadoutConfigClient[]; + NORMAL_PVP: ILoadoutConfigClient[]; + LUNARO: ILoadoutConfigClient[]; + ARCHWING: ILoadoutConfigClient[]; + SENTINEL: ILoadoutConfigClient[]; + OPERATOR: ILoadoutConfigClient[]; + GEAR: ILoadoutConfigClient[]; + KDRIVE: ILoadoutConfigClient[]; + DATAKNIFE: ILoadoutConfigClient[]; + MECH: ILoadoutConfigClient[]; + OPERATOR_ADULT: ILoadoutConfigClient[]; } -export interface IArchwing { - PresetIcon: string; - Favorite: boolean; - n?: string; - s: IL; - l?: IL; - m?: IL; - ItemId: IOid; - p?: IL; -} - -export interface IGear { - n: string; - s: IL; - p: IL; - l: IL; - m: IL; - ItemId: IOid; -} - -export interface IKdrive { - PresetIcon: string; - Favorite: boolean; - s: IL; - ItemId: IOid; -} - -export interface ILunaro { - n: string; - s: IL; - m: IL; - ItemId: IOid; -} - -export interface IMech { - PresetIcon: string; - Favorite: boolean; - s: IL; - h: IL; - a: IL; - ItemId: IOid; -} - -export interface INormal { - FocusSchool: FocusSchool; - PresetIcon: string; - Favorite: boolean; - n: string; - s: IL; - p: IL; - l: IL; - m: IL; - h: IL; - a?: IL; +export interface ILoadoutConfigClient { + FocusSchool?: FocusSchool; + PresetIcon?: string; + Favorite?: boolean; + n?: string; // Loadout name + s?: IEquipmentSelection; // Suit + p?: IEquipmentSelection; + l?: IEquipmentSelection; // Primary weapon + m?: IEquipmentSelection; // Melee weapon + h?: IEquipmentSelection; // Gravimag weapon + a?: IEquipmentSelection; ItemId: IOid; + Remove?: boolean; // when client wants to remove a config, it only includes ItemId & Remove. } export enum UpgradeType { @@ -813,16 +620,7 @@ export interface ILoreFragmentScan { ItemType: string; } -export interface ILotusCustomization { - Upgrades: any[]; - PvpUpgrades: any[]; - Skins: string[]; - pricol: IColor; - attcol: any[]; - sigcol: any[]; - eyecol: any[]; - facial: any[]; - Songs: any[]; +export interface ILotusCustomization extends IItemConfig { Persona: string; } @@ -833,18 +631,6 @@ export interface IMission { RewardsCooldownTime?: IMongoDate; } -export interface IMoaPet { - ItemType: string; - Configs: IKubrowPetConfig[]; - UpgradeVer: number; - ModularParts: string[]; - XP?: number; - Features?: number; - ItemName: string; - Polarity?: IPolarity[]; - ItemId: IOid; -} - export interface INemesisHistory { fp: number; manifest: Manifest; @@ -879,30 +665,6 @@ export enum Manifest { LotusTypesGameNemesisKuvaLichKuvaLichManifestVersionTwo = "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionTwo" } -export interface IOperatorAmp { - ItemType: string; - Configs: IKubrowPetConfig[]; - ModularParts?: string[]; - XP?: number; - UpgradeVer?: number; - ItemName?: string; - Features?: number; - ItemId: IOid; -} - -export interface IOperatorLoadOut { - Skins: string[]; - pricol?: IColor; - attcol?: IColor; - eyecol: IColor; - facial?: IColor; - sigcol?: IOperatorLoadOutSigcol; - OperatorAmp?: IOid; - Upgrades?: string[]; - AbilityOverride: IAbilityOverride; - ItemId: IOid; -} - export interface IPendingCoupon { Expiry: IMongoDate; Discount: number; @@ -1031,12 +793,7 @@ export interface IRawUpgrade { LastAdded?: IOid; } -export interface ISeasonChallengeHistory { - challenge: string; - id: string; -} - -export interface ISeasonChallengeCompletions { +export interface ISeasonChallenge { challenge: string; id: string; } @@ -1060,30 +817,6 @@ export interface IShipInventory { ItemId: IOid; } -export interface ISpaceGun { - ItemType: string; - Configs: ISpaceGunConfig[]; - XP?: number; - UpgradeVer?: number; - ItemId: IOid; - Features?: number; - Polarized?: number; - Polarity?: IPolarity[]; - UpgradeType?: UpgradeType; - UpgradeFingerprint?: string; - ItemName?: string; -} - -export interface ISpaceGunConfig { - Skins?: string[]; - pricol?: IColor; - Upgrades?: string[]; -} - -export interface IPurpleCol { - en: number; -} - export interface ISpectreLoadout { LongGuns: string; Melee: string; diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts deleted file mode 100644 index 46d11d01..00000000 --- a/src/types/inventoryTypes/weaponTypes.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { IOid } from "@/src/types/commonTypes"; -import { IItemConfig } from "./commonInventoryTypes"; -import { IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { Types } from "mongoose"; - -export interface IWeaponClient extends Omit { - ItemId: IOid; -} - -export interface IWeaponDatabase { - ItemType: string; - Configs: IItemConfig[]; - UpgradeVer?: number; - XP?: number; - Features?: number; - Polarized?: number; - Polarity?: IPolarity[]; - FocusLens?: string; - ModSlotPurchases?: number; - CustomizationSlotPurchases?: number; - UpgradeType?: string; - UpgradeFingerprint?: string; - ItemName?: string; - ModularParts?: string[]; - UnlockLevel?: number; - _id: Types.ObjectId; -} - -export interface IOperatorLoadOutSigcol { - t0?: number; - t1?: number; - en?: number; -} diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index 73ee085c..db143470 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -1,6 +1,5 @@ -import { ISuitClient } from "@/src/types/inventoryTypes/SuitTypes"; import { IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; -import { IWeaponClient } from "@/src/types/inventoryTypes/weaponTypes"; +import { IEquipmentClient } from "./inventoryTypes/commonInventoryTypes"; export interface IPurchaseRequest { PurchaseParams: IPurchaseParams; @@ -23,11 +22,11 @@ export interface IPurchaseResponse { SuitBin?: IBinChanges; WeaponBin?: IBinChanges; MechBin?: IBinChanges; - MechSuits?: ISuitClient[]; - Suits?: ISuitClient[]; - LongGuns?: IWeaponClient[]; - Pistols?: IWeaponClient[]; - Melee?: IWeaponClient[]; + MechSuits?: IEquipmentClient[]; + Suits?: IEquipmentClient[]; + LongGuns?: IEquipmentClient[]; + Pistols?: IEquipmentClient[]; + Melee?: IEquipmentClient[]; PremiumCredits?: number; PremiumCreditsFree?: number; RegularCredits?: number; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 78ea111f..6dc35b76 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -1,5 +1,5 @@ import { IOid } from "./commonTypes"; -import { IPolarity, FocusSchool } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IPolarity, FocusSchool, IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IBooster, IChallengeProgress, @@ -8,11 +8,8 @@ import { IMiscItem, IMission, IRawUpgrade, - ISeasonChallengeCompletions, - ISeasonChallengeHistory + ISeasonChallenge } from "./inventoryTypes/inventoryTypes"; -import { IWeaponClient } from "./inventoryTypes/weaponTypes"; -import { ISuitClient } from "./inventoryTypes/SuitTypes"; export interface IArtifactsRequest { Upgrade: ICrewShipSalvagedWeaponSkin; @@ -35,18 +32,18 @@ export interface IAffiliationChange { export interface IUpdateChallengeProgressRequest { ChallengeProgress: IChallengeProgress[]; - SeasonChallengeHistory: ISeasonChallengeHistory[]; - SeasonChallengeCompletions: ISeasonChallengeCompletions[]; + SeasonChallengeHistory: ISeasonChallenge[]; + SeasonChallengeCompletions: ISeasonChallenge[]; } export interface IMissionInventoryUpdateRequest { rewardsMultiplier?: number; ActiveBoosters?: IBooster[]; AffiliationChanges?: IAffiliationChange[]; - LongGuns?: IWeaponClient[]; - Pistols?: IWeaponClient[]; - Suits?: ISuitClient[]; - Melee?: IWeaponClient[]; + LongGuns?: IEquipmentClient[]; + Pistols?: IEquipmentClient[]; + Suits?: IEquipmentClient[]; + Melee?: IEquipmentClient[]; RawUpgrades?: IRawUpgrade[]; MiscItems?: IMiscItem[]; Consumables?: IConsumable[]; diff --git a/src/types/saveLoadoutTypes.ts b/src/types/saveLoadoutTypes.ts index 09577594..4f434eef 100644 --- a/src/types/saveLoadoutTypes.ts +++ b/src/types/saveLoadoutTypes.ts @@ -1,6 +1,7 @@ import { IOid } from "@/src/types/commonTypes"; import { IItemConfig, IOperatorConfigClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Types } from "mongoose"; +import { ILoadoutConfigClient } from "./inventoryTypes/inventoryTypes"; export interface ISaveLoadoutRequest { LoadOuts: ILoadoutClient; @@ -72,23 +73,3 @@ export interface ILoadoutEntry { export interface ILoadoutConfigDatabase extends Omit { _id: Types.ObjectId; } - -// for request and response from and to client -export interface ILoadoutConfigClient { - ItemId: IOid; - Remove?: boolean; // when client wants to remove a config, it only includes ItemId & Remove. - n?: string; - PresetIcon?: string; - Favorite?: boolean; - s?: IEquipmentSelection; - p?: IEquipmentSelection; - l?: IEquipmentSelection; - m?: IEquipmentSelection; -} - -export interface IEquipmentSelection { - ItemId?: IOid; - mod?: number; - cus?: number; - hide?: boolean; -} -- 2.47.2 From 96fa616f3da697a8bfee6666248d97d601ae9140 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 16 Jun 2024 17:56:51 +0200 Subject: [PATCH 177/522] improve: save loadouts for all item types (#306) --- src/services/saveLoadoutService.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index c08a47b3..502a0e63 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -132,7 +132,19 @@ export const handleInventoryItemConfigChange = async ( case "DataKnives": case "DrifterMelee": case "Sentinels": - case "Horses": { + case "Horses": + case "OperatorAmps": + case "SentinelWeapons": + case "KubrowPets": + case "SpaceSuits": + case "SpaceGuns": + case "SpaceMelee": + case "SpecialItems": + case "MoaPets": + case "Hoverboards": + case "MechSuits": + case "CrewShipHarnesses": + case "CrewShips": { logger.debug(`general Item config saved of type ${equipmentName}`, { config: equipment }); const itemEntries = equipment as IItemEntry; @@ -162,18 +174,6 @@ export const handleInventoryItemConfigChange = async ( default: { logger.error(`category not implemented: ${equipmentName}`, { config: equipment }); } - //case "OperatorAmps": - // case "SentinelWeapons": - // case "KubrowPets": - // case "SpaceSuits": - // case "SpaceGuns": - // case "SpaceMelee": - // case "SpecialItems": - // case "MoaPets": - // case "Hoverboards": - // case "MechSuits": - // case "CrewShipHarnesses": - // case "CrewShips": //case "KahlLoadOuts": not sure yet how to handle kahl: it is not sent in inventory } } -- 2.47.2 From b3794821c479b0f00ce2067e098f0a3bcb8712b2 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 16 Jun 2024 21:49:41 +0200 Subject: [PATCH 178/522] feat: custom item names (#307) --- src/controllers/api/nameWeaponController.ts | 27 ++++++ src/controllers/api/upgradesController.ts | 16 ++-- src/routes/api.ts | 2 + src/types/inventoryTypes/inventoryTypes.ts | 2 +- static/webui/script.js | 96 ++++++++++++++------- static/webui/style.css | 7 ++ 6 files changed, 109 insertions(+), 41 deletions(-) create mode 100644 src/controllers/api/nameWeaponController.ts diff --git a/src/controllers/api/nameWeaponController.ts b/src/controllers/api/nameWeaponController.ts new file mode 100644 index 00000000..7543cbc4 --- /dev/null +++ b/src/controllers/api/nameWeaponController.ts @@ -0,0 +1,27 @@ +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory, updateCurrency } from "@/src/services/inventoryService"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; + +interface INameWeaponRequest { + ItemName: string; +} + +export const nameWeaponController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + const body = getJSONfromString(req.body.toString()) as INameWeaponRequest; + const item = inventory[req.query.Category as string as TEquipmentKey].find( + item => item._id.toString() == (req.query.ItemId as string) + )!; + if (body.ItemName != "") { + item.ItemName = body.ItemName; + } else { + item.ItemName = undefined; + } + await inventory.save(); + res.json({ + InventoryChanges: await updateCurrency("webui" in req.query ? 0 : 15, true, accountId) + }); +}; diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 88c01dc7..25b548e6 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; import { FocusSchool, IEquipmentDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { IMiscItem, IEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IMiscItem, TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; @@ -28,7 +28,7 @@ export const upgradesController: RequestHandler = async (req, res) => { switch (operation.UpgradeRequirement) { case "/Lotus/Types/Items/MiscItems/OrokinReactor": case "/Lotus/Types/Items/MiscItems/OrokinCatalyst": - for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 1; @@ -38,7 +38,7 @@ export const upgradesController: RequestHandler = async (req, res) => { break; case "/Lotus/Types/Items/MiscItems/UtilityUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker": - for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 2; @@ -49,7 +49,7 @@ export const upgradesController: RequestHandler = async (req, res) => { case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker": - for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= 32; @@ -61,7 +61,7 @@ export const upgradesController: RequestHandler = async (req, res) => { case "/Lotus/Types/Items/MiscItems/FormaUmbra": case "/Lotus/Types/Items/MiscItems/FormaAura": case "/Lotus/Types/Items/MiscItems/FormaStance": - for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.XP = 0; setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue); @@ -72,7 +72,7 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker": - for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.ModSlotPurchases ??= 0; item.ModSlotPurchases += 1; @@ -87,7 +87,7 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": - for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.CustomizationSlotPurchases ??= 0; item.CustomizationSlotPurchases += 1; @@ -103,7 +103,7 @@ export const upgradesController: RequestHandler = async (req, res) => { break; case "": console.assert(operation.OperationType == "UOT_SWAP_POLARITY"); - for (const item of inventory[payload.ItemCategory as IEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { for (let i = 0; i != operation.PolarityRemap.length; ++i) { if (operation.PolarityRemap[i].Slot != i) { diff --git a/src/routes/api.ts b/src/routes/api.ts index 2ed9bdcb..8a059bfe 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -55,6 +55,7 @@ import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoContro import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController"; +import { nameWeaponController } from "@/src/controllers/api/nameWeaponController"; const apiRouter = express.Router(); @@ -120,5 +121,6 @@ apiRouter.post("/upgrades.php", upgradesController); apiRouter.post("/guildTech.php", guildTechController); apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); +apiRouter.post("/nameWeapon.php", nameWeaponController); export { apiRouter }; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 4b4f589a..ec492353 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -59,7 +59,7 @@ export interface ITypeCount { ItemCount: number; } -export type IEquipmentKey = +export type TEquipmentKey = | "Suits" | "LongGuns" | "Pistols" diff --git a/static/webui/script.js b/static/webui/script.js index 0475a730..6a9d525d 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -132,6 +132,9 @@ function updateInventory() { { const td = document.createElement("td"); td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; + if (item.ItemName) { + td.textContent = item.ItemName + " (" + td.textContent + ")"; + } tr.appendChild(td); } { @@ -144,12 +147,21 @@ function updateInventory() { event.preventDefault(); addGearExp("Suits", item.ItemId.$oid, 1_600_000 - item.XP); }; - a.textContent = "Make Rank 30"; + a.title = "Make Rank 30"; + a.innerHTML = ``; + td.appendChild(a); + } + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function (event) { + event.preventDefault(); + const name = prompt("Enter new custom name:"); + renameGear("Suits", item.ItemId.$oid, name); + }; + a.title = "Rename"; + a.innerHTML = ``; td.appendChild(a); - - const span = document.createElement("span"); - span.innerHTML = " · "; - td.appendChild(span); } { const a = document.createElement("a"); @@ -158,7 +170,8 @@ function updateInventory() { event.preventDefault(); disposeOfGear("Suits", item.ItemId.$oid); }; - a.textContent = "Remove"; + a.title = "Remove"; + a.innerHTML = ``; td.appendChild(a); } tr.appendChild(td); @@ -173,6 +186,9 @@ function updateInventory() { { const td = document.createElement("td"); td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; + if (item.ItemName) { + td.textContent = item.ItemName + " (" + td.textContent + ")"; + } tr.appendChild(td); } { @@ -185,12 +201,21 @@ function updateInventory() { event.preventDefault(); addGearExp(category, item.ItemId.$oid, 800_000 - item.XP); }; - a.textContent = "Make Rank 30"; + a.title = "Make Rank 30"; + a.innerHTML = ``; + td.appendChild(a); + } + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function (event) { + event.preventDefault(); + const name = prompt("Enter new custom name:"); + renameGear(category, item.ItemId.$oid, name); + }; + a.title = "Rename"; + a.innerHTML = ``; td.appendChild(a); - - const span = document.createElement("span"); - span.innerHTML = " · "; - td.appendChild(span); } { const a = document.createElement("a"); @@ -199,7 +224,8 @@ function updateInventory() { event.preventDefault(); disposeOfGear(category, item.ItemId.$oid); }; - a.textContent = "Remove"; + a.title = "Remove"; + a.innerHTML = ``; td.appendChild(a); } tr.appendChild(td); @@ -241,14 +267,10 @@ function updateInventory() { }) ); a.target = "_blank"; - a.textContent = "View Stats"; + a.title = "View Stats"; + a.innerHTML = ``; td.appendChild(a); } - { - const span = document.createElement("span"); - span.innerHTML = " · "; - td.appendChild(span); - } { const a = document.createElement("a"); a.href = "#"; @@ -256,7 +278,8 @@ function updateInventory() { event.preventDefault(); disposeOfGear("Upgrades", item.ItemId.$oid); }; - a.textContent = "Remove"; + a.title = "Remove"; + a.innerHTML = ``; td.appendChild(a); } tr.appendChild(td); @@ -282,12 +305,9 @@ function updateInventory() { event.preventDefault(); setFingerprint(item.ItemType, item.ItemId, { lvl: maxRank }); }; - a.textContent = "Max Rank"; + a.title = "Max Rank"; + a.innerHTML = ``; td.appendChild(a); - - const span = document.createElement("span"); - span.innerHTML = " · "; - td.appendChild(span); } { const a = document.createElement("a"); @@ -296,7 +316,8 @@ function updateInventory() { event.preventDefault(); disposeOfGear("Upgrades", item.ItemId.$oid); }; - a.textContent = "Remove"; + a.title = "Remove"; + a.innerHTML = ``; td.appendChild(a); } tr.appendChild(td); @@ -327,14 +348,10 @@ function updateInventory() { event.preventDefault(); setFingerprint(item.ItemType, item.LastAdded, { lvl: maxRank }); }; - a.textContent = "Max Rank"; + a.title = "Max Rank"; + a.innerHTML = ``; td.appendChild(a); } - { - const span = document.createElement("span"); - span.innerHTML = " · "; - td.appendChild(span); - } { const a = document.createElement("a"); a.href = "#"; @@ -342,7 +359,8 @@ function updateInventory() { event.preventDefault(); disposeOfItems("Upgrades", item.ItemType, item.ItemCount); }; - a.textContent = "Remove"; + a.title = "Remove"; + a.innerHTML = ``; td.appendChild(a); } tr.appendChild(td); @@ -432,6 +450,20 @@ function addGearExp(category, oid, xp) { }); } +function renameGear(category, oid, name) { + revalidateAuthz(() => { + $.post({ + url: "/api/nameWeapon.php?" + window.authz + "&Category=" + category + "&ItemId=" + oid + "&webui=1", + contentType: "text/plain", + data: JSON.stringify({ + ItemName: name + }) + }).done(function () { + updateInventory(); + }); + }); +} + function disposeOfGear(category, oid) { const data = { SellCurrency: "SC_RegularCredits", diff --git a/static/webui/style.css b/static/webui/style.css index 119d4fd2..341588cd 100644 --- a/static/webui/style.css +++ b/static/webui/style.css @@ -20,3 +20,10 @@ body:not(.logged-in) .nav-item.dropdown, body:not(.logged-in) #refresh-note { display: none; } + +td.text-end > a > svg { + fill: currentColor; + height: 1em; + margin-left: 0.5em; + margin-bottom: 4px; /* to centre the icon */ +} -- 2.47.2 From 1dc1a9aec82bb318f6e786ea6a5ed05faabcedf1 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 16 Jun 2024 23:02:44 +0200 Subject: [PATCH 179/522] fix: being bugged about "new quests available" despite completeAllQuests (#309) --- src/controllers/api/inventoryController.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 4aa44387..40b8ba7c 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -60,6 +60,14 @@ const inventoryController: RequestHandler = async (request: Request, response: R if (config.completeAllQuests) { for (const quest of inventoryResponse.QuestKeys) { quest.Completed = true; + quest.Progress = [ + { + c: 0, + i: false, + m: false, + b: [] + } + ]; } } -- 2.47.2 From 92e12a6d034d9b9e838123616644934fbfdecbd1 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 16 Jun 2024 23:57:30 +0200 Subject: [PATCH 180/522] improve: completeAllQuests (#311) --- src/controllers/api/inventoryController.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 40b8ba7c..6d12b5f7 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -69,6 +69,11 @@ const inventoryController: RequestHandler = async (request: Request, response: R } ]; } + + inventoryResponse.ArchwingEnabled = true; + + // Skip "Watch The Maker" + inventoryResponse.NodeIntrosCompleted.push("/Lotus/Levels/Cinematics/NewWarIntro/NewWarStageTwo.level"); } if (config.unlockAllShipDecorations) inventoryResponse.ShipDecorations = allShipDecorations; -- 2.47.2 From 77c2761a97b21471f8252cc26925b904cf2cdf43 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 17 Jun 2024 16:38:26 +0200 Subject: [PATCH 181/522] fix: not being able to purchase boosters (#316) --- package-lock.json | 8 +++---- package.json | 2 +- src/services/purchaseService.ts | 37 +++++++++++++++++++++------------ 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 113407a0..a6da5d4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.3", + "warframe-public-export-plus": "^0.2.4", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3909,9 +3909,9 @@ } }, "node_modules/warframe-public-export-plus": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.3.tgz", - "integrity": "sha512-Bl4gb3f1LIdGXLEOJg2XTIFYqrialdTIvVhDqDzVJIRfii0PKsy9jsr9vqM14tWz7oVpQMeCUyvisDkkXijTSg==" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.4.tgz", + "integrity": "sha512-Kh2+4p0qirTNUfHLr/nUJ1y/kH9mKnig28dwgpPaWt41ZfGzA+/qrpqI3DHYUvpd4wTCii/HItIy6tZtpTsy4Q==" }, "node_modules/warframe-riven-info": { "version": "0.1.0", diff --git a/package.json b/package.json index 9da3bcca..7ac70817 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.3", + "warframe-public-export-plus": "^0.2.4", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index b8a1c1ea..0f96055c 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -3,7 +3,7 @@ import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addItem, addBooster, updateCurrency, updateSlots } from "@/src/services/inventoryService"; import { IPurchaseRequest, SlotPurchase } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; -import { ExportBundles } from "warframe-public-export-plus"; +import { ExportBundles, TRarity } from "warframe-public-export-plus"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -26,7 +26,8 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI const purchaseResponse = await handleStoreItemAcquisition( purchaseRequest.PurchaseParams.StoreItem, accountId, - purchaseRequest.PurchaseParams.Quantity + purchaseRequest.PurchaseParams.Quantity, + "COMMON" ); if (!purchaseResponse) throw new Error("purchase response was undefined"); @@ -48,7 +49,8 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI const handleStoreItemAcquisition = async ( storeItemName: string, accountId: string, - quantity: number + quantity: number, + durability: TRarity ): Promise<{ InventoryChanges: object }> => { let purchaseResponse = { InventoryChanges: {} @@ -60,7 +62,12 @@ const handleStoreItemAcquisition = async ( for (const component of bundle.components) { purchaseResponse = { ...purchaseResponse, - ...(await handleStoreItemAcquisition(component.typeName, accountId, component.purchaseQuantity)) + ...(await handleStoreItemAcquisition( + component.typeName, + accountId, + component.purchaseQuantity, + component.durability + )) }; } } else { @@ -75,7 +82,7 @@ const handleStoreItemAcquisition = async ( purchaseResponse = await handleTypesPurchase(internalName, accountId, quantity); break; case "Boosters": - purchaseResponse = await handleBoostersPurchase(internalName, accountId); + purchaseResponse = await handleBoostersPurchase(internalName, accountId, durability); break; } } @@ -144,17 +151,21 @@ const boosterCollection = [ "/Lotus/Types/Boosters/CreditBooster" ]; -const handleBoostersPurchase = async (boosterStoreName: string, accountId: string) => { - const match = boosterStoreName.match(/(\d+)Day/); - if (!match) { +const boosterDuration: Record = { + COMMON: 3 * 86400, + UNCOMMON: 7 * 86400, + RARE: 30 * 86400, + LEGENDARY: 90 * 86400 +}; + +const handleBoostersPurchase = async (boosterStoreName: string, accountId: string, durability: TRarity) => { + const ItemType = boosterStoreName.replace("StoreItem", ""); + if (!boosterCollection.find(x => x == ItemType)) { + logger.error(`unknown booster type: ${ItemType}`); return { InventoryChanges: {} }; } - const extractedDigit = Number(match[1]); - const ItemType = boosterCollection.find(i => - boosterStoreName.includes(i.split("/").pop()!.replace("Booster", "")) - )!; - const ExpiryDate = extractedDigit * 86400; + const ExpiryDate = boosterDuration[durability]; await addBooster(ItemType, ExpiryDate, accountId); -- 2.47.2 From f15105a048e49b598dbd4f1a39bdee142c95b803 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 17 Jun 2024 16:38:43 +0200 Subject: [PATCH 182/522] fix: missionInventoryUpdateService's file name (#315) --- src/controllers/api/missionInventoryUpdateController.ts | 2 +- ...entoryUpdateService .ts => missionInventoryUpdateService.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/services/{missionInventoryUpdateService .ts => missionInventoryUpdateService.ts} (100%) diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 79b4632e..46acdd34 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; -import { combineRewardAndLootInventory, getRewards } from "@/src/services/missionInventoryUpdateService "; +import { combineRewardAndLootInventory, getRewards } from "@/src/services/missionInventoryUpdateService"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes"; diff --git a/src/services/missionInventoryUpdateService .ts b/src/services/missionInventoryUpdateService.ts similarity index 100% rename from src/services/missionInventoryUpdateService .ts rename to src/services/missionInventoryUpdateService.ts -- 2.47.2 From e8d7e17611a2abf31f8f707944a5926674be0641 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 17 Jun 2024 16:41:02 +0200 Subject: [PATCH 183/522] fix: not being able to purchase or craft some recipes (#314) --- .../api/claimCompletedRecipeController.ts | 5 ++- src/services/inventoryService.ts | 38 ++++++++++--------- src/services/itemDataService.ts | 21 +++++----- src/services/recipeService.ts | 11 ++---- 4 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts index 034b2e10..43abc899 100644 --- a/src/controllers/api/claimCompletedRecipeController.ts +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -48,6 +48,9 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) = res.json({}); } else { logger.debug("Claiming Recipe", { buildable, pendingRecipe }); + if (buildable.consumeOnUse) { + // TODO: Remove one instance of this recipe, and include that in InventoryChanges. + } let currencyChanges = {}; if (req.query.rush && buildable.skipBuildTimePrice) { currencyChanges = await updateCurrency(buildable.skipBuildTimePrice, true, accountId); @@ -55,7 +58,7 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) = res.json({ InventoryChanges: { ...currencyChanges, - ...(await addItem(accountId, buildable.uniqueName, buildable.buildQuantity)).InventoryChanges + ...(await addItem(accountId, buildable.resultType, buildable.num)).InventoryChanges } }); } diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index b06dcd14..64ed6f94 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -26,6 +26,7 @@ import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal, getWeaponType, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; import { IEquipmentClient } from "../types/inventoryTypes/commonInventoryTypes"; +import { ExportRecipes } from "warframe-public-export-plus"; export const createInventory = async ( accountOwnerId: Types.ObjectId, @@ -70,6 +71,25 @@ export const addItem = async ( typeName: string, quantity: number = 1 ): Promise<{ InventoryChanges: object }> => { + // Strict typing + if (typeName in ExportRecipes) { + const inventory = await getInventory(accountId); + const recipeChanges = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies ITypeCount + ]; + addRecipes(inventory, recipeChanges); + await inventory.save(); + return { + InventoryChanges: { + Recipes: recipeChanges + } + }; + } + + // Path-based duck typing switch (typeName.substr(1).split("/")[1]) { case "Powersuits": if (typeName.includes("EntratiMech")) { @@ -187,24 +207,6 @@ export const addItem = async ( } } } - case "Recipes": - case "Consumables": { - // Blueprints for Ciphers, Antitoxins - const inventory = await getInventory(accountId); - const recipeChanges = [ - { - ItemType: typeName, - ItemCount: quantity - } satisfies ITypeCount - ]; - addRecipes(inventory, recipeChanges); - await inventory.save(); - return { - InventoryChanges: { - Recipes: recipeChanges - } - }; - } case "Restoratives": // Codex Scanner, Remote Observer, Starburst const inventory = await getInventory(accountId); const consumablesChanges = [ diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 46a785ba..c755336d 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -1,8 +1,15 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; -import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; +import Items, { Category, MinimalItem, Warframe, Weapon } from "warframe-items"; import badItems from "@/static/json/exclude-mods.json"; -import { dict_en, ExportWarframes, ExportWeapons, IPowersuit } from "warframe-public-export-plus"; +import { + dict_en, + ExportRecipes, + ExportWarframes, + ExportWeapons, + IPowersuit, + IRecipe +} from "warframe-public-export-plus"; export type MinWarframe = Omit; export type MinWeapon = Omit; @@ -100,13 +107,9 @@ export const blueprintNames = Object.fromEntries( .map(name => [name, craftNames[name]]) ); -const buildables = items.filter(item => !!(item as Buildable).components); - -export const getItemByBlueprint = (uniqueName: string): (MinItem & Buildable) | undefined => { - const item = buildables.find(item => - (item as Buildable).components?.find(component => component.uniqueName === uniqueName) - ); - return item; +// Gets a recipe by its uniqueName +export const getItemByBlueprint = (uniqueName: string): IRecipe | undefined => { + return ExportRecipes[uniqueName]; }; export const getExalted = (uniqueName: string) => { diff --git a/src/services/recipeService.ts b/src/services/recipeService.ts index 953992f6..c9d315bd 100644 --- a/src/services/recipeService.ts +++ b/src/services/recipeService.ts @@ -34,9 +34,9 @@ export const startRecipe = async (recipeName: string, accountId: string) => { throw new Error(`unknown recipe ${recipeName}`); } - const componentsNeeded = recipe.components?.map(component => ({ - uniqueName: component.uniqueName, - count: component.itemCount + const componentsNeeded = recipe.ingredients.map(component => ({ + uniqueName: component.ItemType, + count: component.ItemCount })); if (!componentsNeeded) { @@ -47,11 +47,6 @@ export const startRecipe = async (recipeName: string, accountId: string) => { //TODO: consume components used //await updateResources(accountId, componentsNeeded); - //might be redundant - if (recipe.consumeOnBuild) { - //consume - } - if (!recipe.buildTime) { logger.error(`recipe ${recipeName} has no build time`); throw new Error(`recipe ${recipeName} has no build time`); -- 2.47.2 From aec6a964954ec1c901912d7c2ccba0518b444ab8 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 18 Jun 2024 02:03:07 +0200 Subject: [PATCH 184/522] feat: modular weapon crafting (#317) --- .../api/modularWeaponCraftingController.ts | 55 +++++++++++++++++++ .../custom/getItemListsController.ts | 4 +- src/models/inventoryModels/inventoryModel.ts | 1 + src/routes/api.ts | 2 + src/services/inventoryService.ts | 15 +++-- static/webui/script.js | 6 +- 6 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 src/controllers/api/modularWeaponCraftingController.ts diff --git a/src/controllers/api/modularWeaponCraftingController.ts b/src/controllers/api/modularWeaponCraftingController.ts new file mode 100644 index 00000000..c1cd7bc8 --- /dev/null +++ b/src/controllers/api/modularWeaponCraftingController.ts @@ -0,0 +1,55 @@ +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { WeaponTypeInternal } from "@/src/services/itemDataService"; +import { getInventory, updateCurrency, addWeapon, addMiscItems } from "@/src/services/inventoryService"; + +const modularWeaponTypes: Record = { + "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": "LongGuns", + "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": "Pistols", + "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": "Pistols", + "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": "Pistols", + "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": "Melee", + "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": "OperatorAmps" +}; + +interface IModularCraftRequest { + WeaponType: string; + Parts: string[]; +} + +export const modularWeaponCraftingController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const data: IModularCraftRequest = getJSONfromString(req.body.toString()); + if (!(data.WeaponType in modularWeaponTypes)) { + throw new Error(`unknown modular weapon type: ${data.WeaponType}`); + } + const category = modularWeaponTypes[data.WeaponType]; + + // Give weapon + const weapon = await addWeapon(category, data.WeaponType, accountId, data.Parts); + + // Remove 4000 credits + const currencyChanges = await updateCurrency(4000, false, accountId); + + // Remove parts + const miscItemChanges = []; + for (const part of data.Parts) { + miscItemChanges.push({ + ItemType: part, + ItemCount: -1 + }); + } + const inventory = await getInventory(accountId); + addMiscItems(inventory, miscItemChanges); + await inventory.save(); + + // Tell client what we did + res.json({ + InventoryChanges: { + ...currencyChanges, + [category]: [weapon], + MiscItems: miscItemChanges + } + }); +}; diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index f10b450b..04f3568d 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -43,7 +43,9 @@ const getItemListsController: RequestHandler = (_req, res) => { item.category == "Misc" || item.category == "Resources" || item.category == "Fish" || - ((item as any).productCategory == "Pistols" && (item as MinWeapon).totalDamage == 0) + ((item as any).productCategory == "Pistols" && + (item as MinWeapon).totalDamage == 0 && + !item.excludeFromCodex) // exclude Zaw Strike PvP variant ) ), mods, diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index dc91ddb7..8a79f758 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -921,6 +921,7 @@ type InventoryDocumentProps = { LongGuns: Types.DocumentArray; Pistols: Types.DocumentArray; Melee: Types.DocumentArray; + OperatorAmps: Types.DocumentArray; FlavourItems: Types.DocumentArray; RawUpgrades: Types.DocumentArray; Upgrades: Types.DocumentArray; diff --git a/src/routes/api.ts b/src/routes/api.ts index 8a059bfe..014e24ab 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -56,6 +56,7 @@ import { syndicateSacrificeController } from "../controllers/api/syndicateSacrif import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController"; import { nameWeaponController } from "@/src/controllers/api/nameWeaponController"; +import { modularWeaponCraftingController } from "@/src/controllers/api/modularWeaponCraftingController"; const apiRouter = express.Router(); @@ -122,5 +123,6 @@ apiRouter.post("/guildTech.php", guildTechController); apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); apiRouter.post("/nameWeapon.php", nameWeaponController); +apiRouter.post("/modularWeaponCrafting.php", modularWeaponCraftingController); export { apiRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 64ed6f94..c7861130 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -386,20 +386,23 @@ export const syndicateSacrifice = async ( export const addWeapon = async ( weaponType: WeaponTypeInternal, weaponName: string, - accountId: string + accountId: string, + modularParts: string[] | undefined = undefined ): Promise => { const inventory = await getInventory(accountId); let weaponIndex; switch (weaponType) { case "LongGuns": - weaponIndex = inventory.LongGuns.push({ ItemType: weaponName, Configs: [], XP: 0 }); - break; case "Pistols": - weaponIndex = inventory.Pistols.push({ ItemType: weaponName, Configs: [], XP: 0 }); - break; case "Melee": - weaponIndex = inventory.Melee.push({ ItemType: weaponName, Configs: [], XP: 0 }); + case "OperatorAmps": + weaponIndex = inventory[weaponType].push({ + ItemType: weaponName, + Configs: [], + XP: 0, + ModularParts: modularParts + }); break; default: throw new Error("unknown weapon type: " + weaponType); diff --git a/static/webui/script.js b/static/webui/script.js index 6a9d525d..bc1e8758 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -96,6 +96,10 @@ window.itemListPromise = new Promise(resolve => { "/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: "Rifle" }, "/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: "Shotgun" }, // Modular weapons + "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": { name: "Kitgun" }, + "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": { name: "Kitgun" }, + "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": { name: "Kitgun" }, + "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": { name: "Kitgun" }, "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": { name: "Zaw" }, // Missing in data sources "/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": { name: "Traumatic Peculiar" } @@ -524,7 +528,7 @@ function doAcquireMiscItems() { MiscItems: [ { ItemType: uniqueName, - ItemCount: $("#miscitem-count").val() + ItemCount: parseInt($("#miscitem-count").val()) } ] }) -- 2.47.2 From be9ba026f75e1c1afb651fed7d6ad874d96d38db Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 18 Jun 2024 02:07:30 +0200 Subject: [PATCH 185/522] improve: sort api.ts alphabetically (#318) --- src/routes/api.ts | 155 +++++++++++++++++++++++----------------------- 1 file changed, 76 insertions(+), 79 deletions(-) diff --git a/src/routes/api.ts b/src/routes/api.ts index 014e24ab..2850b2dc 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -1,128 +1,125 @@ +import express from "express"; +import { addFriendImageController } from "@/src/controllers/api/addFriendImageController"; +import { artifactsController } from "../controllers/api/artifactsController"; import { checkDailyMissionBonusController } from "@/src/controllers/api/checkDailyMissionBonusController"; +import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompletedRecipeController"; +import { createGuildController } from "@/src/controllers/api/createGuildController"; import { deleteSessionController } from "@/src/controllers/api/deleteSessionController"; +import { dojoController } from "@/src/controllers/api/dojoController"; import { dronesController } from "@/src/controllers/api/dronesController"; import { findSessionsController } from "@/src/controllers/api/findSessionsController"; +import { focusController } from "@/src/controllers/api/focusController"; import { genericUpdateController } from "@/src/controllers/api/genericUpdateController"; import { getAllianceController } from "@/src/controllers/api/getAllianceController"; import { getCreditsController } from "@/src/controllers/api/getCreditsController"; +import { getDailyDealStockLevelsController } from "@/src/controllers/api/getDailyDealStockLevelsController"; import { getFriendsController } from "@/src/controllers/api/getFriendsController"; +import { getGuildController } from "@/src/controllers/api/getGuildController"; +import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController"; +import { getGuildLogController } from "../controllers/api/getGuildLogController"; import { getIgnoredUsersController } from "@/src/controllers/api/getIgnoredUsersController"; import { getNewRewardSeedController } from "@/src/controllers/api/getNewRewardSeedController"; import { getShipController } from "@/src/controllers/api/getShipController"; +import { guildTechController } from "../controllers/api/guildTechController"; import { hostSessionController } from "@/src/controllers/api/hostSessionController"; import { hubController } from "@/src/controllers/api/hubController"; import { hubInstancesController } from "@/src/controllers/api/hubInstancesController"; import { inboxController } from "@/src/controllers/api/inboxController"; import { inventoryController } from "@/src/controllers/api/inventoryController"; +import { inventorySlotsController } from "@/src/controllers/api/inventorySlotsController"; +import { joinSessionController } from "@/src/controllers/api/joinSessionController"; import { loginController } from "@/src/controllers/api/loginController"; import { loginRewardsController } from "@/src/controllers/api/loginRewardsController"; import { logoutController } from "@/src/controllers/api/logoutController"; import { marketRecommendationsController } from "@/src/controllers/api/marketRecommendationsController"; import { missionInventoryUpdateController } from "@/src/controllers/api/missionInventoryUpdateController"; +import { modularWeaponCraftingController } from "@/src/controllers/api/modularWeaponCraftingController"; import { modularWeaponSaleController } from "@/src/controllers/api/modularWeaponSaleController"; +import { nameWeaponController } from "@/src/controllers/api/nameWeaponController"; import { purchaseController } from "@/src/controllers/api/purchaseController"; +import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController"; import { rerollRandomModController } from "@/src/controllers/api/rerollRandomModController"; +import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; +import { sellController } from "@/src/controllers/api/sellController"; import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController"; +import { setActiveShipController } from "@/src/controllers/api/setActiveShipController"; +import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; +import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; +import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController"; +import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController"; +import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; +import { startRecipeController } from "@/src/controllers/api/startRecipeController"; import { surveysController } from "@/src/controllers/api/surveysController"; +import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; +import { trainingResultController } from "@/src/controllers/api/trainingResultController"; import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController"; import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; -import { joinSessionController } from "@/src/controllers/api/joinSessionController"; -import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; -import { trainingResultController } from "@/src/controllers/api/trainingResultController"; -import { artifactsController } from "../controllers/api/artifactsController"; - -import express from "express"; -import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; -import { focusController } from "@/src/controllers/api/focusController"; -import { inventorySlotsController } from "@/src/controllers/api/inventorySlotsController"; -import { startRecipeController } from "@/src/controllers/api/startRecipeController"; -import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompletedRecipeController"; -import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController"; -import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; -import { setActiveShipController } from "@/src/controllers/api/setActiveShipController"; import { updateThemeController } from "../controllers/api/updateThemeController"; -import { getGuildController } from "@/src/controllers/api/getGuildController"; -import { addFriendImageController } from "@/src/controllers/api/addFriendImageController"; -import { createGuildController } from "@/src/controllers/api/createGuildController"; -import { sellController } from "@/src/controllers/api/sellController"; import { upgradesController } from "@/src/controllers/api/upgradesController"; -import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController"; -import { getDailyDealStockLevelsController } from "@/src/controllers/api/getDailyDealStockLevelsController"; -import { getGuildLogController } from "../controllers/api/getGuildLogController"; -import { guildTechController } from "../controllers/api/guildTechController"; -import { dojoController } from "@/src/controllers/api/dojoController"; -import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController"; -import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; -import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; -import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController"; -import { nameWeaponController } from "@/src/controllers/api/nameWeaponController"; -import { modularWeaponCraftingController } from "@/src/controllers/api/modularWeaponCraftingController"; const apiRouter = express.Router(); // get -apiRouter.get("/inventory.php", inventoryController); -apiRouter.get("/getFriends.php", getFriendsController); -apiRouter.get("/marketRecommendations.php", marketRecommendationsController); -apiRouter.get("/marketSearchRecommendations.php", marketRecommendationsController); -apiRouter.get("/surveys.php", surveysController); -apiRouter.get("/loginRewards.php", loginRewardsController); apiRouter.get("/checkDailyMissionBonus.php", checkDailyMissionBonusController); -apiRouter.get("/inbox.php", inboxController); -apiRouter.get("/getShip.php", getShipController); +apiRouter.get("/credits.php", getCreditsController); +apiRouter.get("/deleteSession.php", deleteSessionController); +apiRouter.get("/dojo", dojoController); apiRouter.get("/drones.php", dronesController); +apiRouter.get("/getDailyDealStockLevels.php", getDailyDealStockLevelsController); +apiRouter.get("/getFriends.php", getFriendsController); +apiRouter.get("/getGuild.php", getGuildController); +apiRouter.get("/getGuildDojo.php", getGuildDojoController); +apiRouter.get("/getGuildLog.php", getGuildLogController); apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController); apiRouter.get("/getNewRewardSeed.php", getNewRewardSeedController); -apiRouter.get("/setActiveQuest.php", setActiveQuestController); -apiRouter.get("/updateSession.php", updateSessionGetController); -apiRouter.get("/credits.php", getCreditsController); -apiRouter.get("/hubInstances", hubInstancesController); +apiRouter.get("/getShip.php", getShipController); apiRouter.get("/hub", hubController); -apiRouter.get("/modularWeaponSale.php", modularWeaponSaleController); -apiRouter.get("/deleteSession.php", deleteSessionController); +apiRouter.get("/hubInstances", hubInstancesController); +apiRouter.get("/inbox.php", inboxController); +apiRouter.get("/inventory.php", inventoryController); +apiRouter.get("/loginRewards.php", loginRewardsController); apiRouter.get("/logout.php", logoutController); -apiRouter.get("/setBootLocation.php", setBootLocationController); -apiRouter.get("/setActiveShip.php", setActiveShipController); -apiRouter.get("/getGuild.php", getGuildController); -apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController); -apiRouter.get("/getDailyDealStockLevels.php", getDailyDealStockLevelsController); -apiRouter.get("/getGuildLog.php", getGuildLogController); -apiRouter.get("/dojo", dojoController); -apiRouter.get("/getGuildDojo.php", getGuildDojoController); +apiRouter.get("/marketRecommendations.php", marketRecommendationsController); +apiRouter.get("/marketSearchRecommendations.php", marketRecommendationsController); +apiRouter.get("/modularWeaponSale.php", modularWeaponSaleController); apiRouter.get("/queueDojoComponentDestruction.php", queueDojoComponentDestructionController); +apiRouter.get("/setActiveQuest.php", setActiveQuestController); +apiRouter.get("/setActiveShip.php", setActiveShipController); +apiRouter.get("/setBootLocation.php", setBootLocationController); +apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController); +apiRouter.get("/surveys.php", surveysController); +apiRouter.get("/updateSession.php", updateSessionGetController); // post -// eslint-disable-next-line @typescript-eslint/no-misused-promises -apiRouter.post("/shipDecorations.php", shipDecorationsController); -apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController); -apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController); -apiRouter.post("/startRecipe.php", startRecipeController); -apiRouter.post("/inventorySlots.php", inventorySlotsController); -apiRouter.post("/focus.php", focusController); -apiRouter.post("/artifacts.php", artifactsController); -apiRouter.post("/findSessions.php", findSessionsController); -// eslint-disable-next-line @typescript-eslint/no-misused-promises -apiRouter.post("/purchase.php", purchaseController); -apiRouter.post("/login.php", loginController); -apiRouter.post("/getAlliance.php", getAllianceController); -apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController); -apiRouter.post("/hostSession.php", hostSessionController); -apiRouter.post("/updateSession.php", updateSessionPostController); -apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); -apiRouter.post("/genericUpdate.php", genericUpdateController); -apiRouter.post("/rerollRandomMod.php", rerollRandomModController); -apiRouter.post("/joinSession.php", joinSessionController); -apiRouter.post("/saveLoadout.php", saveLoadoutController); -apiRouter.post("/trainingResult.php", trainingResultController); -apiRouter.post("/updateTheme.php", updateThemeController); apiRouter.post("/addFriendImage.php", addFriendImageController); +apiRouter.post("/artifacts.php", artifactsController); +apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController); apiRouter.post("/createGuild.php", createGuildController); -apiRouter.post("/sell.php", sellController); -apiRouter.post("/upgrades.php", upgradesController); +apiRouter.post("/findSessions.php", findSessionsController); +apiRouter.post("/focus.php", focusController); +apiRouter.post("/genericUpdate.php", genericUpdateController); +apiRouter.post("/getAlliance.php", getAllianceController); apiRouter.post("/guildTech.php", guildTechController); -apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); -apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); -apiRouter.post("/nameWeapon.php", nameWeaponController); +apiRouter.post("/hostSession.php", hostSessionController); +apiRouter.post("/inventorySlots.php", inventorySlotsController); +apiRouter.post("/joinSession.php", joinSessionController); +apiRouter.post("/login.php", loginController); +apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); apiRouter.post("/modularWeaponCrafting.php", modularWeaponCraftingController); +apiRouter.post("/nameWeapon.php", nameWeaponController); +apiRouter.post("/purchase.php", purchaseController); +apiRouter.post("/rerollRandomMod.php", rerollRandomModController); +apiRouter.post("/saveLoadout.php", saveLoadoutController); +apiRouter.post("/sell.php", sellController); +apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController); +apiRouter.post("/shipDecorations.php", shipDecorationsController); +apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); +apiRouter.post("/startRecipe.php", startRecipeController); +apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); +apiRouter.post("/trainingResult.php", trainingResultController); +apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController); +apiRouter.post("/updateSession.php", updateSessionPostController); +apiRouter.post("/updateTheme.php", updateThemeController); +apiRouter.post("/upgrades.php", upgradesController); export { apiRouter }; -- 2.47.2 From c2a6892c2a3436cd4788973eff3c8a7351aca9ab Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 18 Jun 2024 12:24:58 +0200 Subject: [PATCH 186/522] feat: add optional myIrcAddresses config (#321) --- src/controllers/api/loginController.ts | 4 ++-- src/services/configService.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 883b51c4..9338b3c7 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -43,7 +43,7 @@ const loginController: RequestHandler = async (request, response) => { platformCDNs: platformCDNs, NRS: [config.myAddress], DTLS: DTLS, - IRC: [config.myAddress], + IRC: config.myIrcAddresses ?? [config.myAddress], HUB: HUB, BuildLabel: buildConfig.buildLabel, MatchmakingBuildId: buildConfig.matchmakingBuildId @@ -79,7 +79,7 @@ const loginController: RequestHandler = async (request, response) => { platformCDNs: platformCDNs, NRS: [config.myAddress], DTLS: DTLS, - IRC: [config.myAddress], + IRC: config.myIrcAddresses ?? [config.myAddress], HUB: HUB, BuildLabel: buildConfig.buildLabel, MatchmakingBuildId: buildConfig.matchmakingBuildId diff --git a/src/services/configService.ts b/src/services/configService.ts index 283b31bf..785c0f0b 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -24,6 +24,7 @@ interface IConfig { myAddress: string; httpPort?: number; httpsPort?: number; + myIrcAddresses?: string[]; autoCreateAccount?: boolean; skipStoryModeChoice?: boolean; skipTutorial?: boolean; -- 2.47.2 From 74de4e075389c5eee0844ae920f3181c687bb574 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 18 Jun 2024 13:02:29 +0200 Subject: [PATCH 187/522] feat: implement helminth naming & archon shard installation (#320) Co-authored-by: Sainan --- .../api/infestedFoundryController.ts | 88 +++++++++++++++++++ src/models/inventoryModels/inventoryModel.ts | 44 +++++++--- src/routes/api.ts | 2 + .../inventoryTypes/commonInventoryTypes.ts | 7 +- src/types/inventoryTypes/inventoryTypes.ts | 18 ++-- 5 files changed, 136 insertions(+), 23 deletions(-) create mode 100644 src/controllers/api/infestedFoundryController.ts diff --git a/src/controllers/api/infestedFoundryController.ts b/src/controllers/api/infestedFoundryController.ts new file mode 100644 index 00000000..26b98803 --- /dev/null +++ b/src/controllers/api/infestedFoundryController.ts @@ -0,0 +1,88 @@ +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getInventory, addMiscItems } from "@/src/services/inventoryService"; +import { IOid } from "@/src/types/commonTypes"; + +export const infestedFoundryController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const payload = getJSONfromString(req.body.toString()); + switch (req.query.mode) { + case "s": { + // shard installation + const request = payload as IShardInstallRequest; + const inventory = await getInventory(accountId); + const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$oid)!; + if ( + !suit.ArchonCrystalUpgrades || + suit.ArchonCrystalUpgrades.length != 5 // we shouldn't have an array like this, but older inventories may disagree... + ) { + suit.ArchonCrystalUpgrades = [{}, {}, {}, {}, {}]; + } + suit.ArchonCrystalUpgrades[request.Slot] = { + UpgradeType: request.UpgradeType, + Color: request.Color + }; + const miscItemChanges = [ + { + ItemType: colorToShard[request.Color], + ItemCount: -1 + } + ]; + addMiscItems(inventory, miscItemChanges); + await inventory.save(); + res.json({ + InventoryChanges: { + MiscItems: miscItemChanges + } + }); + break; + } + + case "n": { + // name the beast + const inventory = await getInventory(accountId); + inventory.InfestedFoundry ??= {}; + inventory.InfestedFoundry.Name = payload.newName as string; + await inventory.save(); + res.json({ + InventoryChanges: { + InfestedFoundry: { + Name: inventory.InfestedFoundry.Name + } + } + }); + break; + } + + case "o": // offerings update + // {"OfferingsIndex":540,"SuitTypes":["/Lotus/Powersuits/PaxDuviricus/PaxDuviricusBaseSuit","/Lotus/Powersuits/Nezha/NezhaBaseSuit","/Lotus/Powersuits/Devourer/DevourerBaseSuit"],"Extra":false} + res.status(404).end(); + break; + + default: + throw new Error(`unhandled infestedFoundry mode: ${req.query.mode}`); + } +}; + +interface IShardInstallRequest { + SuitId: IOid; + Slot: number; + UpgradeType: string; + Color: string; +} + +const colorToShard: Record = { + ACC_RED: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalAmar", + ACC_RED_MYTHIC: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalAmarMythic", + ACC_YELLOW: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalNira", + ACC_YELLOW_MYTHIC: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalNiraMythic", + ACC_BLUE: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalBoreal", + ACC_BLUE_MYTHIC: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalBorealMythic", + ACC_GREEN: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalGreen", + ACC_GREEN_MYTHIC: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalGreenMythic", + ACC_ORANGE: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalOrange", + ACC_ORANGE_MYTHIC: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalOrangeMythic", + ACC_PURPLE: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalViolet", + ACC_PURPLE_MYTHIC: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalVioletMythic" +}; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 8a79f758..90c4c844 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -45,7 +45,8 @@ import { IOperatorConfigDatabase, IPolarity, IEquipmentDatabase, - IOperatorConfigClient + IOperatorConfigClient, + IArchonCrystalUpgrade } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; @@ -182,6 +183,20 @@ ItemConfigSchema.set("toJSON", { } }); +const ArchonCrystalUpgradeSchema = new Schema( + { + UpgradeType: String, + Color: String + }, + { _id: false } +); + +ArchonCrystalUpgradeSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject.__v; + } +}); + const EquipmentSchema = new Schema({ ItemType: String, Configs: [ItemConfigSchema], @@ -193,7 +208,7 @@ const EquipmentSchema = new Schema({ FocusLens: String, ModSlotPurchases: Number, CustomizationSlotPurchases: Number, - UpgradeType: Schema.Types.Mixed, //todo + UpgradeType: String, UpgradeFingerprint: String, ItemName: String, InfestationDate: Date, @@ -203,7 +218,7 @@ const EquipmentSchema = new Schema({ UnlockLevel: Number, Expiry: Date, SkillTree: String, - ArchonCrystalUpgrades: [Schema.Types.Mixed] //TODO + ArchonCrystalUpgrades: { type: [ArchonCrystalUpgradeSchema], default: undefined } }); EquipmentSchema.virtual("ItemId").get(function () { @@ -432,16 +447,19 @@ const consumedSchuitsSchema = new Schema({ c: colorSchema }); -const infestedFoundrySchema = new Schema({ - Name: String, - Resources: [typeCountSchema], - Slots: Number, - XP: Number, - ConsumedSuits: [consumedSchuitsSchema], - InvigorationIndex: Number, - InvigorationSuitOfferings: [String], - InvigorationsApplied: Number -}); +const infestedFoundrySchema = new Schema( + { + Name: String, + Resources: { type: [typeCountSchema], default: undefined }, + Slots: Number, + XP: Number, + ConsumedSuits: { type: [consumedSchuitsSchema], default: undefined }, + InvigorationIndex: Number, + InvigorationSuitOfferings: { type: [String], default: undefined }, + InvigorationsApplied: Number + }, + { _id: false } +); const questProgressSchema = new Schema({ c: Number, diff --git a/src/routes/api.ts b/src/routes/api.ts index 2850b2dc..35eaaa43 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -25,6 +25,7 @@ import { hostSessionController } from "@/src/controllers/api/hostSessionControll import { hubController } from "@/src/controllers/api/hubController"; import { hubInstancesController } from "@/src/controllers/api/hubInstancesController"; import { inboxController } from "@/src/controllers/api/inboxController"; +import { infestedFoundryController } from "@/src/controllers/api/infestedFoundryController"; import { inventoryController } from "@/src/controllers/api/inventoryController"; import { inventorySlotsController } from "@/src/controllers/api/inventorySlotsController"; import { joinSessionController } from "@/src/controllers/api/joinSessionController"; @@ -101,6 +102,7 @@ apiRouter.post("/genericUpdate.php", genericUpdateController); apiRouter.post("/getAlliance.php", getAllianceController); apiRouter.post("/guildTech.php", guildTechController); apiRouter.post("/hostSession.php", hostSessionController); +apiRouter.post("/infestedFoundry.php", infestedFoundryController); apiRouter.post("/inventorySlots.php", inventorySlotsController); apiRouter.post("/joinSession.php", joinSessionController); apiRouter.post("/login.php", loginController); diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index 8596c6e4..aadc1b62 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -103,6 +103,11 @@ export interface IEquipmentDatabase { UnlockLevel?: number; Expiry?: IMongoDate; SkillTree?: string; - ArchonCrystalUpgrades?: []; //TODO + ArchonCrystalUpgrades?: IArchonCrystalUpgrade[]; _id: Types.ObjectId; } + +export interface IArchonCrystalUpgrade { + UpgradeType?: string; + Color?: string; +} diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index ec492353..1abd4cd8 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -232,7 +232,7 @@ export interface IInventoryResponse { DailyAffiliationEntrati: number; DailyAffiliationNecraloid: number; MechSuits: IEquipmentDatabase[]; - InfestedFoundry: IInfestedFoundry; + InfestedFoundry?: IInfestedFoundry; BlessingCooldown: IMongoDate; CrewShipHarnesses: IEquipmentDatabase[]; CrewShipRawSalvage: IConsumable[]; @@ -482,14 +482,14 @@ export interface IFusionTreasure { } export interface IInfestedFoundry { - Name: string; - Resources: ITypeCount[]; - Slots: number; - XP: number; - ConsumedSuits: IConsumedSuit[]; - InvigorationIndex: number; - InvigorationSuitOfferings: string[]; - InvigorationsApplied: number; + Name?: string; + Resources?: ITypeCount[]; + Slots?: number; + XP?: number; + ConsumedSuits?: IConsumedSuit[]; + InvigorationIndex?: number; + InvigorationSuitOfferings?: string[]; + InvigorationsApplied?: number; } export interface IConsumedSuit { -- 2.47.2 From 03ac8ab0106f279cd4dae5edf3c40b36a9702f69 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 18 Jun 2024 23:10:26 +0200 Subject: [PATCH 188/522] chore: update data for 36.0.0 (Jade Shadows) (#324) --- package-lock.json | 8 +- package.json | 2 +- src/controllers/api/inventoryController.ts | 36 +- .../custom/getItemListsController.ts | 51 +- src/services/itemDataService.ts | 10 - static/fixed_responses/allFlavourItems.json | 1951 -------- static/fixed_responses/allMissions.json | 6 + static/fixed_responses/allQuestKeys.json | 38 - .../fixed_responses/allShipDecorations.json | 1011 ----- static/fixed_responses/allSkins.json | 4031 ----------------- 10 files changed, 68 insertions(+), 7076 deletions(-) delete mode 100644 static/fixed_responses/allFlavourItems.json delete mode 100644 static/fixed_responses/allQuestKeys.json delete mode 100644 static/fixed_responses/allShipDecorations.json delete mode 100644 static/fixed_responses/allSkins.json diff --git a/package-lock.json b/package-lock.json index a6da5d4d..e12a07ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.4", + "warframe-public-export-plus": "^0.2.5", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3909,9 +3909,9 @@ } }, "node_modules/warframe-public-export-plus": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.4.tgz", - "integrity": "sha512-Kh2+4p0qirTNUfHLr/nUJ1y/kH9mKnig28dwgpPaWt41ZfGzA+/qrpqI3DHYUvpd4wTCii/HItIy6tZtpTsy4Q==" + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.5.tgz", + "integrity": "sha512-IsS2Z14CeTpGSpfeUxqTi8wAQjQ6qjh2kV8RC9St5hcDmII3NpwEFXmStEqz7r+JPfea72D3cZMMl+4QLHqvXw==" }, "node_modules/warframe-riven-info": { "version": "0.1.0", diff --git a/package.json b/package.json index 7ac70817..473d3cdc 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.4", + "warframe-public-export-plus": "^0.2.5", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 6d12b5f7..b2738bf8 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -5,12 +5,9 @@ import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Request, RequestHandler, Response } from "express"; import { config } from "@/src/services/configService"; import allMissions from "@/static/fixed_responses/allMissions.json"; -import allQuestKeys from "@/static/fixed_responses/allQuestKeys.json"; -import allShipDecorations from "@/static/fixed_responses/allShipDecorations.json"; -import allFlavourItems from "@/static/fixed_responses/allFlavourItems.json"; -import allSkins from "@/static/fixed_responses/allSkins.json"; import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; -import { IShipInventory, IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes"; +import { ExportCustoms, ExportFlavour, ExportKeys, ExportResources } from "warframe-public-export-plus"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { let accountId; @@ -51,9 +48,11 @@ const inventoryController: RequestHandler = async (request: Request, response: R } if (config.unlockAllQuests) { - for (const questKey of allQuestKeys) { - if (!inventoryResponse.QuestKeys.find(quest => quest.ItemType == questKey)) { - inventoryResponse.QuestKeys.push({ ItemType: questKey }); + for (const [k, v] of Object.entries(ExportKeys)) { + if ("chainStages" in v) { + if (!inventoryResponse.QuestKeys.find(quest => quest.ItemType == k)) { + inventoryResponse.QuestKeys.push({ ItemType: k }); + } } } } @@ -76,17 +75,30 @@ const inventoryController: RequestHandler = async (request: Request, response: R inventoryResponse.NodeIntrosCompleted.push("/Lotus/Levels/Cinematics/NewWarIntro/NewWarStageTwo.level"); } - if (config.unlockAllShipDecorations) inventoryResponse.ShipDecorations = allShipDecorations; - if (config.unlockAllFlavourItems) inventoryResponse.FlavourItems = allFlavourItems satisfies IFlavourItem[]; + if (config.unlockAllShipDecorations) { + inventoryResponse.ShipDecorations = []; + for (const [uniqueName, item] of Object.entries(ExportResources)) { + if (item.productCategory == "ShipDecorations") { + inventoryResponse.ShipDecorations.push({ ItemType: uniqueName, ItemCount: 1 }); + } + } + } + + if (config.unlockAllFlavourItems) { + inventoryResponse.FlavourItems = []; + for (const uniqueName in ExportFlavour) { + inventoryResponse.FlavourItems.push({ ItemType: uniqueName }); + } + } if (config.unlockAllSkins) { inventoryResponse.WeaponSkins = []; - for (const skin of allSkins) { + for (const uniqueName in ExportCustoms) { inventoryResponse.WeaponSkins.push({ ItemId: { $oid: "000000000000000000000000" }, - ItemType: skin + ItemType: uniqueName }); } } diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 04f3568d..574ec8d7 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; -import { MinItem, MinWeapon, warframes, items, getEnglishString } from "@/src/services/itemDataService"; +import { MinItem, items, getEnglishString } from "@/src/services/itemDataService"; import badItems from "@/static/json/exclude-mods.json"; -import { ExportArcanes, ExportWeapons } from "warframe-public-export-plus"; +import { ExportArcanes, ExportResources, ExportWarframes, ExportWeapons } from "warframe-public-export-plus"; interface ListedItem { uniqueName: string; @@ -20,6 +20,30 @@ function reduceItems(items: MinItem[]): ListedItem[] { } const getItemListsController: RequestHandler = (_req, res) => { + const weapons = []; + const miscitems = []; + for (const [uniqueName, item] of Object.entries(ExportWeapons)) { + if (item.productCategory !== "OperatorAmps") { + if (item.totalDamage !== 0) { + weapons.push({ + uniqueName, + name: getEnglishString(item.name) + }); + } else if (!item.excludeFromCodex) { + miscitems.push({ + uniqueName, + name: getEnglishString(item.name) + }); + } + } + } + for (const [uniqueName, item] of Object.entries(ExportResources)) { + miscitems.push({ + uniqueName, + name: getEnglishString(item.name) + }); + } + const mods = reduceItems(items.filter(item => item.category == "Mods")); for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) { mods.push({ @@ -27,27 +51,18 @@ const getItemListsController: RequestHandler = (_req, res) => { name: getEnglishString(arcane.name) }); } + res.json({ - warframes: reduceItems(warframes), - weapons: Object.entries(ExportWeapons) - .filter(([_uniqueName, weapon]) => weapon.productCategory !== "OperatorAmps" && weapon.totalDamage !== 0) - .map(([uniqueName, weapon]) => { + warframes: Object.entries(ExportWarframes) + .filter(([_uniqueName, warframe]) => warframe.productCategory == "Suits") + .map(([uniqueName, warframe]) => { return { uniqueName, - name: getEnglishString(weapon.name) + name: getEnglishString(warframe.name) }; }), - miscitems: reduceItems( - items.filter( - item => - item.category == "Misc" || - item.category == "Resources" || - item.category == "Fish" || - ((item as any).productCategory == "Pistols" && - (item as MinWeapon).totalDamage == 0 && - !item.excludeFromCodex) // exclude Zaw Strike PvP variant - ) - ), + weapons, + miscitems, mods, badItems }); diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index c755336d..694a766f 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -15,16 +15,6 @@ export type MinWarframe = Omit; export type MinWeapon = Omit; export type MinItem = Omit; -export const warframes: MinWarframe[] = Array.from(new Items({ category: ["Warframes"] }) as Warframe[]) - .filter(item => { - return item.uniqueName.substring(0, 30) != "/Lotus/Powersuits/EntratiMech/"; - }) - .map(item => { - const next = { ...item }; - delete next.patchlogs; - return next; - }); - export type WeaponTypeInternal = | "LongGuns" | "Pistols" diff --git a/static/fixed_responses/allFlavourItems.json b/static/fixed_responses/allFlavourItems.json deleted file mode 100644 index a636bb0d..00000000 --- a/static/fixed_responses/allFlavourItems.json +++ /dev/null @@ -1,1951 +0,0 @@ -[ - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/BaruukBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/ConqueraBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/CorpusBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/DeadlockBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/FortunaBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/GradientBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/GrineerBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/HelminthBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/LegacyBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/NatahBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/SpringFestivalBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/StalkerBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Backgrounds/ZephyrDeluxeBackground" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerA" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerB" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerC" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerD" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerE" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerF" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerG" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerH" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerI" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerJ" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/ControllerK" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyA" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyB" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyC" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyD" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyE" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyF" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseGreyG" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineA" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineB" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineC" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineD" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineE" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineF" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineG" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineH" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseLineI" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Cursors/MouseYareli" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/CorpusSounds" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/HelminthSounds" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/LegacySounds" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/Sounds/ZephyrDeluxeSounds" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/BaruukStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/ConqueraStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/ContrastStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/CorpusStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/DeadlockStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/EquinoxStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/FortunaStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/GrineerStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/HelminthStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/LegacyStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/LotusStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/LunarNewYearStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/NatahStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/NidusStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/OrokinStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/StalkerStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/TennoStyle" }, - { "ItemType": "/Lotus/Interface/Graphics/CustomUI/ZephyrDeluxeStyle" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/CephalonDiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/CorpusIcePlanetDiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/EarthADiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/EidolonADiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/EmpyreanRegionADiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/FortressDiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/OceanADiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/OrokinMoonDiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/SettlementDiorama" }, - { "ItemType": "/Lotus/Types/Game/ActionFigureDioramas/VenusADiorama" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsA" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsB" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsC" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsCephalon" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsContest" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsD" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsEntrati" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsFeral" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsHyekka" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsNexus" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsSolstice" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorAccentsXmas" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseA" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseB" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseC" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseCephalon" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseContest" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseD" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseEntrati" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseFeral" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseHyekka" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseNexus" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseSolstice" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseVampire" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorBaseXmas" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryA" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryB" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryC" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryCephalon" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryContest" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryD" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryEntrati" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryFeral" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryHyekka" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryNexus" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondarySolstice" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryVampire" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorSecondaryXmas" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryA" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryB" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryC" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryCephalon" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryContest" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryD" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryEntrati" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryFeral" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryHyekka" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryNexus" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiarySolstice" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/CatbrowPetColorTertiaryXmas" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorAccents" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorBase" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorSecondary" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/GaraPrimeCatbrowPetColorTertiary" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorAccents" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorBase" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorSecondary" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/KhoraDeluxeColorTertiary" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorAccents" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorBaseA" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorSecondaryA" }, - { "ItemType": "/Lotus/Types/Game/CatbrowPet/Colors/PrimeCatbrowPetColorTertiaryA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowColorWukongPrimeMid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowColorWukongPrimeMundane" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowColorWukongPrimeVibrant" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorCephalonMid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorCephalonMundane" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorCephalonVibrant" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDrahkMid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDrahkMundane" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDrahkVibrant" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfAccent" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfMid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfMundane" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorDuviriWolfVibrant" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorFeralMid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorFeralMundane" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorFeralVibrant" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorKavatBase" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorKavatSecondary" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorKavatTertiary" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidB" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidC" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidContest" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidD" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidDiamond" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidE" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidF" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidG" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidH" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidI" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidJ" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidK" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMidLiquid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneB" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneC" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneContest" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneD" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneDiamond" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneE" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneF" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneG" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneH" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneI" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneJ" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneK" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorMundaneLiquid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeC" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeD" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeTraderMidA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeTraderMundaneA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorPrimeTraderVibrantA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorSolsticeMid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorSolsticeMundane" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorSolsticeVibrant" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantB" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantC" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantContest" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantD" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantDiamond" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantE" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantF" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantG" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantH" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantI" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantJ" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantK" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorVibrantLiquid" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMidA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMidB" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMundaneA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasMundaneB" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasVibrantA" }, - { "ItemType": "/Lotus/Types/Game/KubrowPet/Colors/KubrowPetColorXmasVibrantB" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackA" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackB" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackC" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackD" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardCorpusPackE" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardEDMPackA" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardGrineerPackA" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardGrineerPackB" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardHipHopPackA" }, - { "ItemType": "/Lotus/Types/Game/NotePacks/BardTennoPackA" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/ArachnoidCamperPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/ArchwingArmedPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/ArchwingUnarmedPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/CorpusCrewmanGunPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/CorpusCrewmanReactPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/GrineerGunPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/GrineerReactPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/RopalolystPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/TeralystPoseSet" }, - { "ItemType": "/Lotus/Types/Game/PoseSets/WarframeGunPoseSet" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/BaroWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/CorpusWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/GrineerQueensWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/GrineerWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/LavosAlchemistWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/NoraWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/OstronWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateAHWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateCSWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateNLWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicatePSWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateRVWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/SyndicateSMWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/TennoWallpaper" }, - { "ItemType": "/Lotus/Types/Game/QuartersWallpapers/TwitchPrimeWallpaper" }, - { "ItemType": "/Lotus/Types/Items/Arcade/FlappyArcadeItem" }, - { "ItemType": "/Lotus/Types/Items/Arcade/FrameFighterArcadeItem" }, - { "ItemType": "/Lotus/Types/Items/Arcade/WyrmiusArcadeItem" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHCombatEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHEngineeringEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHGunneryEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHPilotingEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/AHSurvivabilityEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSCombatEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSEngineeringEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSGunneryEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSPilotingEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/CSSurvivabilityEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLCombatEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLEngineeringEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLPilotingEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/NLSurvivabilityEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/PSPilotingEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/PSSurvivabilityEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/RVEngineeringEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/RVPilotingEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMCombatEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMGunneryEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMPilotingEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Syndicate/SMSurvivabilityEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/AgreeEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/ArbitrationEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/BaroEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/BarterEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/BowEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/BragEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/CaptainEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/ClapEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Dance2Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Dance3Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Dance4Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Dance5Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceArsenioEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceBarelyDancingEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceElbowWave" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceHandsOnHipsEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceHandsUp" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceHeadphonesBop" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceLassoSidestep" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceLegTapEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceOneHandHipLookLeftRight" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceOneHandHipPump" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceOutUpOutBackEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceReachAcrossHips" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceSideStepCrossEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceSideStepTurn" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DanceTurnReverseTurn" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DeepBowEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/DisagreeEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/FarewellEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/FollowEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/GaussGonnaGetchaEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HandshakeEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeCeresEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeDeimosEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeDerelictEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeDuviriEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeEarthEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeErisEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeEuropaEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeJupiterEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeKuvaFortressEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeLuaEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeMarsEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeMercuryEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeNeptuneEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodePhobosEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodePlutoEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeSaturnEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeSednaEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeUranusEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeVenusEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeVoidEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HardmodeZarimanEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/HeirloomEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Kata2Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Kata3Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Kata5Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/KataEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/KhoraPrimeEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/KneelEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/KneelOneLegEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/LNY2023Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/LNY2024DragonEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/LeftHeartEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/LegionSaluteEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/MeditateEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/ParazonEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/PunctualityEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Rank30Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/RightHeartEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/ShawzinEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/ShrugEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/SitEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2019Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2020AEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2020BEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2021Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2022Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/Tennocon2024Emote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/ThousandDaysEmote" }, - { "ItemType": "/Lotus/Types/Items/Emotes/WolfRageEmote" }, - { "ItemType": "/Lotus/Types/Items/Events/TennoConRelay2022EarlyAccess" }, - { "ItemType": "/Lotus/Types/Items/Events/TennoConRelay2023EarlyAccess" }, - { "ItemType": "/Lotus/Types/Items/Events/TennoConRelay2024EarlyAccess" }, - { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropE" }, - { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropF" }, - { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropG" }, - { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropH" }, - { "ItemType": "/Lotus/Types/Items/VideoWallBackdrops/ZarimanApartment/VideoWallBackDropI" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeA" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeB" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeC" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeD" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeE" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeF" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeG" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeH" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeI" }, - { "ItemType": "/Lotus/Types/Items/VideoWallSoundscapes/ZarimanApartment/VideoWallSoundscapeJ" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageEidolonCritter" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageEidolonFish" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageEidolonGem" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageVenusCritter" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageVenusFish" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Conservation/AvatarImageVenusGem" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Events/EventGlyphCaviaBirdThree" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Events/EventGlyphCaviaFibonacci" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Events/EventGlyphCaviaTagfer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImage13angTV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAHR" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAccessibleGamer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAcolyteSynpai" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAdelfosSelene" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAdikDarkCero" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAdmiralBahroo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAeonKnight" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAjingom" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAkariayataka" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlainLove" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlexanderDario" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlexandraLive" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlthani" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAlyekk" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAnJetCat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAngryIceberg" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAngryUnicorn" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAnnoyingKillah" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageArgonSix" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAshi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAshisogiTenno" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAungelecette" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAuroraStarr" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAvelna" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAywi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAznitrous" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageAzrael" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBBSChainWarden" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBRCommunityDiscord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBabychanTH" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBackyardisTV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBadNewsBaron" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBast" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBennyfits" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBigJimID" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBikeman" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBlackOni" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBlazingCobalt" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBlueberryCat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBluyayogamer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBocchanVT" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBriannaKane" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBricky" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBrickyOrchid" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBrozime" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBuff00n" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBurnBxx" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageBwana" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCASTiELiX" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCGsKnackie" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCalamityDeath" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCaleyEmerald" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCanOfCraig" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCanalTenno" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCaptWalker" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCaptainTutu" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCarchara" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCasardis" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCephalonSquared" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCeratia" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChacytay" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChar" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChelestra" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChrisIsHD" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageChromaPrimePartner" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCleoNaturin" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCodoma" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCohhCarnage" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCohony" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageColdScar" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageColdTiger" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCommunityDiscord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageConclaveDiscord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageConfusedWarframe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCopyKavat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCptKim" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrazyBikerDude" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrestbear" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrowdi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageCrusader" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageD4NK3R" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDJTechlive" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDNexus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDadXGotXGame" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDadefuye" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDaiDaiKiri" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDanily" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDappaDanMan" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDarkSlayer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDarkfreack" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDasterCreations" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDatLoon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDayJoBo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDayTotalN3wb" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDebbysheen" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDeejayKnight" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDeepBlueBeard" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDentw" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDesRPG" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDestrohido" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDeuceTheGamer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDillyFrame" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDimitriVTwo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDisfusional" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDistantObserver" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageDramakins" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEdrick" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEduiy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElCanalDeRow" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElGrineerExiliado" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElNoraEleo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageElTioProd" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEliceGameplay" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEligibleMonster" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEmovj" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEmpyreanCap" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEndotti" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEsp4him" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEtainted" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageEterion" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageExtraCredits" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFR4GTP" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFRCommunityDiscord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFacelessBeanie" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFashionFrameIsEndgame" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFated2Perish" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFatefulYT" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFattShane" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFeelLikeAPlayer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFerreusDemon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFinlaena" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFloofyDwagon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFluffyMiracle" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFrancois" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFromThe70s" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFrostyNovaPrime" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageFrozenbawz" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGamingBitches" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGara" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGastel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGermanCommunityDiscord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGingy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGir8Tacos" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGlamShatterskull" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGlitchyGirl" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGoguma" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGoku" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGooperatives" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGorillaWolfGaming" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGriddark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGrimlockePrime" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageGrindHardSquad" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHappinessDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHarcosMagyarokWarframe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHomiInvocado" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHotsHomStories" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHunter" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHydroxate" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHynkardSector" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageHypercaptai" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIQ" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIkedo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIm7heClown" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInexpensiveGamer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInfernoTheFirelord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInfodiversao" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageInfraredMike" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIvorysMoon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageIwoply" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJ3ubbleboy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJamieVoiceOver" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJandoncom" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJayNeverwhere" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJessiThrower" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJoeyZero" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJoriale" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageJustPlayBP" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageK0yi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKacchi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKalon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKaoiji" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKavatsSchroedinger" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKengineer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKenshinWF" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKillerBarbie" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKingGothalion" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKingKongDonk" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKingWolby" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKirarahime" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKiwad" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKnightmareFrame" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKoreanCommunityDiscord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKr1ptonPlayer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKrashOmnis" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKretduy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageKyriosYuudai" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLadyNovita" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLadyTheLaddy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeDouble" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeamxp" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeoDoodling" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeonelGM" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLeyzarViewGaming" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLifeOfRio" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLifewater" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLightmicke" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLilLexi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLittleNavi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLluull" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLokKingMacho" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLordSaliak" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLordschaby" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLovinDaTacos" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLucianPlaysAllDay" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageLynxaria" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMCGamerCZ" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMCIK" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMCMonkeys" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMGLblaze" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMHBlacky" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMK3Gaming" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMakarimorph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMaomix" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMeCore" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMedusaCaptures" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMemeSage" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMissFwuffy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMjikThize" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMooha" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMozetas" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrBearGaming" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrMorgenstern" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrRoadBlock" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrSteelWar" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageMrWarframeGuy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNRDabears" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNeavo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNekrokrim" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNeoNess" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNoSympathyy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNononom" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageNyxxtv" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOOSIJ" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOddieowl" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOldDirtyDaz" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOldGamer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOmniVoice" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOriginalGamers" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOrpheusDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageOzku" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePammyJammy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePandaahhhhh" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePapaTLion" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePartner" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePartnerMug" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePartnerUpdated" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePhongFu" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePixelReboot" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePlagueDirector" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePokketNinja" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePorongo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePorphi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePostiTV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePrettyPoison" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePrimedAverage" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageProfessorBroman" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePunchL1ne" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePurkinje" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePurpleFlurp" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePyrah" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagePyrrhicSerenity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageQueenMisrule" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageQynchou" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRLCGaming" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRagey" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRagingTerror" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRahetalius" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRahny" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRainbowWaffles" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRandomSurge" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRavenZ" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRawSteelClan" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageReclaimJoey" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRedX" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageReddit" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRelentlessZen" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRelli" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRevengal" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageReyGanso" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRippz0r" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRitens" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRoyGaming" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRoyalPrat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRundas" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageRustyFin" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageS0lstep" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSabaiGuy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSabuuchi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSapmatic" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSarahTsang" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSaturnSixBarDiscord" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageScallion" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageScarletMoon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSealsdie" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSearyn" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSeleste" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSenastra" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSerafimPT" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSerganlkari" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShadowFoxx" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShanksy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSharlazard" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShenzhao" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSherpaRage" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageShulGaming" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSiejoUmbra" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSilentMashiko" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSillfix" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSixixgatsu" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSkillUp" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSlapsticklogic" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSlivarito" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSlycker" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSmashley" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSmoodie" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSn0wRC" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSp00nerism" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpaceWaifu" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpacebeastx" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpandy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSpiritualJedi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStallordD" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStormcrown" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStr8opticroyal" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStreamingDownUnder" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStrippin" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStrongArmy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageStudioCyen" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSummerYuko" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSummit1G" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSuperxinvader" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageSzczebrzeszyniarz" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTBGKaru" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTCN" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTVSBOH" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTavierCorsair" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTdefton" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTeawrex" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoChronicler" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoForever" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoGen" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTennoHelp" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTenshi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheDorTip" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheGamio" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheLadyEgo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheNextLevel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageThePandaNEight" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTheReaperHunter" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTinBears" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTioMario" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTioRamon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageToYou" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageToastedTV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTorkie" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageToxickToe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTrainsyTv" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTrashFrame" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTriburos" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTrysmj" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTwila" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTyFighter" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageTygastripe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageUncleCat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageUnrealYuki" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageUreiFen" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVGWFR" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVamppire" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVanthesque" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVarlinator" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVashCowaii" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVernoc" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVladislavaLynx" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVnorberto" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVoidFissureBR" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVoli" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVolkeris" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVoltTheHero" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageVorticoseline" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWDTortoise" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWalterDV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWanderbots" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeFR" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeFanChannel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeMadness" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeReliquary" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWarframeRunway" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWealWest" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWhiskeyCat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWidescreenJohn" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWobbzie" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageWoxli" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageX3lp" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageXandyPants" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageXiaRose" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageXxVampixx" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageYantzi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageYourLuckyClover" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZakguo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZanagoth" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZarionis" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZexiontat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZopney" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZotbot" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImageZxpfer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagedepths" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagenponesixtyone" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FanChannel/AvatarImagexOGxSkeezy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageBaruukPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageBaruukPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaraPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaraPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGarudaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGarudaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaussPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGaussPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGrendelPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageGrendelPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHarrowPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHarrowPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHildrynPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageHildrynPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageKhoraPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageKhoraPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageNidusPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageNidusPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageProteaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageProteaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageRevenantPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageRevenantPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageWispPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Primes/ImageWispPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearGroundI" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearGroundII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearGroundIII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearOperationI" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearOperationII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearOperationIII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearSpaceI" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearSpaceII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ScarletSpear/ImageScarletSpearSpaceIII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphFour" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphOne" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphThree" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphTwo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieExcalibur" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieFortuna" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKavat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKdrive" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieKubrow" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieNef" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieOrbVallis" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageGlyphCookieStalker" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Dethcube" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Grineer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Loid" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Lotus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Pumpkin" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2023LuaNights" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageYearOfTheDragonGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CheshireKavat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CreepyClem" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019FrankenCorpus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhostChibiWisp" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhoulGrave" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GrendelTreat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019SlimeLoki" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019TrickOrBalas" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019Werefested" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Sony/AvatarImageOkinaGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/CitrineActionGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageBaruukDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCalibanDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageCitrineDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageDagathDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGaussDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageGyreDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageHildrynDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageMesaDeluxeB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePagemasterDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImagePaxDuviricusDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageProteaDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageQorvexDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageRhinoDeluxeTwo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageSevagothDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltBBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltBDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltCBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltCDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltDBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxAltDDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageStyanaxDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageTitaniaDeluxeII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageValkyrDeluxeB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVoltDeluxeB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageVorunaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageWispDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/ImageYareliDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Warframes/VorunaActionGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageAlbrechtHatCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageAshAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeEmber" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeKulervo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeMesa" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeOctavia" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeRhino" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeStynax" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBadgeXaku" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBansheeAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBaroIcon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBaroTwoIcon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBaruukDoanStyle" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBonewidowAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageBuriedDebts" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageChatModerator" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageClemKawaii" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityCavaleroGraffiti" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityChroma" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityClemComic" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityEquinox" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityKullervo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityLittleDuckGraffiti" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityMotherGraffiti" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityRevenant" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumFrost" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumKubrow" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumVauban" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumVulpaphyla" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTennobaumZephyr" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCommunityTitania" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageConqueraGlyphUpdated" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorAGGP" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorDKDiamantes" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorDanieltheDemon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorFlareEyes" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorH3dsh0t" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorIflynn" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorLokenPlays" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorLunskee" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorMogamu" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorN00blShowtek" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorOriginalWickedfun" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorQuiteShallow" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorSnowLit" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorTacticalPotato" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorTanchan" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorVVhiteAngel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorWgrates" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageCreatorXenogelion" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDanteGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDrakeRifle" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageEmberAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionNintendo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionProto" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionSony" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburActionXbox" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburChibi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageExcaliburMobile" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageFrostAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGamingCommunityExpo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCarolingOctavia" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicA" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicC" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicD" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicE" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphComicF" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieBoot" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieCorpus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieDethcube" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieGrineer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieLotus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphCookieVoidKey" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDELogo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerHannahIvara" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerHannahUmbra" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerKedKela" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerKedLotus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerLigerNezha" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerLigerNidus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerSteelsuitNidus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerSteelsuitOberon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerTreshClem" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerTreshLotus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersAtlas" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersEmber" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersHek" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersMirage" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersRegor" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphDesignerVentersVolt" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Bird" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Drone" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Gate" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Mech" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphErisTennocon2020Monster" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphFestiveFloof" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphJingleKavat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphJollyGrendel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphKiradien" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLaborAward" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLegendaryCelestics" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLegendaryQuasars" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphLocoCrazy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMAWEli" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedAladV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedExcalibur" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedFrostPrime" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedMirage" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedNefAnyo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedNyxPrime" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedOberon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMashedStalker" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMattaus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemeGreedyMilk" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemePotato" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemeProdman" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMemeShorts" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyA" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyC" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyD" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyE" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyF" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyG" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyH" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyI" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphMuckneyJ" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphSkiGauss" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphSnowGlobeFrost" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphStarterPackA" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphSurpriseIvara" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGlyphYareliComic" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageGrineerQueensVed" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2020A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2020B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2020C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHarrowAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHildrynPrideCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHydroidFlag" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageInarosScarabs" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageInktober" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem5" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem6" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem7" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem8" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageIvaraAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKavatEnamel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowEnamel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowKawaii1" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowKawaii2" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageKubrowKawaii3" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLavosAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLokiAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLokiActionTwitch" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLokiChibi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLotusGuide" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLotusKawaii" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyAtlas" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyHildryn" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyKavat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageLowPolyKubrow" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMagAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMagChibi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageManInTheWallCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMesaEnamel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackBlast" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackCold" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackCorrosive" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackCritical" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackDamage" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackElectricity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackFire" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackGas" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackMagnetic" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackRadiation" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackToxin" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageModPackViral" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageMovember" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNekrosAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNekrosCalaca" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNoraNightA" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNoraNightB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNovaAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageNyxAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOctaviaAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOctaviaActionTwitch" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOroKitty" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageOroKittyEnamel" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePrideCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePrideGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageProteaAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageRevenantAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageRhinoAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageRhinoChibi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageSarynAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageSevagothAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageStarDaysCervulitePat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageStarDaysQorvexHeart" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageStarterPackLotus" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTennoTranslator" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTennoVIP" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTeshinVed" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageThreshconeKawaii" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTitaniaButterflies" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageTrinityAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageUmbraAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageUnrealTournament" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2017E" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Alad" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Clem" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Key" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2020Kuva" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Deimos" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Gauss" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Helminth" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Lavos" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2021Mech" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2022Grineer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2022Ordis" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2022Yareli" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2023Gyre" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2023Kavat" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValentine2023Ticker" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageValkyrAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVaubanAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphA" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphC" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphD" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVitruvianGlyphE" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVoidrigAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVoltAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageVorKawaii" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2016D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017E" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2017F" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinter2018E" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016E" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016F" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageWinterB2016G" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageXakuAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageYareliAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageZarimanLogo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageZarimanSupporterPackGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/CNY2023RabbitGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/CherryTreeGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ChineseNewYear2021Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Community10YearAnniversaryGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Community10YearOrdisGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/DeimosRevolverGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/DogDaysKavatGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/DogDaysKubrowGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/FireIceCompanionGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Gamification2019Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/GuardianCon2018Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/HeirloomGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Image2019Twitter" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshDeluxeII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshLocustBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshLocustDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshScorpionBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAshScorpionDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAtlasDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAtlasPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageAtlasPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeChorusBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeChorusDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheePrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheePrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeReverbBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBansheeReverbDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBaroKiteer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBombastineCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltTwoBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerAltTwoDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrawlerDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageBrokenFrameDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCalibanInAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCephalonCy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCephalonSimaris" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaAmaruBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaAmaruDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDracBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaDracDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageChromaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022A" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022B" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022C" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022D" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusAladV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusCrewman" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusJackal" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusMoa" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusNefAnyo" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageCorpusOsprey" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageDeadlockProtocolA" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageDeadlockProtocolB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageDexAnniversary" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEightYearAnniversary" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageElevenYearAnniversary" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberBackdraftBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberBackdraftDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberDeluxeII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPheonixBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPheonixDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEmberPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxSolsticeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageEquinoxSolsticeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburAvalonBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburAvalonDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburMordredBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburMordredDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPendragonBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPendragonDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburProto" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraAltTwoBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraAltTwoDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageExcaliburUmbraDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostAuroraBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostAuroraDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostSquallBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageFrostSquallDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaraDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaraPrimeCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaAltHelmBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaAltHelmDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGarudaDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGaussVED" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGengzi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassAltHelmBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassAltHelmDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGlassDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGraeaeLimboBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGraeaeLimboDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrendelVED" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerBallista" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerCaptainVor" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionBeastMaster" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionCharger" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionEngineer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionGrunt" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionHealer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionHellion" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionSniper" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerChampionTank" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerKelaDeThaym" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerLancer" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerRoller" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGrineerSargusRuk" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGunslingerDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageGyreInAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHarrowDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHydroidDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHydroidPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageHydroidPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosMarsGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageInarosPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIronFrameDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIvaraDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIvaraPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageIvaraPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraAltHelmBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraAltHelmDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageKhoraDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLavosDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboAristeasBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboAristeasDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLimboPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEnigmaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEnigmaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEssenceBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiEssenceDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiSwindleBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLokiSwindleDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageLotusDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagCoilBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagCoilDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagGaussBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagGaussDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMagPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaCortesBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaCortesDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMesaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageHarlequinBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageHarlequinDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMirageInAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMiragePrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMiragePrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingMacakBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageMonkeyKingMacakDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosAraknidBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosAraknidDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosShroudBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNekrosShroudDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAlt2Bright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAlt2Dark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNezhaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusDeluxeMutated" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusPrionBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNidusPrionDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNineYearAnniversary" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaDeluxeII" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaQuantumBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaQuantumDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaSlipstreamBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNovaSlipstreamDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxMenticideBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxMenticideDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxNemesis" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxVespaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageNyxVespaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonMarkhorBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonMarkhorDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOberonPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaCadenzaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaCadenzaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageOctaviaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistAltHelmBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistAltHelmDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePacifistDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateKetosBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateKetosDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateTritonBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePirateTritonDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAlt2HelmBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAlt2HelmDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAltHelmBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestAltHelmDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImagePriestDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltTwoBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaAltTwoDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageProteaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRailjackInAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerLoxleyBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerLoxleyDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerZirastraBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRangerZirastraDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantAltHelmBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantAltHelmDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRevenantDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoThrakBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoThrakDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoVanguardBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageRhinoVanguardDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanAnubisBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanAnubisDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanCanopicBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanCanopicDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSandmanDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynChloraBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynChloraDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynHemlockBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynHemlockDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSarynPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageStyanaxInAction" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateAH" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateCS" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateNL" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicatePS" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateRV" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageSyndicateSM" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTenYearAnniversary" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenDynline" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenEpsilon" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenFabpsi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenInkary" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenLocoCrazy" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTennogenSharksteeth" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTitaniaPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperGambitBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperGambitDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperSoldierBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrapperSoldierDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTravelinMirageBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTravelinMirageDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityAuraBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityAuraDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityMeridianBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityMeridianDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageTrinityPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValaCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrBastetBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrBastetDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrKaraBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrKaraDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageValkyrPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVaubanDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVaubanPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVaubanPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPulseBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltPulseDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltStormBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageVoltStormDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispChibi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWispDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWolfBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWolfDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithAltBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithAltDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWraithDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongDeluxeVED" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageWukongPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageXakuDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageXakuDeluxeKintsugi" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageYareliCommunity" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageYouTubeCorpusA" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageYouTubeCorpusB" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrCierzoBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrCierzoDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrDeluxe" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrPrimeBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrPrimeDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrTenguBright" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/ImageZephyrTenguDark" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/KahlCommunityGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/KahlSupporterPackGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/KalymosGrimoireGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Login650Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Login750Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Login950Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/MesaHighNoonGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/NarmerEyeGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/NewWar2021Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemFassGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemJahuGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemKhraGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemLohkGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemNetraGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemRisGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemVomeGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/RequiemXataGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/SavePopcornGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek1Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek2Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek3Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek4Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TenYearAnniversaryWeek5Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2017Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2018Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2019Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2019SimarisGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2020Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2020SimarisGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2021Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2021MerchGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2022Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2022MerchGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023BestInShowAwardGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023BestPetAwardGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023BestWorkmanshipAwardGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023CutenessAwardGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023FunniestAwardGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2023MerchGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TennoCon2024Glyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TwinSnakesGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/TwitchNecraloidGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20DaughterGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20FatherGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20GrandmaGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20MotherGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20OtakGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/XMas20SonGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021GrinoalieGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021MaggotGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021MoaGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2021NutcorpusGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2023BombastineGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/Xmas2023ThraxGlyph" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichBase" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichElectric" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichFire" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichIce" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichMag" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichPoison" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/Nemesis/ColourPickerKuvaLichTrickster" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerAccessibilityItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerAnniversaryEleven" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerBastilleItem" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerBeach" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerCavia" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerCorpusItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDaybreakItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDefaultsItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDefaultsItemB" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDefaultsItemC" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDiscordItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerDojoItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerEasterItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerEximus" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerFireItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerGammaItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerGrineerItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemB" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHeirloom" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerIceItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerInfestedItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItemB" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItemC" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItemD" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerJadeItem" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerKalymos" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerKiteerItemB" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerLotus" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerMarshlandsItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerNarmer" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerOrokin" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPS4ItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrideItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrideItemB" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrimeDayItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRWBItem" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRollers" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerShamrockItem" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerSwitchItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTMobileItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTransmissionItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwilightItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwitchBItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwitchItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerTwitchItemC" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerValItemA" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerValItemB" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/ExtraOperatorSkinColors" }, - { "ItemType": "/Lotus/Types/StoreItems/SuitCustomizations/NinjaColourPickerItem" }, - { "ItemType": "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Anima/UnlockAnimaNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Asp/UnlockAspAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Asp/UnlockAspNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Bard/UnlockBardAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Bard/UnlockBardNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Dagath/UnlockDagathAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Dagath/UnlockDagathNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Decree/UnlockDecreeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Decree/UnlockDecreeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Dragon/UnlockChromaAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Dragon/UnlockChromaNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Ember/UnlockEmberAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Ember/UnlockEmberNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Fairy/UnlockFairyAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Fairy/UnlockFairyNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Frost/UnlockFrostAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Frost/UnlockFrostNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Geode/UnlockGeodeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Geode/UnlockGeodeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Glass/UnlockGlassAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Glass/UnlockGlassNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Gyre/UnlockGyreAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Gyre/UnlockGyreNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Jade/UnlockJadeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Jade/UnlockJadeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Khora/UnlockKhoraNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/GrineerShip/LisetGrineerShipDefault" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeDefault" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeGrineerQueens" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinIfrit" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinNekrognos" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/Gyroscope/SWXiphosLilieaeSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipDefault" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinA" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinB" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinC" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinD" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ConquestHoodOrnament" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/DexLisetSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/InarosLisetSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkyDefault" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinDeluxe" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinGrineerQueens" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinInaros" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinPrimeTrader" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSound" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSplash" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinStalker" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinCamo" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinDefault" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinExotic" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinGrineerQueens" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinHalloween" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinInaros" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinIridos" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinNautilus" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinPrimeTrader" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemB" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemC" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemD" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemDefault" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinGrineerQueens" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinHalloween" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinJade" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinKaboom" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinKotora" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinObsidian" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinPrime" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinRelayEvent" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROne" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROneHellkite" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinSWRThreeMaltzurOculus" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinTwitchPrime" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/LisetSkinVoidTrader" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/MITWHoodOrnamentA" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/MaduraiHoodOrnament" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/MasteryHoodOrnament" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/NaramonHoodOrnament" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/NoraShipDefault" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWHerulystLisetSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWLilieaeSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWMantisVammatarSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWMithraLisetSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWProtegeLisetSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/SWVammatarLisetSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/UnairuHoodOrnament" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/VazarinHoodOrnament" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZenurikHoodOrnament" }, - { "ItemType": "/Lotus/Upgrades/Skins/Liset/ZephyrDeluxeShipSkin" }, - { "ItemType": "/Lotus/Upgrades/Skins/Loki/UnlockLokiAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Loki/UnlockLokiNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Mag/UnlockMagAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Mag/UnlockMagNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Magician/UnlockMagicianAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Magician/UnlockMagicianNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Necro/UnlockNecroAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Necro/UnlockNecroNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Priest/UnlockPriestAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Priest/UnlockPriestNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Promo/Twitch/LisetSkinTwitch" }, - { "ItemType": "/Lotus/Upgrades/Skins/Ranger/UnlockRangerAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Ranger/UnlockRangerNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Agile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Noble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Runner/UnlockRunnerAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Runner/UnlockRunnerNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Sentient/UnlockSentientAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Sentient/UnlockSentientNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Tengu/UnlockTenguNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Volt/UnlockVoltAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Volt/UnlockVoltNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Wisp/UnlockWispAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Wisp/UnlockWispNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Wraith/UnlockWraithAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Wraith/UnlockWraithNoble" }, - { "ItemType": "/Lotus/Upgrades/Skins/Yareli/UnlockYareliAgile" }, - { "ItemType": "/Lotus/Upgrades/Skins/Yareli/UnlockYareliNoble" } -] diff --git a/static/fixed_responses/allMissions.json b/static/fixed_responses/allMissions.json index f158de4a..74b18f42 100644 --- a/static/fixed_responses/allMissions.json +++ b/static/fixed_responses/allMissions.json @@ -1249,6 +1249,11 @@ "Tier": 1, "Tag": "SolNode721" }, + { + "Completes": 1, + "Tier": 1, + "Tag": "SolNode723" + }, { "Completes": 1, "Tier": 1, @@ -1516,6 +1521,7 @@ }, { "Completes": 1, + "Tier": 1, "Tag": "UranusToNeptuneJunction" }, { diff --git a/static/fixed_responses/allQuestKeys.json b/static/fixed_responses/allQuestKeys.json deleted file mode 100644 index 370197b9..00000000 --- a/static/fixed_responses/allQuestKeys.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain", - "/Lotus/Types/Keys/GlassQuest/GlassQuestKeyChain", - "/Lotus/Types/Keys/SolarisQuest/SolarisQuestKeyChain", - "/Lotus/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain", - "/Lotus/Types/Keys/KubrowQuest/KubrowQuestKeyChain", - "/Lotus/Types/Keys/ArchwingQuest/ArchwingQuestKeyChain", - "/Lotus/Types/Keys/GetClemQuest/GetClemQuestKeyChain", - "/Lotus/Types/Keys/SpyQuestKeyChain/SpyQuestKeyChain", - "/Lotus/Types/Keys/DragonQuest/DragonQuestKeyChain", - "/Lotus/Types/Keys/LimboQuest/LimboQuestKeyChain", - "/Lotus/Types/Keys/SentientQuest/SentientQuestKeyChain", - "/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain", - "/Lotus/Types/Keys/MirageQuest/MirageQuestKeyChain", - "/Lotus/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain", - "/Lotus/Types/Keys/InfestedAladVQuest/InfestedAladVQuestKeyChain", - "/Lotus/Types/Keys/GolemQuest/GolemQuestKeyChainItem", - "/Lotus/Types/Keys/BardQuest/BardQuestKeyChain", - "/Lotus/Types/Keys/FairyQuest/FairyQuestKeyChain", - "/Lotus/Types/Keys/IndexQuest/IndexQuestKeyChain", - "/Lotus/Types/Keys/PriestFrameQuest/PriestQuestKeyChain", - "/Lotus/Types/Keys/ApostasyQuest/ApostasyKeyChain", - "/Lotus/Types/Keys/SacrificeQuest/SacrificeQuestKeyChain", - "/Lotus/Types/Keys/ChimeraQuest/ChimeraKeyChain", - "/Lotus/Types/Keys/MummyQuest/MummyQuestKeyChain", - "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestKeyChain", - "/Lotus/Types/Keys/NewWarIntroQuest/NewWarIntroKeyChain", - "/Lotus/Types/Keys/ProteaQuest/ProteaQuestKeyChain", - "/Lotus/Types/Keys/RevenantQuest/RevenantQuestKeyChain", - "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain", - "/Lotus/Types/Keys/WraithQuest/WraithQuestKeyChain", - "/Lotus/Types/Keys/YareliQuest/YareliQuestKeyChain", - "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain", - "/Lotus/Types/Keys/ZarimanQuest/ZarimanQuestKeyChain", - "/Lotus/Types/Keys/KahlQuest/KahlQuestKeyChain", - "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain", - "/Lotus/Types/Keys/EntratiLab/EntratiQuestKeyChain" -] diff --git a/static/fixed_responses/allShipDecorations.json b/static/fixed_responses/allShipDecorations.json deleted file mode 100644 index ec5a2ca9..00000000 --- a/static/fixed_responses/allShipDecorations.json +++ /dev/null @@ -1,1011 +0,0 @@ -[ - { "ItemCount": 1, "ItemType": "/Lotus/Objects/Tenno/Props/TnoLisetTextProjector" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/7thAnniversaryPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/8thAnniversaryPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteControlBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteDuellistBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteHeavyBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteRogueBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AcolyteStrikerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AladVBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AlbrechtPortrait" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AmbulasBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArbitersHexisSyndicateOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArbitersRewardStatue" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Arcade" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloFemaleFollowerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloHealingLamp" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ArloMaleFollowerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AshBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AshPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AtlasBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/AtlasPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BansheeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BansheePrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationG" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroKiTeerDecorationH" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroPedestal" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaroPlanter" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukAltBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukPattern" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BaruukPrimePattern" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BekranZaftBucketBroom" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BombastineBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BoredTennoPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothCommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothCommonFishBTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothRareBootTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothRareFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothUncommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/BothUncommonFishBTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamAHeavyBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamARifleBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamASkateBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamAZanukaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBDisruptorBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBHyenaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBRaptorBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamBRiotMoaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCDeceptionBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCHackerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCMoaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamCStealthBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDBusterABobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDBusterBBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDBusterCBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CCTeamDOspreyBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CNY2021Poster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CalibanBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CephalonSudaSyndicateOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChildDrawingG" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChromaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ChromaPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ClemBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Community10YearDasterDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Community10YearRoyalPratDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveHeartOroOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveOroMoonOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveOroOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ConclaveOroSunOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Conquera2021Deco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemAlloyDrum" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemArgonPegmatite" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemCellArray" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemCircuitryLockbox" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemFerriteDeposit" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemGalliumDeposit" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemMorphicsStabilizer" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemNeuropticMass" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemPlastidCarapace" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemPolymerCase" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemRoboticsLockbox" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemRubedoFormation" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemSalvage" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemSensorArray" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ContainerDecoItemSporeCulture" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefG" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefH" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefI" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefJ" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusGreedReliefK" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropGreedCoinBlack" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropGreedCoinBlue" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropGreedCoinGold" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/CorpusShip/LisetPropHandShrine" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DarvoBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayCommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayCommonFishBTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayCommonFishCTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayUncommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DayUncommonFishBTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/DaughterTokenShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/DeimosHalloweenShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FatherTokenShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyHybridRareA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyHybridUncommonA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyHybridUncommonB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedCommonE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedRareA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyInfestedUncommonA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyOrokinLegendaryA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyOrokinRareA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/FishTrophyOrokinUncommonA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/GrandmotherTokenShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropEntratiLamp" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedCrate" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedCystC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedCystD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedPlantA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedPlantC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropInfestedPlantE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropOrokinBeamBase" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropOrokinBlock" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/LisetPropOrokinFloorLight" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/MotherTokenShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/OtakTokenShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Deimos/SonTokenShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DominusThraxStatueDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DomsFinalDrink" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxBarrelLarge" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxBarrelSmall" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxContainerA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxContainerB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxContainerC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterHangingPot" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterHangingPotB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterHangingPotC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DUVxPlanterPotE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DominitiusThraxThrone" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxAbacusSmallA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxBirdBath" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxCemeteryMonumentA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxChairB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxChairC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxHayBaleSmall" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxIntPropStoolA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxIntPropTableA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxPodium" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxScaleA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxSingleBedA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxStandingChangeScreen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/Duviri2ndRelease/DUVxTable2mB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/DuviriDragonDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/NightwaveDuviriHeroDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Duviri/PuzzleSphinxOwl" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DuviriBookQuestReward" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/DuviriCommunityPortrait" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EliteAlertShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmberBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmberPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmberVermillionBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EmpyreanPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabChairA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabChairB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabChaiseLounge" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightChandelierA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightChandelierB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightChandelierD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLightWallCandleA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabLoveSeat" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabMachineB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabMachineD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabMachineJ" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabOttoman" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabStool" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/ORKxLabVesselEyeDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EntratiLabs/PagemasterOwl" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxCombinedBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxDayBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxNightBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxPrimeDayBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EquinoxPrimeNightBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/EraHypnosisPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ErraBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/CitrineComboCrystalShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/NeonPrideWings" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/TickerValentineWings" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFChargerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFEngineerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFGruntBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFHealerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFHeavyBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFHellionBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloof" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofBeach" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofMorning" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofRainbow" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFRollerFloofRucksack" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFSniperBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Events/WFTankBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburArchwingBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburDexBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburJadeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburObsidianAzuraBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburObsidianBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburOpalBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburPrismaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburProtoBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExcaliburUmbraBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ExplorationPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FlappyZephyrPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/MaduraiPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/NaramonPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/UnairuPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/VazarinPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Focus/ZenurikPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrameFighterPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostHarkaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/FrostSnowdayBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Gamification2019Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaraBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaraPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GarudaPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GarvLatroxPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaussBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaussPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GaussTowerOfAltraDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GlassmakerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GlyphPictureFrame" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrendelBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrendelOrokinDishSet" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrendelPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrimoireAltar" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsBeastMasterBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsChargerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsEngineerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsGruntBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsHealerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsHeavyBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsHellionBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsSniperBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerChampionsTankBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerExcavationBossBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerHyekkaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineAlt2DesertBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineAltArcticBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineAltDesertBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineArcticBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerMarineDesertBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/GrineerNightwatchMarineBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HarrowBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HarrowPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HarrowQuestKeyOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HeartOfDeimosAlbumCoverPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HildrynPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HydroidBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/HydroidPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosCoffin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InarosSarcophagusBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IndexAutograph" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InfestationPrimeShipMaggot" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/InfestationShipMaggot" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ItzalArchwingBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IvaraBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IvaraObsidianBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/IvaraPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JackONaughtBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JackalBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/JavisExperimentsPosterD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KavatBust" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KelaDeThaymBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KhoraBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KhoraPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KineticSiphonTrapLiset" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBedD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowBust" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowKavatLowPolyPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KubrowToyD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/KuvaMetaBallOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LavosDeviceDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/IvaraLeverianPovisRecordsDecoration" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralCycle" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralFenrus" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralMezzik" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralShyur" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Leverian/LisetPropMuralVonnel" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LimboBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LimboPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropAntenna" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropBallasSwordSheath" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusJug" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusPigmentBasketLarge" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusPigmentBasketSmall" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusStallSignA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusStallSignB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusStallSignC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusVegBasketA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusVegBasketB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCetusVegBasketC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDrone" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneBaro" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneBeachcomber" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorFive" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorFour" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorOne" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorThree" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneColorTwo" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneDuviri" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneInfested" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneTenno" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneTwitch" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCleaningDroneYareli" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCooler" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCorpusBasilisk" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCorpusHarpi" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropCorpusWeaver" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropDotDMandolin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropEidolonShard" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropFishingBoot" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGlassTreasureBox" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGradientMandolin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerCrewship" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerCutter" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerFlak" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGrineerTaktis" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropGyrePulseDecoration" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropHardDrive" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropHologram" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropLotusMandolin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMandolin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMandolinGrineer" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMandolinSentient" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropMultiport" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropNarmerMandolin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropNecraMechDrone" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropNoraNightShip" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOldLocker" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOperatorHoodDisplayBlack" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOperatorHoodDisplayDefault" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOperatorHoodDisplayGrey" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOroOperatorSwitch" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOroSigilMarker" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOroSpotlight" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOrokinMaggot" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstArtisanBulbs" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstBirdCage" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstBlubberPileB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstHaulingBalloonD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstLanternGround" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRodentCage" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugBaro" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugBlue" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugGreen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugOrange" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugRed" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstRugYellow" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropOstStoneFish" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropPillar" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropReactor" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSUPosters" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSentientCore" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinDuviri" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinDuviriErsatz" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinPrime" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinTwitch" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinZariman" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropShawzinZarimanVoid" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSimarisOfferings" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropSimarisResearch" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropStep" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropStyanaxSpearShieldDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueADeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueBDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueCDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetPropWolfHeadStatueDDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LisetTickerSign" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LoidPortrait" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LokiBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LokiPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/LokiVervBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MacheteManicBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MagBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MagPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MagnoliaTree" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank00Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank01Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank02Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank03Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank04Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank05Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank06Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank07Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank08Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank09Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank10Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank11Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank12Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank13Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank14Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank15Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank16Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank17Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank18Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank19Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank20Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank21Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank22Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank23Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank24Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank25Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank26Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank27Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank28Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank29Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank30Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank31Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank32Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank33Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MasteryTrophies/Rank34Trophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MesaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MesaPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MirageBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MiragePrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/MummyQuestVessel" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NekrosBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NekrosPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewLokaSyndicateOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropBallasStaff" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinBench" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinGarbageBin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinMattress" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinPillow" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinStool" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropCabinTable" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropFamilyPortrait" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarBag" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarCube" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarFoodRack" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarPlantA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarPlantB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarPlantC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NewWar/LisetPropZarTechTablet" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NezhaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NezhaEtchingsTablets" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NezhaPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NidusBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NidusPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NightLegendaryFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NightRareFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NightRareFishBTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Nightwave/GlassmakerShipDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraNightBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraSeasonFourOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraSeasonThreeOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraSeasonTwoOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NoraWolfOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NovaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NovaPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NyxBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/NyxPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OberonBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OberonPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OctaviaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OctaviaPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OculystStatue" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalMadurai" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalNaramon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalUnairu" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalVazarin" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Operator/SchoolDecalZenurik" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrame" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameBaro" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameG" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameH" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrbiterPictureFrameI" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OrokinFelisBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstHaiLukBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstHokBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstKonzuBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OstronHeadStatue" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/OwlOrdisStatue" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ParazonPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PedistalPrime" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PerrinSequenceSyndicateOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyCeresBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyDeimosBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyDerelictBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyDuviriBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyEarthBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyErisBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyEuropaBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyJupiterBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyKuvaFortressBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyLuaBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyMarsBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyMercuryBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyNeptuneBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyPhobosBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyPlutoBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophySaturnBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophySednaBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyUranusBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyVenusBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyVoidBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PlanetTrophies/PlanetTrophyZarimanBronze" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/BirdPlush" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/DeerPlush" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedCritterCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedCritterRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedCritterUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedKdriveCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedKdriveRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedKdriveUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMaggotCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMaggotRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMaggotUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMergooCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMergooRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedMergooUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedNexiferaCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedNexiferaRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedNexiferaUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedPredatorCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedPredatorRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedPredatorUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedZongroCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedZongroRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyInfestedZongroUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushyMoonMonsterCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Deimos/PlushySunMonsterCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/FishPlush" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/GaussPrimePlush" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Plushy2021QTCC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/Plushy2022QTCC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyArthur" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBeachKavat" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBolarolaCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBolarolaRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyBolarolaUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCarnivalKubrow" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCondrocCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCondrocRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyCondrocUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyDesertSkate" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyHorrasqueCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyHorrasqueRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyHorrasqueUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKoala" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKuakaCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKuakaRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKuakaUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonRareDirty" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyKubrodonUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2023Rabbit" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLNY2024Dragon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyLotus" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMergooCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMergooRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMergooUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyMorningKavat" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyOrdis" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyPobbersUncommonDirty" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyRucksackKubrow" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushySawgawCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushySawgawRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushySawgawUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyStoverCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyStoverRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyStoverUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumper" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumperLarge" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumperMedium" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyThumperMediumDirty" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTicker" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyTiger" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVampireKavatCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVampireKavatRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVampireKavatUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkCommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkQTCC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkRare" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Plushies/PlushyVirminkUncommon" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/PopcornBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Pride2023Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RedVeilSyndicateOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RelayEmberBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RelayHydroidBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemAlloyPlate" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemArgonCrystal" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemCetusWispTwitch" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemCircuits" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemControlModule" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemFerrite" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemGallium" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemIradite" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemMorphics" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemNanoSpore" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemNeuralSensor" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemNeurodes" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemOrokinCell" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemPlastids" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemPolymerBundle" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemRubedo" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemSalvage" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ResourceDecoItemVitusEssence" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RevenantPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoDexBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoJadeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/RhinoPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SargusRukBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SarynBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SarynPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ScarletSpearAsteroidsDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ScarletSpearPlanetDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SentientMeleeWarriorBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SentientWarriorBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ShawzinPlayableBase" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/StalkerBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/SteelMeridianSyndicateOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/StyanaxDeluxeSpearDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TNWKahlBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TNWTeshinBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TNWVesoBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCard2021Tennotober" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCard2022Tennotober" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCard2023Tennotober" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardAsh" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardAtlas" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardCaliban" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardCitrine" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardDagath" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardDante" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardGauss" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardGrendel" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardGyre" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardIvara" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardLavos" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardNezha" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardNova" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardSevagoth" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardStyanax" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConG" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConH" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConI" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennoConJ" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardTennotober" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardVoruna" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TarotCardYareli" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TeaSet" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021BallasPortrait" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBaseTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBestInShowTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBestPetTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayBestWorkmanshipTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayFunniestTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021CosplayTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2021MerchDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBaseTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBestInShowTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBestPetTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayBestWorkmanshipTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayFunniestTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022CosplayTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022MerchDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2022OrokinPortrait" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoCon2023SoundtrackADisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoGhostTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoMoonTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoMountainTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoShadowTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoConDojoStormTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TennoPlanterF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2017Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018PlanterA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018PlanterB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2018PlanterC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2019Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2019SimarisDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2020Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2020SimarisDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2023Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2023SoundtrackBDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Tennocon2024Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TeshinBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TeshinBust" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ThanoMechStatue" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TheLotusBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TitaniaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TitaniaPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TrinityBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TrinityPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/TylRegorBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/UmbraDaxPortrait" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/UmbraPedestal" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ValkyrBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ValkyrPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VaubanBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VaubanPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VentKidBoardBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/ClemTennobaumDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/Conquera2023CommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusBothUncommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusCoolCommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusCoolUncommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusWarmCommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusWarmCommonFishBTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CorpusWarmUncommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/CrewmanBootTrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/OrokinBothLegendaryFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/OrokinBothRareFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/OrokinCoolRareFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/Pride2024Display" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/PrideCommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUBookAOpen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUContainerCrate" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUCoolantPodA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUFoodBox" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUFoodCans" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUFoodSet" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUSupplyCartA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUSupplyCartB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUSupplyRack" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTechToolD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUToolBox" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUToolBoxLarge" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SUTruckSmall" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisBothCommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisCoolCommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisCoolUncommonFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisPosterG" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/SolarisWarmRareFishATrophy" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/StyanaxCommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintLotusDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintOperatorDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintTeshinDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TNWGlintUmbraDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TheNewWarKahlCommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TheNewWarTeshinCommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/TheNewWarVesoCommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/ValaParvosCommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidBooster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterG" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterH" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterI" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterJ" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterK" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterL" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterM" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterN" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterO" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VentKidPosterP" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/VenusBountyTrap" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Venus/YareliCommunityDisplay" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/ArachnoidCamperAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/ArachnoidCamperTerraAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/CrewmanAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/GrineerAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/RopalolystAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/TeralystAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/TeralystBigAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Enemies/TeralystRainAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Warframes/ArchwingAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/Vignettes/Warframes/WarframeAFItem" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoidPlumeAOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoidPlumeBOrnament" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoltBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VoltPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/VorBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavat" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatGold" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WeGame/LuckyKavatWhite" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WispPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WitWSupporterPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WolfBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WraithQuestRewardDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WukongBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WukongPrimeBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/WyrmiusPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/XakuPotF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliAltCoverPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliComicCoverPoster" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliEffectDeco" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliMerulinaBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/YareliQuestComic" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxCeilingLightA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxCineCabinTableA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxGlobeLightOrb" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxGlobeLightOrbJustOrb" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxGlowStickLightA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxHydroPlantStationA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxHydroponicsDoor" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxLunaroCourtBannerLargeA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxLunaroCourtBannerMediumA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxParkSignMapA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPortraitFrame" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPortraitFrameAlbrecht" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPortraitFrameFemale" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpBannerFloorA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpBannerFloorB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpBarrelPlastic" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAa" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAb" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAc" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAd" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAe" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAf" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAg" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAh" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpClassRoomPostersAi" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateLargeA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateLargeAOpen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateLargeAOpenTop" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumAOpen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumAOpenTop" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumBOpen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumBOpenTop" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumCOpen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumCOpenTop" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateMediumDEmpty" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateSmallB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumAOpen" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumAOpenTop" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateStackingMediumC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateTankMediumA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCrateTankMediumB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpCubeStationary" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpDrinkDispenser" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpEngineGeneratorA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpEngineGeneratorALight" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFloatingGlobe" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFloatingGlobeBase" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFloorSealPadA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodCanA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodCanB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodDrinkA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodDrinkB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodDrinkC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodKnifeA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodPouchA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodSpoonA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFoodTrayA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA60A" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA60B" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA90A" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchA90B" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchASingle" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB20A" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB60A" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB60B" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB90A" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureBenchB90B" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureChairA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureClassRoomDeskA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerLongA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerLongB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerShortA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureGroundLockerShortB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureTableA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerLongA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerSmallA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerSmallB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerTallA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpFurnitureWallLockerTallB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpGarbageBinB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHallwayCenterDivideA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHallwayCenterDivideAPannelA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHangingPlanets" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpHangingPlanetsB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenBoiler" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenFoodRationE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceD" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceE" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscApplianceF" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMiscTrayA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenMixer" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenPanA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenSaladSpinner" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpKitchenSterilizer" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpLabSetA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpLabSetB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpLabSetC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpPlanterClipOnSmlA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpPlanterClipOnSmlAFoliageB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpShoes" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpStatuePlinthA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpToolBoxStandingNew" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpWoodPanelWallSingleA16mA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpWoodPanelWallSingleEndCapA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxPrpWoodPanelWallSingleEndCapB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueChildHeroicA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueChildHeroicB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueFemaleHeroicA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicDrummerA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueMaleHeroicKneelA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatueOrokinB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxStatuePlatformA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxTrophyA" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxTrophyB" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZarimanApartment/ZARxTrophyC" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZealoidPrelateBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZephyrBobbleHead" }, - { "ItemCount": 1, "ItemType": "/Lotus/Types/Items/ShipDecos/ZephyrPrimeBobbleHead" } -] diff --git a/static/fixed_responses/allSkins.json b/static/fixed_responses/allSkins.json deleted file mode 100644 index 28c4a9c8..00000000 --- a/static/fixed_responses/allSkins.json +++ /dev/null @@ -1,4031 +0,0 @@ -[ - "/Lotus/Upgrades/Skins/Alchemist/AlchemistAgileAnims", - "/Lotus/Upgrades/Skins/Alchemist/AlchemistAltHelmet", - "/Lotus/Upgrades/Skins/Alchemist/AlchemistHelmet", - "/Lotus/Upgrades/Skins/Alchemist/AlchemistNobleAnims", - "/Lotus/Upgrades/Skins/Alchemist/AlchemistSkin", - "/Lotus/Upgrades/Skins/Alchemist/SWLavosKuvaelHelmet", - "/Lotus/Upgrades/Skins/Alchemist/SWLavosKuvaelSkin", - "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistAgile", - "/Lotus/Upgrades/Skins/Alchemist/UnlockAlchemistNoble", - "/Lotus/Upgrades/Skins/Anima/AnimaAgileAnims", - "/Lotus/Upgrades/Skins/Anima/AnimaAltHelmet", - "/Lotus/Upgrades/Skins/Anima/AnimaAltHelmetTwo", - "/Lotus/Upgrades/Skins/Anima/AnimaDayAgileAnims", - "/Lotus/Upgrades/Skins/Anima/AnimaDayNobleAnims", - "/Lotus/Upgrades/Skins/Anima/AnimaHelmet", - "/Lotus/Upgrades/Skins/Anima/AnimaNightAgileAnims", - "/Lotus/Upgrades/Skins/Anima/AnimaNightNobleAnims", - "/Lotus/Upgrades/Skins/Anima/AnimaNobleAnims", - "/Lotus/Upgrades/Skins/Anima/SWDivisaHelmet", - "/Lotus/Upgrades/Skins/Anima/SWDivisaSkin", - "/Lotus/Upgrades/Skins/Anima/SWInsomniaHelmet", - "/Lotus/Upgrades/Skins/Anima/SWInsomniaSkin", - "/Lotus/Upgrades/Skins/Anima/SWMegaeraHelmet", - "/Lotus/Upgrades/Skins/Anima/SWMegaeraSkin", - "/Lotus/Upgrades/Skins/Anima/UnlockAnimaAgile", - "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayAgile", - "/Lotus/Upgrades/Skins/Anima/UnlockAnimaDayNoble", - "/Lotus/Upgrades/Skins/Anima/UnlockAnimaNoble", - "/Lotus/Upgrades/Skins/AntiMatter/AntiAltHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/AntiAltHelmetStatless", - "/Lotus/Upgrades/Skins/AntiMatter/AntiHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/AntiMatterAgileAnims", - "/Lotus/Upgrades/Skins/AntiMatter/AntiMatterNobleAnims", - "/Lotus/Upgrades/Skins/AntiMatter/NovaAlternateSkin", - "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeIIHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeIISuit", - "/Lotus/Upgrades/Skins/AntiMatter/NovaDeluxeSuit", - "/Lotus/Upgrades/Skins/AntiMatter/NovaPrimeHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/NovaPrimeSkin", - "/Lotus/Upgrades/Skins/AntiMatter/NovaQuantumHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/NovaSkin", - "/Lotus/Upgrades/Skins/AntiMatter/NovaSlipstreamHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/NovaVoidShellHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/NovaVoidShellSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWCorpraHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWCorpraSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWGraxxNovaHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWGraxxNovaSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWNovaMithraHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWNovaMithraSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWRFourNovaFusionHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeCygniHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeCygniSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeDeviceHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeDeviceSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeGnovaHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeGnovaSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeLamiaHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeLamiaSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeStingerHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeStingerSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeVisageHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/SWRThreeVisageSkin", - "/Lotus/Upgrades/Skins/AntiMatter/SWTachyonHelmet", - "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterAgile", - "/Lotus/Upgrades/Skins/AntiMatter/UnlockAntiMatterNoble", - "/Lotus/Upgrades/Skins/Archer/ArcherCape", - "/Lotus/Upgrades/Skins/Archer/IvaraDeluxeBallisticaSkin", - "/Lotus/Upgrades/Skins/Archer/IvaraDeluxeHelmet", - "/Lotus/Upgrades/Skins/Archer/IvaraDeluxeSuit", - "/Lotus/Upgrades/Skins/Archer/IvaraPrimeHelmet", - "/Lotus/Upgrades/Skins/Archer/IvaraPrimeSkin", - "/Lotus/Upgrades/Skins/Archer/ObsidianIvaraExaltedBowSkin", - "/Lotus/Upgrades/Skins/Archer/ObsidianIvaraHelmet", - "/Lotus/Upgrades/Skins/Archer/ObsidianIvaraSkin", - "/Lotus/Upgrades/Skins/Archer/SWArcuataHelmet", - "/Lotus/Upgrades/Skins/Archer/SWArcuataSkin", - "/Lotus/Upgrades/Skins/Archer/SWAstreaHelmet", - "/Lotus/Upgrades/Skins/Archer/SWAstreaSkin", - "/Lotus/Upgrades/Skins/Archer/SWIvaraGraxxHelmet", - "/Lotus/Upgrades/Skins/Archer/SWIvaraGraxxSkin", - "/Lotus/Upgrades/Skins/Archer/SWIvaraZamariuHelmet", - "/Lotus/Upgrades/Skins/Archer/SWIvaraZamariuSkin", - "/Lotus/Upgrades/Skins/Archer/SWKuvaelHelmet", - "/Lotus/Upgrades/Skins/Archer/SWKuvaelSkin", - "/Lotus/Upgrades/Skins/Archer/SWYoukaiHelmet", - "/Lotus/Upgrades/Skins/Archer/SWYoukaiSkin", - "/Lotus/Upgrades/Skins/Archer/WinterSolsticeSalix", - "/Lotus/Upgrades/Skins/Archwing/DemolitionDefaultArchwingSkin", - "/Lotus/Upgrades/Skins/Archwing/GrendelArchwingSkin", - "/Lotus/Upgrades/Skins/Archwing/PrimeDefaultArchwingSkin", - "/Lotus/Upgrades/Skins/Archwing/StandardDefaultArchwingSkin", - "/Lotus/Upgrades/Skins/Archwing/StealthDefaultArchwingSkin", - "/Lotus/Upgrades/Skins/Archwing/SupportDefaultArchwingSkin", - "/Lotus/Upgrades/Skins/Archwing/TitaniaPrimeArchwingSkin", - "/Lotus/Upgrades/Skins/Armor/ArbiterOfHexisArmor/ArbiterOfHexisArmorA", - "/Lotus/Upgrades/Skins/Armor/ArbiterOfHexisArmor/ArbiterOfHexisArmorC", - "/Lotus/Upgrades/Skins/Armor/ArbiterOfHexisArmor/ArbiterOfHexisArmorL", - "/Lotus/Upgrades/Skins/Armor/BaroArmour/BaroArmourA", - "/Lotus/Upgrades/Skins/Armor/BaroArmour/BaroArmourC", - "/Lotus/Upgrades/Skins/Armor/BaroArmour/BaroArmourL", - "/Lotus/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeA", - "/Lotus/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeC", - "/Lotus/Upgrades/Skins/Armor/BaroArmourThree/BaroArmourThreeL", - "/Lotus/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoA", - "/Lotus/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoC", - "/Lotus/Upgrades/Skins/Armor/BaroArmourTwo/BaroArmourTwoL", - "/Lotus/Upgrades/Skins/Armor/BillowingArmor/BillowingArmorA", - "/Lotus/Upgrades/Skins/Armor/BillowingArmor/BillowingArmorC", - "/Lotus/Upgrades/Skins/Armor/BillowingArmor/BillowingArmorL", - "/Lotus/Upgrades/Skins/Armor/CephArmor/CephArmorA", - "/Lotus/Upgrades/Skins/Armor/CephArmor/CephArmorC", - "/Lotus/Upgrades/Skins/Armor/CephArmor/CephArmorL", - "/Lotus/Upgrades/Skins/Armor/ChromaPrimeArmor/ChromaPrimeArmorA", - "/Lotus/Upgrades/Skins/Armor/ChromaPrimeArmor/ChromaPrimeArmorC", - "/Lotus/Upgrades/Skins/Armor/ChromaPrimeArmor/ChromaPrimeArmorL", - "/Lotus/Upgrades/Skins/Armor/CorpusFencer/CrpFncAArmor", - "/Lotus/Upgrades/Skins/Armor/CorpusFencer/CrpFncLArmor", - "/Lotus/Upgrades/Skins/Armor/CorpusFencer/PS4CrpFncAArmor", - "/Lotus/Upgrades/Skins/Armor/CorpusFencer/PS4CrpFncLArmor", - "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/CrpCircA", - "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/CrpCircC", - "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/CrpCircL", - "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircA", - "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircC", - "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircL", - "/Lotus/Upgrades/Skins/Armor/CrpCubinatorArmor/CrpCubinatorArmorA", - "/Lotus/Upgrades/Skins/Armor/CrpCubinatorArmor/CrpCubinatorArmorC", - "/Lotus/Upgrades/Skins/Armor/CrpCubinatorArmor/CrpCubinatorArmorL", - "/Lotus/Upgrades/Skins/Armor/CrpHighArmor/CrpHighArmorA", - "/Lotus/Upgrades/Skins/Armor/CrpHighArmor/CrpHighArmorC", - "/Lotus/Upgrades/Skins/Armor/CrpHighArmor/CrpHighArmorL", - "/Lotus/Upgrades/Skins/Armor/CrpIndexTwo/CrpIndexTwoAArmor", - "/Lotus/Upgrades/Skins/Armor/CrpIndexTwo/CrpIndexTwoCArmor", - "/Lotus/Upgrades/Skins/Armor/CrpIndexTwo/CrpIndexTwoLArmor", - "/Lotus/Upgrades/Skins/Armor/CrpModular/CrpModularAArmorTwitch", - "/Lotus/Upgrades/Skins/Armor/CrpModular/CrpModularCArmorTwitch", - "/Lotus/Upgrades/Skins/Armor/CrpModular/CrpModularLArmorTwitch", - "/Lotus/Upgrades/Skins/Armor/CrpShoulderArmor/CrpShoulderArmorL", - "/Lotus/Upgrades/Skins/Armor/CrpSisters/CrpSistersA", - "/Lotus/Upgrades/Skins/Armor/CrpSisters/CrpSistersC", - "/Lotus/Upgrades/Skins/Armor/CrpSisters/CrpSistersL", - "/Lotus/Upgrades/Skins/Armor/Daybreak/DaybreakArmourA", - "/Lotus/Upgrades/Skins/Armor/Daybreak/DaybreakArmourC", - "/Lotus/Upgrades/Skins/Armor/Daybreak/DaybreakArmourL", - "/Lotus/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorAArmor", - "/Lotus/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorCArmor", - "/Lotus/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorLArmor", - "/Lotus/Upgrades/Skins/Armor/DuvArmor/DuvArmorA", - "/Lotus/Upgrades/Skins/Armor/DuvArmor/DuvArmorC", - "/Lotus/Upgrades/Skins/Armor/DuvArmor/DuvArmorL", - "/Lotus/Upgrades/Skins/Armor/FocusSchool/MaduraiCArmor", - "/Lotus/Upgrades/Skins/Armor/FocusSchool/NaramonCArmor", - "/Lotus/Upgrades/Skins/Armor/FocusSchool/UnairuCArmor", - "/Lotus/Upgrades/Skins/Armor/FocusSchool/VazarinCArmor", - "/Lotus/Upgrades/Skins/Armor/FocusSchool/ZenurikCArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/FurisAArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/FurisCArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/FurisLArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/PrismaFurisAArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/PrismaFurisCArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/PrismaFurisLArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/SolsticeFurisAArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/SolsticeFurisCArmor", - "/Lotus/Upgrades/Skins/Armor/FurisArmor/SolsticeFurisLArmor", - "/Lotus/Upgrades/Skins/Armor/GrineerQueenArmour/GrineerQueenArmourA", - "/Lotus/Upgrades/Skins/Armor/GrineerQueenArmour/GrineerQueenArmourC", - "/Lotus/Upgrades/Skins/Armor/GrineerQueenArmour/GrineerQueenArmourL", - "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/GrineerTurbinesArmArmor", - "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/GrineerTurbinesChestArmor", - "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/GrineerTurbinesLegArmor", - "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesArmArmor", - "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesChestArmor", - "/Lotus/Upgrades/Skins/Armor/GrineerTurbines/WraithTurbinesLegArmor", - "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/GrineerVHA", - "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/GrineerVHC", - "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/GrineerVHL", - "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/SummerSolsticeMaggorA", - "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/SummerSolsticeMaggorC", - "/Lotus/Upgrades/Skins/Armor/GrineerVHArmour/SummerSolsticeMaggorL", - "/Lotus/Upgrades/Skins/Armor/GrnAmphisArmor/GrnAmphisAArmor", - "/Lotus/Upgrades/Skins/Armor/GrnAmphisArmor/GrnAmphisCArmor", - "/Lotus/Upgrades/Skins/Armor/GrnAmphisArmor/GrnAmphisLArmor", - "/Lotus/Upgrades/Skins/Armor/GrnFaceMaskArmour/GrnFaceMaskArmour", - "/Lotus/Upgrades/Skins/Armor/GrnFaceMaskArmour/ObsidianFaceMaskArmour", - "/Lotus/Upgrades/Skins/Armor/GrnSteelMeridianArmor/GrnSteelMeridianAArmor", - "/Lotus/Upgrades/Skins/Armor/GrnSteelMeridianArmor/GrnSteelMeridianCArmor", - "/Lotus/Upgrades/Skins/Armor/GrnSteelMeridianArmor/GrnSteelMeridianLArmor", - "/Lotus/Upgrades/Skins/Armor/GuideOfTheLotus/GuideOfTheLotusArmArmor", - "/Lotus/Upgrades/Skins/Armor/Halloween2014Wings/Halloween2014ArmArmor", - "/Lotus/Upgrades/Skins/Armor/Halloween2014Wings/PrismaNaberusArmArmor", - "/Lotus/Upgrades/Skins/Armor/HarrowDeluxe/HarrowDeluxeAArmor", - "/Lotus/Upgrades/Skins/Armor/HarrowDeluxe/HarrowDeluxeCArmor", - "/Lotus/Upgrades/Skins/Armor/HarrowDeluxe/HarrowDeluxeLArmor", - "/Lotus/Upgrades/Skins/Armor/InfEmbolistArmor/InfEmbolistArmorA", - "/Lotus/Upgrades/Skins/Armor/InfEmbolistArmor/InfEmbolistArmorC", - "/Lotus/Upgrades/Skins/Armor/InfEmbolistArmor/InfEmbolistArmorL", - "/Lotus/Upgrades/Skins/Armor/InfestedFins/InfestedFinsArmArmor", - "/Lotus/Upgrades/Skins/Armor/InfestedFins/InfestedFinsChestArmor", - "/Lotus/Upgrades/Skins/Armor/InfestedFins/InfestedFinsLegArmor", - "/Lotus/Upgrades/Skins/Armor/InfestedShoulderArmor/InfestedShoulderArmorA", - "/Lotus/Upgrades/Skins/Armor/IvaraPrimeArmor/IvaraPrimeAArmor", - "/Lotus/Upgrades/Skins/Armor/IvaraPrimeArmor/IvaraPrimeCArmor", - "/Lotus/Upgrades/Skins/Armor/IvaraPrimeArmor/IvaraPrimeLArmor", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetA/KuvaLichArmourAChest", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetA/KuvaLichArmourALegs", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetB/KuvaLichArmourBArms", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetB/KuvaLichArmourBChest", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetC/KuvaLichArmourCArms", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetC/KuvaLichArmourCChest", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetD/KuvaLichArmourDChest", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetE/KuvaLichArmourEChest", - "/Lotus/Upgrades/Skins/Armor/KuvaLichSetF/KuvaLichArmourFChest", - "/Lotus/Upgrades/Skins/Armor/LokiDeluxeArmour/LokiDeluxeAArmor", - "/Lotus/Upgrades/Skins/Armor/LokiDeluxeArmour/LokiDeluxeCArmor", - "/Lotus/Upgrades/Skins/Armor/LokiDeluxeArmour/LokiDeluxeLArmor", - "/Lotus/Upgrades/Skins/Armor/LunaroSetA/LunaroSetAA", - "/Lotus/Upgrades/Skins/Armor/LunaroSetA/LunaroSetAC", - "/Lotus/Upgrades/Skins/Armor/LunaroSetA/LunaroSetAL", - "/Lotus/Upgrades/Skins/Armor/LunaroSetB/LunaroSetBA", - "/Lotus/Upgrades/Skins/Armor/LunaroSetB/LunaroSetBC", - "/Lotus/Upgrades/Skins/Armor/LunaroSetB/LunaroSetBL", - "/Lotus/Upgrades/Skins/Armor/LunaroSetC/LunaroSetCA", - "/Lotus/Upgrades/Skins/Armor/LunaroSetC/LunaroSetCC", - "/Lotus/Upgrades/Skins/Armor/LunaroSetC/LunaroSetCL", - "/Lotus/Upgrades/Skins/Armor/Microsoft/JadeAxaArmourA", - "/Lotus/Upgrades/Skins/Armor/Microsoft/JadeAxaArmourC", - "/Lotus/Upgrades/Skins/Armor/Microsoft/JadeAxaArmourL", - "/Lotus/Upgrades/Skins/Armor/NLokaArmor/NLokaAArmor", - "/Lotus/Upgrades/Skins/Armor/NLokaArmor/NLokaCArmor", - "/Lotus/Upgrades/Skins/Armor/NLokaArmor/NLokaLArmor", - "/Lotus/Upgrades/Skins/Armor/NWIIIBossArmor/NWIIIBossAArmor", - "/Lotus/Upgrades/Skins/Armor/NecraArmor/NecraArmorA", - "/Lotus/Upgrades/Skins/Armor/NecraArmor/NecraArmorC", - "/Lotus/Upgrades/Skins/Armor/NecraArmor/NecraArmorL", - "/Lotus/Upgrades/Skins/Armor/OstronCrewArmor/OstronCrewArmorA", - "/Lotus/Upgrades/Skins/Armor/OstronCrewArmor/OstronCrewArmorC", - "/Lotus/Upgrades/Skins/Armor/OstronCrewArmor/OstronCrewArmorL", - "/Lotus/Upgrades/Skins/Armor/PS5Armor/PS5ArmorA", - "/Lotus/Upgrades/Skins/Armor/PS5Armor/PS5ArmorC", - "/Lotus/Upgrades/Skins/Armor/PS5Armor/PS5ArmorL", - "/Lotus/Upgrades/Skins/Armor/PerrinSequenceArmor/PerrinSequenceArmorA", - "/Lotus/Upgrades/Skins/Armor/PerrinSequenceArmor/PerrinSequenceArmorC", - "/Lotus/Upgrades/Skins/Armor/PerrinSequenceArmor/PerrinSequenceArmorL", - "/Lotus/Upgrades/Skins/Armor/PersianArmour/TnPersianAArmor", - "/Lotus/Upgrades/Skins/Armor/PersianArmour/TnPersianCArmor", - "/Lotus/Upgrades/Skins/Armor/PersianArmour/TnPersianLArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeArmorEquinox/PrimeArmorEquinoxA", - "/Lotus/Upgrades/Skins/Armor/PrimeArmorEquinox/PrimeArmorEquinoxC", - "/Lotus/Upgrades/Skins/Armor/PrimeArmorEquinox/PrimeArmorEquinoxL", - "/Lotus/Upgrades/Skins/Armor/PrimeAviaArmor/PrimeAviaAArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeAviaArmor/PrimeAviaCArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeAviaArmor/PrimeAviaLArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeGarudaArmor/PrimeGarudaAArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeGarudaArmor/PrimeGarudaCArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeGarudaArmor/PrimeGarudaLArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeGaussArmour/PrimeGaussArmourA", - "/Lotus/Upgrades/Skins/Armor/PrimeGaussArmour/PrimeGaussArmourC", - "/Lotus/Upgrades/Skins/Armor/PrimeGaussArmour/PrimeGaussArmourL", - "/Lotus/Upgrades/Skins/Armor/PrimeInarosArmor/PrimeInarosArmorA", - "/Lotus/Upgrades/Skins/Armor/PrimeInarosArmor/PrimeInarosArmorC", - "/Lotus/Upgrades/Skins/Armor/PrimeInarosArmor/PrimeInarosArmorL", - "/Lotus/Upgrades/Skins/Armor/PrimeNezhaArmor/PrimeNezhaArmorA", - "/Lotus/Upgrades/Skins/Armor/PrimeNezhaArmor/PrimeNezhaArmorC", - "/Lotus/Upgrades/Skins/Armor/PrimeNezhaArmor/PrimeNezhaArmorL", - "/Lotus/Upgrades/Skins/Armor/PrimeOctaviaArmour/PrimeOctaviaArmourA", - "/Lotus/Upgrades/Skins/Armor/PrimeOctaviaArmour/PrimeOctaviaArmourC", - "/Lotus/Upgrades/Skins/Armor/PrimeOctaviaArmour/PrimeOctaviaArmourL", - "/Lotus/Upgrades/Skins/Armor/PrimeRevenantArmour/PrimeRevenantArmourA", - "/Lotus/Upgrades/Skins/Armor/PrimeRevenantArmour/PrimeRevenantArmourC", - "/Lotus/Upgrades/Skins/Armor/PrimeRevenantArmour/PrimeRevenantArmourL", - "/Lotus/Upgrades/Skins/Armor/PrimeSetFour/PrimeSetFourA", - "/Lotus/Upgrades/Skins/Armor/PrimeSetFour/PrimeSetFourC", - "/Lotus/Upgrades/Skins/Armor/PrimeSetFour/PrimeSetFourL", - "/Lotus/Upgrades/Skins/Armor/PrimeSetMirage/PrimeSetMirageA", - "/Lotus/Upgrades/Skins/Armor/PrimeSetMirage/PrimeSetMirageC", - "/Lotus/Upgrades/Skins/Armor/PrimeSetMirage/PrimeSetMirageL", - "/Lotus/Upgrades/Skins/Armor/PrimeSetOne/PrimeSetOneArmArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeSetOne/PrimeSetOneChestArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeSetOne/PrimeSetOneLegArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeSetThree/PrimeSetThreeA", - "/Lotus/Upgrades/Skins/Armor/PrimeSetThree/PrimeSetThreeC", - "/Lotus/Upgrades/Skins/Armor/PrimeSetThree/PrimeSetThreeL", - "/Lotus/Upgrades/Skins/Armor/PrimeSetTwo/PrimeSetTwoArmArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeSetTwo/PrimeSetTwoChestArmor", - "/Lotus/Upgrades/Skins/Armor/PrimeSetTwo/PrimeSetTwoLegArmor", - "/Lotus/Upgrades/Skins/Armor/RailjackArmor/ItzalArmourA", - "/Lotus/Upgrades/Skins/Armor/RailjackArmor/ItzalArmourC", - "/Lotus/Upgrades/Skins/Armor/RailjackArmor/ItzalArmourL", - "/Lotus/Upgrades/Skins/Armor/RailjackArmor/RailjackAArmor", - "/Lotus/Upgrades/Skins/Armor/RailjackArmor/RailjackCArmor", - "/Lotus/Upgrades/Skins/Armor/RailjackArmor/RailjackLArmor", - "/Lotus/Upgrades/Skins/Armor/RedVeilArmor/RedVeilAArmor", - "/Lotus/Upgrades/Skins/Armor/RedVeilArmor/RedVeilCArmor", - "/Lotus/Upgrades/Skins/Armor/RedVeilArmor/RedVeilLArmor", - "/Lotus/Upgrades/Skins/Armor/RevenantArmor/RevenantArmorA", - "/Lotus/Upgrades/Skins/Armor/RevenantArmor/RevenantArmorC", - "/Lotus/Upgrades/Skins/Armor/RevenantArmor/RevenantArmorL", - "/Lotus/Upgrades/Skins/Armor/SWAsakageArmor/SWAsakageA", - "/Lotus/Upgrades/Skins/Armor/SWAsteriaChestArmor/SWAsteriaChestArmorC", - "/Lotus/Upgrades/Skins/Armor/SWAvyrdiShoulderArmor/SWAvyrdiShoulderArmorA", - "/Lotus/Upgrades/Skins/Armor/SWDivaArmor/SWDivaArmourC", - "/Lotus/Upgrades/Skins/Armor/SWEucyonArmor/SWEucyonChestArmor", - "/Lotus/Upgrades/Skins/Armor/SWFhanEpakArmor/SWFhanEpakArmourC", - "/Lotus/Upgrades/Skins/Armor/SWInflatableShoulderArmor/SWInflatableShoulderArmorA", - "/Lotus/Upgrades/Skins/Armor/SWIonShoulderArmor/SWIonShoulderArmorA", - "/Lotus/Upgrades/Skins/Armor/SWJotunheimMusicShoulder/SWJotunheimMusicShoulder", - "/Lotus/Upgrades/Skins/Armor/SWKishikamiArmor/SWKishikamiC", - "/Lotus/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorA", - "/Lotus/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorC", - "/Lotus/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorL", - "/Lotus/Upgrades/Skins/Armor/SWLamassuShoulderArmor/SWLamassuShoulderArmorA", - "/Lotus/Upgrades/Skins/Armor/SWPaxisArmor/SWPaxisArmourC", - "/Lotus/Upgrades/Skins/Armor/SWPaxisShoulderArmor/SWPaxisShoulderArmor", - "/Lotus/Upgrades/Skins/Armor/SWPiercingEyeShoulderArmor/SWPiercingEyeChestArmor", - "/Lotus/Upgrades/Skins/Armor/SWPiercingEyeShoulderArmor/SWPiercingEyeShoulderArmor", - "/Lotus/Upgrades/Skins/Armor/SWRaigoChestArmor/SWRaigoChestArmor", - "/Lotus/Upgrades/Skins/Armor/SWSeraphimArmor/SWSeraphimChestArmor", - "/Lotus/Upgrades/Skins/Armor/SWVikasaAegisArmor/SWVikasaAegisArmorC", - "/Lotus/Upgrades/Skins/Armor/SWVikasaPlatingShoulderArmor/SWVikasaPlatingShoulderArmor", - "/Lotus/Upgrades/Skins/Armor/SWXulatuChest/SWXulatuChestArmor", - "/Lotus/Upgrades/Skins/Armor/SWZhiviraShoulderArmor/SWZhiviraShoulderArmorA", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1A", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1C", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1L", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2A", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2C", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2L", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3A", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3C", - "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3L", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/JadeSetThreeArmArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/JadeSetThreeChestArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/JadeSetThreeLegArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SetThreeArmArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SetThreeChestArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SetThreeLegArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SolsticeSetThreeArmArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SolsticeSetThreeChestArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/SolsticeSetThreeLegArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmLeftArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeArmRightArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeChestArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegLeftArmor", - "/Lotus/Upgrades/Skins/Armor/SetThreeWinged/VTSetThreeLegRightArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/SetTwoArmArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/SetTwoChestArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/SetTwoLegArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmLeftArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoArmRightArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoChestArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegLeftArmor", - "/Lotus/Upgrades/Skins/Armor/SetTwoSamurai/VTSetTwoLegRightArmor", - "/Lotus/Upgrades/Skins/Armor/SevagothDlxFishArmour/SevagothDlxFishArmourA", - "/Lotus/Upgrades/Skins/Armor/SolarisUnitedArmor/SolarisUnitedAArmor", - "/Lotus/Upgrades/Skins/Armor/SolarisUnitedArmor/SolarisUnitedCArmor", - "/Lotus/Upgrades/Skins/Armor/SolarisUnitedArmor/SolarisUnitedLArmor", - "/Lotus/Upgrades/Skins/Armor/Sony/OAArmorA", - "/Lotus/Upgrades/Skins/Armor/Sony/OAArmorC", - "/Lotus/Upgrades/Skins/Armor/Sony/OAArmorL", - "/Lotus/Upgrades/Skins/Armor/StalkArmour/StalkA", - "/Lotus/Upgrades/Skins/Armor/StalkArmour/StalkC", - "/Lotus/Upgrades/Skins/Armor/StalkArmour/StalkL", - "/Lotus/Upgrades/Skins/Armor/Sundial/SundialA", - "/Lotus/Upgrades/Skins/Armor/Sundial/SundialC", - "/Lotus/Upgrades/Skins/Armor/Sundial/SundialL", - "/Lotus/Upgrades/Skins/Armor/TennoCon2018Armor/TennoCon2018ArmorA", - "/Lotus/Upgrades/Skins/Armor/TennoCon2018Armor/TennoCon2018ArmorC", - "/Lotus/Upgrades/Skins/Armor/TennoCon2018Armor/TennoCon2018ArmorL", - "/Lotus/Upgrades/Skins/Armor/TennoCon2019Armor/TennoCon2019AArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2019Armor/TennoCon2019CArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2019Armor/TennoCon2019LArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2021Armor/TennoCon2021AArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2021Armor/TennoCon2021CArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2021Armor/TennoCon2021LArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2022Armor/TennoCon2022AArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2022Armor/TennoCon2022CArmor", - "/Lotus/Upgrades/Skins/Armor/TennoCon2022Armor/TennoCon2022LArmor", - "/Lotus/Upgrades/Skins/Armor/TitaniaDeluxeArmor/TitaniaDeluxeArmorA", - "/Lotus/Upgrades/Skins/Armor/TitaniaDeluxeArmor/TitaniaDeluxeArmorC", - "/Lotus/Upgrades/Skins/Armor/TitaniaDeluxeArmor/TitaniaDeluxeArmorL", - "/Lotus/Upgrades/Skins/Armor/TnArmorCurve/TnArmorCurveA", - "/Lotus/Upgrades/Skins/Armor/TnArmorCurve/TnArmorCurveC", - "/Lotus/Upgrades/Skins/Armor/TnArmorCurve/TnArmorCurveL", - "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorA", - "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorC", - "/Lotus/Upgrades/Skins/Armor/TnBayonettaArmor/TnDeimosSupporterArmorL", - "/Lotus/Upgrades/Skins/Armor/TnCeramicArmor/TnCeramicArmorA", - "/Lotus/Upgrades/Skins/Armor/TnCeramicArmor/TnCeramicArmorC", - "/Lotus/Upgrades/Skins/Armor/TnCeramicArmor/TnCeramicArmorL", - "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", - "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorL", - "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", - "/Lotus/Upgrades/Skins/Armor/TnHvArmour/TnHvArmourA", - "/Lotus/Upgrades/Skins/Armor/TnHvArmour/TnHvArmourC", - "/Lotus/Upgrades/Skins/Armor/TnHvArmour/TnHvArmourL", - "/Lotus/Upgrades/Skins/Armor/TnIceArmor/TnIceArmorA", - "/Lotus/Upgrades/Skins/Armor/TnIceArmor/TnIceArmorC", - "/Lotus/Upgrades/Skins/Armor/TnIceArmor/TnIceArmorL", - "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorElixis", - "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronArmArmorPrisma", - "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorElixis", - "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronChestArmorPrisma", - "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorElixis", - "/Lotus/Upgrades/Skins/Armor/TnLatronArmor/TnLatronLegArmorPrisma", - "/Lotus/Upgrades/Skins/Armor/TnNewPlayerArmor/TnNewPlayerAArmor", - "/Lotus/Upgrades/Skins/Armor/TnNewPlayerArmor/TnNewPlayerCArmor", - "/Lotus/Upgrades/Skins/Armor/TnNewPlayerArmor/TnNewPlayerLArmor", - "/Lotus/Upgrades/Skins/Armor/TnPagemasterArmor/TnPagemasterArmorA", - "/Lotus/Upgrades/Skins/Armor/TnPagemasterArmor/TnPagemasterArmorC", - "/Lotus/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorA", - "/Lotus/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorC", - "/Lotus/Upgrades/Skins/Armor/TnShinaiArmor/TnShinaiArmorL", - "/Lotus/Upgrades/Skins/Armor/TnoCharityRibbon/TnoCharityRibbon", - "/Lotus/Upgrades/Skins/Armor/Twitch2021Armor/TwitchArmor2021A", - "/Lotus/Upgrades/Skins/Armor/Twitch2021Armor/TwitchArmor2021C", - "/Lotus/Upgrades/Skins/Armor/Twitch2021Armor/TwitchArmor2021L", - "/Lotus/Upgrades/Skins/Armor/UmbraArmour/UmbraAArmor", - "/Lotus/Upgrades/Skins/Armor/UmbraArmour/UmbraCArmor", - "/Lotus/Upgrades/Skins/Armor/UmbraArmour/UmbraLArmor", - "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosALArmor", - "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosARArmor", - "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosChestArmor", - "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosLLArmor", - "/Lotus/Upgrades/Skins/Armor/VTEos/VTEosLRArmor", - "/Lotus/Upgrades/Skins/Armor/ValkyrDeluxeArmor/ValkyrDeluxeArmorA", - "/Lotus/Upgrades/Skins/Armor/ValkyrDeluxeArmor/ValkyrDeluxeArmorC", - "/Lotus/Upgrades/Skins/Armor/ValkyrDeluxeArmor/ValkyrDeluxeArmorL", - "/Lotus/Upgrades/Skins/Armor/VeilShoulderArmor/VeilShoulderArmorA", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/BansheeArmLeftArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/BansheePrimeArmLeftArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/DagathArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmberDeluxeIIArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmberDeluxeIIChestArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmberPrimeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/EmptyCustomization", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/ExcaliburDeluxeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostEmperorArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostGrostArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostHeirloomArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostPrimeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/FrostVoidshellArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/HildrynPrimeChestArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/HydroidPrimeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/LavosArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/MagPrimeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/OberonArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/OberonPrimeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/RevenantDeluxeCape", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/RevenantPrimeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWBansheeBotLArmLeftArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWFrostStrigidArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWHisameArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWIonFrostArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWLavosKuvaelArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWOberonBotLArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWOberonYoukaiArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/SWSonorityArmLeftArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/VoltArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/VoltChameleonArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/VoltPrimeArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/WerewolfArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/WerewolfVoidshellArmArmor", - "/Lotus/Upgrades/Skins/Armor/WarframeDefaults/WukongDeluxeArmArmor", - "/Lotus/Upgrades/Skins/Armor/Wolf/TennoWolfAArmor", - "/Lotus/Upgrades/Skins/Armor/Wolf/TennoWolfCArmor", - "/Lotus/Upgrades/Skins/Armor/Wolf/TennoWolfLArmor", - "/Lotus/Upgrades/Skins/Armor/SetOneArmArmor", - "/Lotus/Upgrades/Skins/Armor/SetOneChestArmor", - "/Lotus/Upgrades/Skins/Armor/SetOneLegArmor", - "/Lotus/Upgrades/Skins/Arrows/AlternateArrowA", - "/Lotus/Upgrades/Skins/Arrows/AlternateArrowB", - "/Lotus/Upgrades/Skins/Arrows/AlternateArrowC", - "/Lotus/Upgrades/Skins/Asp/AspAgileAnims", - "/Lotus/Upgrades/Skins/Asp/AspAltHelmet", - "/Lotus/Upgrades/Skins/Asp/AspAltHelmetB", - "/Lotus/Upgrades/Skins/Asp/AspAltHelmetBStatless", - "/Lotus/Upgrades/Skins/Asp/AspAltHelmetStatless", - "/Lotus/Upgrades/Skins/Asp/AspHelmet", - "/Lotus/Upgrades/Skins/Asp/AspNobleAnims", - "/Lotus/Upgrades/Skins/Asp/SarynAlternateSkin", - "/Lotus/Upgrades/Skins/Asp/UnlockAspAgile", - "/Lotus/Upgrades/Skins/Asp/UnlockAspNoble", - "/Lotus/Upgrades/Skins/Axe/DaggerAxe", - "/Lotus/Upgrades/Skins/Axe/SarynDeluxeSickle", - "/Lotus/Upgrades/Skins/Axe/SolsticeScindo", - "/Lotus/Upgrades/Skins/Bard/BardAgileAnims", - "/Lotus/Upgrades/Skins/Bard/BardAltCloakA", - "/Lotus/Upgrades/Skins/Bard/BardAltCloakB", - "/Lotus/Upgrades/Skins/Bard/BardAltHelmet", - "/Lotus/Upgrades/Skins/Bard/BardHelmet", - "/Lotus/Upgrades/Skins/Bard/BardNobleAnims", - "/Lotus/Upgrades/Skins/Bard/BardSkin", - "/Lotus/Upgrades/Skins/Bard/BardTwitchAltHelmet", - "/Lotus/Upgrades/Skins/Bard/BardTwitchHelmet", - "/Lotus/Upgrades/Skins/Bard/BardTwitchSkin", - "/Lotus/Upgrades/Skins/Bard/OctaviaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Bard/OctaviaDeluxeSkin", - "/Lotus/Upgrades/Skins/Bard/OctaviaPrimeHelmet", - "/Lotus/Upgrades/Skins/Bard/OctaviaPrimeSkin", - "/Lotus/Upgrades/Skins/Bard/SWDivaHelmet", - "/Lotus/Upgrades/Skins/Bard/SWDivaSkin", - "/Lotus/Upgrades/Skins/Bard/SWGiocosoHelmet", - "/Lotus/Upgrades/Skins/Bard/SWMandachoralystHelmet", - "/Lotus/Upgrades/Skins/Bard/SWMandachoralystSkin", - "/Lotus/Upgrades/Skins/Bard/SWOctaviaYoukaiHelmet", - "/Lotus/Upgrades/Skins/Bard/SWOctaviaYoukaiSkin", - "/Lotus/Upgrades/Skins/Bard/UnlockBardAgile", - "/Lotus/Upgrades/Skins/Bard/UnlockBardNoble", - "/Lotus/Upgrades/Skins/Berserker/BerserkerAgileAnims", - "/Lotus/Upgrades/Skins/Berserker/BerserkerBastetHelmet", - "/Lotus/Upgrades/Skins/Berserker/BerserkerDangles", - "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeAgileAnims", - "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeHelmet", - "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeNobleAnims", - "/Lotus/Upgrades/Skins/Berserker/BerserkerDeluxeSuit", - "/Lotus/Upgrades/Skins/Berserker/BerserkerHelmet", - "/Lotus/Upgrades/Skins/Berserker/BerserkerNobleAnims", - "/Lotus/Upgrades/Skins/Berserker/BerserkerSkin", - "/Lotus/Upgrades/Skins/Berserker/JadeValkyrHelmet", - "/Lotus/Upgrades/Skins/Berserker/JadeValkyrSkin", - "/Lotus/Upgrades/Skins/Berserker/SWDelusionHelmet", - "/Lotus/Upgrades/Skins/Berserker/SWDelusionSkin", - "/Lotus/Upgrades/Skins/Berserker/SWIonHelmet", - "/Lotus/Upgrades/Skins/Berserker/SWLeonessaHelmet", - "/Lotus/Upgrades/Skins/Berserker/SWLeonessaSkin", - "/Lotus/Upgrades/Skins/Berserker/SWMithraValkyrHelmet", - "/Lotus/Upgrades/Skins/Berserker/SWMithraValkyrSkin", - "/Lotus/Upgrades/Skins/Berserker/SWRFiveValkyrCheetahHelmet", - "/Lotus/Upgrades/Skins/Berserker/SWRFourValkyrGraxxHelmet", - "/Lotus/Upgrades/Skins/Berserker/SWRFourValkyrGraxxSkin", - "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerAgile", - "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeAgile", - "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerDeluxeNoble", - "/Lotus/Upgrades/Skins/Berserker/UnlockBerserkerNoble", - "/Lotus/Upgrades/Skins/Berserker/ValkyrAltBHelmet", - "/Lotus/Upgrades/Skins/Berserker/ValkyrAlternateSkin", - "/Lotus/Upgrades/Skins/Berserker/ValkyrDeluxeFistSkin", - "/Lotus/Upgrades/Skins/Berserker/ValkyrDeluxeHelmet", - "/Lotus/Upgrades/Skins/Berserker/ValkyrDeluxeSkin", - "/Lotus/Upgrades/Skins/Berserker/ValkyrPrimeDangles", - "/Lotus/Upgrades/Skins/Berserker/ValkyrPrimeHelmet", - "/Lotus/Upgrades/Skins/Berserker/ValkyrPrimeSkin", - "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldAkbolto", - "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldBolto", - "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldDaikyu", - "/Lotus/Upgrades/Skins/BrassAndGold/BrassAndGoldTipedo", - "/Lotus/Upgrades/Skins/Brawler/AtlasDeluxeHelmet", - "/Lotus/Upgrades/Skins/Brawler/AtlasDeluxeSkin", - "/Lotus/Upgrades/Skins/Brawler/AtlasPrimeHelmet", - "/Lotus/Upgrades/Skins/Brawler/AtlasPrimeSkin", - "/Lotus/Upgrades/Skins/Brawler/BrawlerAgileAnims", - "/Lotus/Upgrades/Skins/Brawler/BrawlerAlt2Helmet", - "/Lotus/Upgrades/Skins/Brawler/BrawlerAltHelmet", - "/Lotus/Upgrades/Skins/Brawler/BrawlerHelmet", - "/Lotus/Upgrades/Skins/Brawler/BrawlerNobleAnims", - "/Lotus/Upgrades/Skins/Brawler/BrawlerSkin", - "/Lotus/Upgrades/Skins/Brawler/SWAtlasBotLHelmet", - "/Lotus/Upgrades/Skins/Brawler/SWAtlasBotLSkin", - "/Lotus/Upgrades/Skins/Brawler/SWAtlasGraxxHelmet", - "/Lotus/Upgrades/Skins/Brawler/SWAtlasGraxxSkin", - "/Lotus/Upgrades/Skins/Brawler/SWMonolithHelmet", - "/Lotus/Upgrades/Skins/Brawler/SWMonolithSkin", - "/Lotus/Upgrades/Skins/Brawler/SWRFiveAtlasArhatHelmet", - "/Lotus/Upgrades/Skins/Brawler/SWRSixAtlasTelamonHelmet", - "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerAgile", - "/Lotus/Upgrades/Skins/Brawler/UnlockBrawlerNoble", - "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameAgileAnims", - "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameAltHelmet", - "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameHelmet", - "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameNobleAnims", - "/Lotus/Upgrades/Skins/BrokenFrame/BrokenFrameSkin", - "/Lotus/Upgrades/Skins/BrokenFrame/SWXakuDeatheaHelmet", - "/Lotus/Upgrades/Skins/BrokenFrame/SWXakuDeatheaSkin", - "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameAgile", - "/Lotus/Upgrades/Skins/BrokenFrame/UnlockBrokenFrameNoble", - "/Lotus/Upgrades/Skins/BrokenFrame/XakuDeluxeHelmet", - "/Lotus/Upgrades/Skins/BrokenFrame/XakuDeluxeSkin", - "/Lotus/Upgrades/Skins/Camo/AkimboViperCamo", - "/Lotus/Upgrades/Skins/Camo/DesertAtteraxSkin", - "/Lotus/Upgrades/Skins/Camo/DesertDirigaSkin", - "/Lotus/Upgrades/Skins/Camo/DesertGrinlokSkin", - "/Lotus/Upgrades/Skins/Camo/DesertHekSkin", - "/Lotus/Upgrades/Skins/Camo/DesertKarakSkin", - "/Lotus/Upgrades/Skins/Camo/DesertMarelokSkin", - "/Lotus/Upgrades/Skins/Camo/DesertTonkorSkin", - "/Lotus/Upgrades/Skins/Camo/GorgonCamo", - "/Lotus/Upgrades/Skins/Camo/GrakataCamo", - "/Lotus/Upgrades/Skins/Camo/GrnAkimboPistolsCamo", - "/Lotus/Upgrades/Skins/Camo/KrackenCamo", - "/Lotus/Upgrades/Skins/Camo/SobekCamo", - "/Lotus/Upgrades/Skins/Camo/ViperCamo", - "/Lotus/Upgrades/Skins/Camo/VulkarCamo", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorA", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorB", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorC", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorDuviri", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorGaraPrime", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorHalloweenA", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorPrime", - "/Lotus/Upgrades/Skins/Catbrows/Armor/CatbrowArmorVoidTraderA", - "/Lotus/Upgrades/Skins/Catbrows/Armor/EmpyreanKavatArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/GrnAmphisKavatArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/GrnQueenCatbrowArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/RevenantKavatArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/TnTigrisKavatArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/Twitch2021MyrdinCatbrowArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/UmbraKavatArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/VermillionKavatArmor", - "/Lotus/Upgrades/Skins/Catbrows/Armor/WispKavatArmor", - "/Lotus/Upgrades/Skins/Catbrows/CephalonCatbrowFur", - "/Lotus/Upgrades/Skins/Catbrows/ContestCatbrowFur", - "/Lotus/Upgrades/Skins/Catbrows/DaybreakCatbrowFur", - "/Lotus/Upgrades/Skins/Catbrows/GaraPrimeCatbrowFur", - "/Lotus/Upgrades/Skins/Catbrows/NexusCatbrowFur", - "/Lotus/Upgrades/Skins/Catbrows/PrimeCatbrowFur", - "/Lotus/Upgrades/Skins/Catbrows/SolsticeCatbrowFur", - "/Lotus/Upgrades/Skins/Catbrows/XmasCatbrowSkin", - "/Lotus/Upgrades/Skins/CephWepSkins/CephGaundaoSkin", - "/Lotus/Upgrades/Skins/CephWepSkins/CephPyranaSkin", - "/Lotus/Upgrades/Skins/CephWepSkins/CephRubicoSkin", - "/Lotus/Upgrades/Skins/Clan/Focus/MaduraiBadgeItem", - "/Lotus/Upgrades/Skins/Clan/Focus/NaramonBadgeItem", - "/Lotus/Upgrades/Skins/Clan/Focus/UnairuBadgeItem", - "/Lotus/Upgrades/Skins/Clan/Focus/VazarinBadgeItem", - "/Lotus/Upgrades/Skins/Clan/Focus/ZenurikBadgeItem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearGroundIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearGroundIIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearGroundIIIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearOperationIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearOperationIIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearOperationIIIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearSpaceIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearSpaceIIEmblem", - "/Lotus/Upgrades/Skins/Clan/ScarletSpear/ScarletSpearSpaceIIIEmblem", - "/Lotus/Upgrades/Skins/Clan/AggressionEventCorpusBadgeItem", - "/Lotus/Upgrades/Skins/Clan/AggressionEventGrineerBadgeItem", - "/Lotus/Upgrades/Skins/Clan/AllianceEmblemItem", - "/Lotus/Upgrades/Skins/Clan/AmalgamEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/AmbulasEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/BaroKavatBadgeItem", - "/Lotus/Upgrades/Skins/Clan/BaroKubrowBadgeItem", - "/Lotus/Upgrades/Skins/Clan/BaroQuantumBadgeItem", - "/Lotus/Upgrades/Skins/Clan/BountyHunterBadgeItem", - "/Lotus/Upgrades/Skins/Clan/CNY2021EmblemItem", - "/Lotus/Upgrades/Skins/Clan/CNY2022EmblemItem", - "/Lotus/Upgrades/Skins/Clan/CNY2023EmblemItem", - "/Lotus/Upgrades/Skins/Clan/CY17173MediaBadge", - "/Lotus/Upgrades/Skins/Clan/CYCCBBadgeItem", - "/Lotus/Upgrades/Skins/Clan/CYDuowanMediaBadge", - "/Lotus/Upgrades/Skins/Clan/CYOBBadgeItem", - "/Lotus/Upgrades/Skins/Clan/CYPlayBadgeItem", - "/Lotus/Upgrades/Skins/Clan/ClanEmblemItem", - "/Lotus/Upgrades/Skins/Clan/Community10YearEmblemItem", - "/Lotus/Upgrades/Skins/Clan/ConservationBadgeBItem", - "/Lotus/Upgrades/Skins/Clan/ConservationBadgeCItem", - "/Lotus/Upgrades/Skins/Clan/ConservationBadgeDeimosItem", - "/Lotus/Upgrades/Skins/Clan/ConservationBadgeItem", - "/Lotus/Upgrades/Skins/Clan/CorpusLichBadgeItem", - "/Lotus/Upgrades/Skins/Clan/CorpusVoidBadgeItem", - "/Lotus/Upgrades/Skins/Clan/DefectorRescueEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/DogDaysBadgeItem", - "/Lotus/Upgrades/Skins/Clan/Dragon2024BadgeItem", - "/Lotus/Upgrades/Skins/Clan/DrakeRifleBadgeItem", - "/Lotus/Upgrades/Skins/Clan/EliteAlertBadgeItem", - "/Lotus/Upgrades/Skins/Clan/EntratiEventEmblemItem", - "/Lotus/Upgrades/Skins/Clan/ExcaliburUmbraBadgeItem", - "/Lotus/Upgrades/Skins/Clan/ExcavationEvenetBadgeItem", - "/Lotus/Upgrades/Skins/Clan/FalseProfitEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/FoundersBadgeDiscipleItem", - "/Lotus/Upgrades/Skins/Clan/FoundersBadgeGrandMasterItem", - "/Lotus/Upgrades/Skins/Clan/FoundersBadgeHunterItem", - "/Lotus/Upgrades/Skins/Clan/FoundersBadgeMasterItem", - "/Lotus/Upgrades/Skins/Clan/GlassmakerEmblemItem", - "/Lotus/Upgrades/Skins/Clan/GolemRaidBadgeItem", - "/Lotus/Upgrades/Skins/Clan/GrnSeaLabEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/Halloween2023OwlBadgeItem", - "/Lotus/Upgrades/Skins/Clan/Halloween2023RamBadgeItem", - "/Lotus/Upgrades/Skins/Clan/HiveSabotageEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/HolidayDeathMatchBadgeItem", - "/Lotus/Upgrades/Skins/Clan/IndexEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/InfTacAlertDiseasedAncientBadgeItem", - "/Lotus/Upgrades/Skins/Clan/InfTacAlertNaniteMoaAncientBadgeItem", - "/Lotus/Upgrades/Skins/Clan/InfTacAlertPussAncientBadgeItem", - "/Lotus/Upgrades/Skins/Clan/InfTacAlertSlowBombMoaAncientBadgeItem", - "/Lotus/Upgrades/Skins/Clan/InfestationEventEmblemItem", - "/Lotus/Upgrades/Skins/Clan/JungleEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/KelaEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/LeaderBadgeGhostItem", - "/Lotus/Upgrades/Skins/Clan/LeaderBadgeMoonItem", - "/Lotus/Upgrades/Skins/Clan/LeaderBadgeMountainItem", - "/Lotus/Upgrades/Skins/Clan/LeaderBadgeShadowItem", - "/Lotus/Upgrades/Skins/Clan/LeaderBadgeStormItem", - "/Lotus/Upgrades/Skins/Clan/LichKillerBadgeItem", - "/Lotus/Upgrades/Skins/Clan/LotusGuideBadgeItem", - "/Lotus/Upgrades/Skins/Clan/MechEventEmblemItem", - "/Lotus/Upgrades/Skins/Clan/MutalistIncursionsBadgeItem", - "/Lotus/Upgrades/Skins/Clan/NightmareSevantiHaloBadgeItem", - "/Lotus/Upgrades/Skins/Clan/NoraSeasonTwoBadgeItem", - "/Lotus/Upgrades/Skins/Clan/OrbBadgeItem", - "/Lotus/Upgrades/Skins/Clan/OrokinSabotageBadgeItem", - "/Lotus/Upgrades/Skins/Clan/OrokittyBadgeItem", - "/Lotus/Upgrades/Skins/Clan/PS5OkinaBadgeItem", - "/Lotus/Upgrades/Skins/Clan/PlagueStarBadgeItem", - "/Lotus/Upgrades/Skins/Clan/PrismaLotusEmblem", - "/Lotus/Upgrades/Skins/Clan/ProjectSinisterBadgeItem", - "/Lotus/Upgrades/Skins/Clan/PvpRepBadgeItem", - "/Lotus/Upgrades/Skins/Clan/RadioLegionBadgeItem", - "/Lotus/Upgrades/Skins/Clan/RescueEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/SevantiHaloBadgeItem", - "/Lotus/Upgrades/Skins/Clan/SevantiLegacyHaloBadgeItem", - "/Lotus/Upgrades/Skins/Clan/ShipyardsEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/ShipyardsEventQuantumBadgeItem", - "/Lotus/Upgrades/Skins/Clan/SkullBadgeBronzeItem", - "/Lotus/Upgrades/Skins/Clan/SkullBadgeGoldItem", - "/Lotus/Upgrades/Skins/Clan/SkullBadgeSilverItem", - "/Lotus/Upgrades/Skins/Clan/SlingStone2EmblemItem", - "/Lotus/Upgrades/Skins/Clan/SlingStoneEmblemItem", - "/Lotus/Upgrades/Skins/Clan/SolarisBadgeItem", - "/Lotus/Upgrades/Skins/Clan/SurvivalEventBadgeItem", - "/Lotus/Upgrades/Skins/Clan/TenYearAnniversaryBadgeItem", - "/Lotus/Upgrades/Skins/Clan/TennoCon2016BadgeItem", - "/Lotus/Upgrades/Skins/Clan/TennoGenBadgeItem", - "/Lotus/Upgrades/Skins/Clan/TranslatorBadgeItem", - "/Lotus/Upgrades/Skins/Clan/TwitchNecraloidBadgeItem", - "/Lotus/Upgrades/Skins/Clan/TwitchPromo2021BadgeItem", - "/Lotus/Upgrades/Skins/Clan/WikiaBadgeItem", - "/Lotus/Upgrades/Skins/Clan/WolfBadgeItem", - "/Lotus/Upgrades/Skins/Clan/XBoneJadeClemBadgeItem", - "/Lotus/Upgrades/Skins/Clan/ZarimanEvolvingSekharaBadgeItemA", - "/Lotus/Upgrades/Skins/Clan/ZarimanEvolvingSekharaBadgeItemB", - "/Lotus/Upgrades/Skins/Clan/ZarimanEvolvingSekharaBadgeItemC", - "/Lotus/Upgrades/Skins/Clan/ZawVariantBadgeItemA", - "/Lotus/Upgrades/Skins/Clan/ZawVariantBadgeItemB", - "/Lotus/Upgrades/Skins/Clan/ZawVariantBadgeItemC", - "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteAgileAnims", - "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteFrameAltHelmet", - "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteFrameHelmet", - "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteFrameSkin", - "/Lotus/Upgrades/Skins/ConcreteFrame/ConcreteNobleAnims", - "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteAgile", - "/Lotus/Upgrades/Skins/ConcreteFrame/UnlockConcreteNoble", - "/Lotus/Upgrades/Skins/Contests/LongGuns/VectisSharpshooter", - "/Lotus/Upgrades/Skins/Contests/LongGuns/VectisSilferer", - "/Lotus/Upgrades/Skins/Contests/Melee/DualZorenCombustion", - "/Lotus/Upgrades/Skins/Contests/Melee/DualZorenKuberus", - "/Lotus/Upgrades/Skins/Contests/Melee/ScindoCombustion", - "/Lotus/Upgrades/Skins/Contests/Melee/ScindoKuberus", - "/Lotus/Upgrades/Skins/Contests/Pistols/AkmagnusDakila", - "/Lotus/Upgrades/Skins/Contests/Pistols/AkmagnusHiveLight", - "/Lotus/Upgrades/Skins/Contests/Pistols/MagnusDakila", - "/Lotus/Upgrades/Skins/Contests/Pistols/MagnusHiveLight", - "/Lotus/Upgrades/Skins/Cowgirl/CowgirlAgileAnims", - "/Lotus/Upgrades/Skins/Cowgirl/CowgirlAltHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/CowgirlHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/CowgirlNobleAnims", - "/Lotus/Upgrades/Skins/Cowgirl/CowgirlSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaAltBHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeArmGunSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeDualPistolSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxePistolSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeV2ArmGunSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeV2Helmet", - "/Lotus/Upgrades/Skins/Cowgirl/MesaDeluxeV2Skin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaImmortallSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaPrimeAltHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/MesaPrimeHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/MesaPrimeSkin", - "/Lotus/Upgrades/Skins/Cowgirl/MesaVoidShellHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/MesaVoidShellSkin", - "/Lotus/Upgrades/Skins/Cowgirl/SWCowgirlInsomniaHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/SWCowgirlInsomniaSkin", - "/Lotus/Upgrades/Skins/Cowgirl/SWDevilRangerHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/SWDevilRangerSkin", - "/Lotus/Upgrades/Skins/Cowgirl/SWGraxxMesaHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/SWGraxxMesaSkin", - "/Lotus/Upgrades/Skins/Cowgirl/SWKudegraHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/SWKudegraSkin", - "/Lotus/Upgrades/Skins/Cowgirl/SWMarletHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/SWMarletSkin", - "/Lotus/Upgrades/Skins/Cowgirl/SWMesnificentHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/SWMesnificentSkin", - "/Lotus/Upgrades/Skins/Cowgirl/SWRThreeDeadEyeHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/SWRThreeFalconHelmet", - "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlAgile", - "/Lotus/Upgrades/Skins/Cowgirl/UnlockCowgirlNoble", - "/Lotus/Upgrades/Skins/Crowns/DexVinesCrown", - "/Lotus/Upgrades/Skins/Crowns/HeirloomFrostCrown", - "/Lotus/Upgrades/Skins/Crowns/HeirloomMagCrown", - "/Lotus/Upgrades/Skins/Crowns/LaurelHaloCrown", - "/Lotus/Upgrades/Skins/CrpArSniper/CrpArSniperLichSkin", - "/Lotus/Upgrades/Skins/Dagath/DagathAgileAnims", - "/Lotus/Upgrades/Skins/Dagath/DagathAltHelmet", - "/Lotus/Upgrades/Skins/Dagath/DagathHelmet", - "/Lotus/Upgrades/Skins/Dagath/DagathNobleAnims", - "/Lotus/Upgrades/Skins/Dagath/DagathSkin", - "/Lotus/Upgrades/Skins/Dagath/UnlockDagathAgile", - "/Lotus/Upgrades/Skins/Dagath/UnlockDagathNoble", - "/Lotus/Upgrades/Skins/Dazzle/BratonDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/CestraDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/DeraDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/DetronDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/DualCestraDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/FluxRifleDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/LankaDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/LectaDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/ObexDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/OpticorDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/PentaDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/ProvaDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/ShockExergisSkin", - "/Lotus/Upgrades/Skins/Dazzle/ShockFalcorSkin", - "/Lotus/Upgrades/Skins/Dazzle/ShockPlinxSkin", - "/Lotus/Upgrades/Skins/Dazzle/SnipetronDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/SpectraDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/SupraDazzleCamo", - "/Lotus/Upgrades/Skins/Dazzle/TetraDazzleCamo", - "/Lotus/Upgrades/Skins/Decree/BansheeAlternateSkin", - "/Lotus/Upgrades/Skins/Decree/BansheeDeluxeArmLeftArmor", - "/Lotus/Upgrades/Skins/Decree/BansheeDeluxeHelmet", - "/Lotus/Upgrades/Skins/Decree/BansheeDeluxeSuit", - "/Lotus/Upgrades/Skins/Decree/BansheePrimeHelmet", - "/Lotus/Upgrades/Skins/Decree/BansheePrimeSkin", - "/Lotus/Upgrades/Skins/Decree/BansheeSkin", - "/Lotus/Upgrades/Skins/Decree/BansheeVoidShellArmLeftArmor", - "/Lotus/Upgrades/Skins/Decree/BansheeVoidShellHelmet", - "/Lotus/Upgrades/Skins/Decree/BansheeVoidShellSkin", - "/Lotus/Upgrades/Skins/Decree/DecreeAgileAnims", - "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmet", - "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmetB", - "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmetBStatless", - "/Lotus/Upgrades/Skins/Decree/DecreeAltHelmetStatless", - "/Lotus/Upgrades/Skins/Decree/DecreeHelmet", - "/Lotus/Upgrades/Skins/Decree/DecreeNobleAnims", - "/Lotus/Upgrades/Skins/Decree/SWBansheeBotLHelmet", - "/Lotus/Upgrades/Skins/Decree/SWBansheeBotLSkin", - "/Lotus/Upgrades/Skins/Decree/SWDominiaHelmet", - "/Lotus/Upgrades/Skins/Decree/SWRSixBansheeEchoHelmet", - "/Lotus/Upgrades/Skins/Decree/SWSonorityHelmet", - "/Lotus/Upgrades/Skins/Decree/SWSonoritySkin", - "/Lotus/Upgrades/Skins/Decree/UnlockDecreeAgile", - "/Lotus/Upgrades/Skins/Decree/UnlockDecreeNoble", - "/Lotus/Upgrades/Skins/Deluxe/AshDeluxeIIBowSkin", - "/Lotus/Upgrades/Skins/Deluxe/AtlasDeluxeSparring", - "/Lotus/Upgrades/Skins/Deluxe/BansheeDeluxeSonicor", - "/Lotus/Upgrades/Skins/Deluxe/ChromaDeluxeSword", - "/Lotus/Upgrades/Skins/Deluxe/FrostDeluxeDualSword", - "/Lotus/Upgrades/Skins/Deluxe/FrostDeluxeSword", - "/Lotus/Upgrades/Skins/Deluxe/IvaraDeluxeBowSkin", - "/Lotus/Upgrades/Skins/Deluxe/LimboDeluxeCardSkin", - "/Lotus/Upgrades/Skins/Deluxe/LokiDeluxeDualKamas", - "/Lotus/Upgrades/Skins/Deluxe/NovaDeluxeIISniperSkin", - "/Lotus/Upgrades/Skins/Deluxe/NovaDeluxePolearm", - "/Lotus/Upgrades/Skins/Deluxe/NyxDeluxeShotgunSkin", - "/Lotus/Upgrades/Skins/Deluxe/OberonDeluxeAckBrunt", - "/Lotus/Upgrades/Skins/Deluxe/OberonDeluxeParis", - "/Lotus/Upgrades/Skins/Deluxe/OctaviaDeluxeBoltor", - "/Lotus/Upgrades/Skins/Deluxe/ProteaDeluxeSkinTonkor", - "/Lotus/Upgrades/Skins/Deluxe/ProteaDeluxeThrowingSkin", - "/Lotus/Upgrades/Skins/Deluxe/StyanaxDeluxeSpearSkin", - "/Lotus/Upgrades/Skins/Deluxe/WispDeluxeFulminSkin", - "/Lotus/Upgrades/Skins/Deluxe/WukongDeluxeWhipSkin", - "/Lotus/Upgrades/Skins/Devourer/DevourerAgileAnims", - "/Lotus/Upgrades/Skins/Devourer/DevourerAltHelmet", - "/Lotus/Upgrades/Skins/Devourer/DevourerHelmet", - "/Lotus/Upgrades/Skins/Devourer/DevourerNobleAnims", - "/Lotus/Upgrades/Skins/Devourer/DevourerSkin", - "/Lotus/Upgrades/Skins/Devourer/GrendelDeluxeHelmet", - "/Lotus/Upgrades/Skins/Devourer/GrendelDeluxeSkin", - "/Lotus/Upgrades/Skins/Devourer/GrendelPrimeHelmet", - "/Lotus/Upgrades/Skins/Devourer/GrendelPrimeSkin", - "/Lotus/Upgrades/Skins/Devourer/GrendelVoidshellHelmet", - "/Lotus/Upgrades/Skins/Devourer/GrendelVoidshellSkin", - "/Lotus/Upgrades/Skins/Devourer/SWMolochHelmet", - "/Lotus/Upgrades/Skins/Devourer/SWMolochSkin", - "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerAgile", - "/Lotus/Upgrades/Skins/Devourer/UnlockDevourerNoble", - "/Lotus/Upgrades/Skins/DexTheSecond/NintendoDexDakra", - "/Lotus/Upgrades/Skins/DexTheSecond/ObsidianDexDakra", - "/Lotus/Upgrades/Skins/Dragon/ChromaAgileAnims", - "/Lotus/Upgrades/Skins/Dragon/ChromaAltBHelmet", - "/Lotus/Upgrades/Skins/Dragon/ChromaAlternateSkin", - "/Lotus/Upgrades/Skins/Dragon/ChromaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Dragon/ChromaDeluxeSkin", - "/Lotus/Upgrades/Skins/Dragon/ChromaDeluxeWings", - "/Lotus/Upgrades/Skins/Dragon/ChromaLNYHelmet", - "/Lotus/Upgrades/Skins/Dragon/ChromaLNYSkin", - "/Lotus/Upgrades/Skins/Dragon/ChromaLNYWings", - "/Lotus/Upgrades/Skins/Dragon/ChromaNobleAnims", - "/Lotus/Upgrades/Skins/Dragon/ChromaPrimeHelmet", - "/Lotus/Upgrades/Skins/Dragon/ChromaPrimeSkin", - "/Lotus/Upgrades/Skins/Dragon/ChromaSkin", - "/Lotus/Upgrades/Skins/Dragon/DragonAltHelmet", - "/Lotus/Upgrades/Skins/Dragon/DragonHelmet", - "/Lotus/Upgrades/Skins/Dragon/SWGraxxChromaHelmet", - "/Lotus/Upgrades/Skins/Dragon/SWGraxxChromaSkin", - "/Lotus/Upgrades/Skins/Dragon/SWMorkaiHelmet", - "/Lotus/Upgrades/Skins/Dragon/SWMorkaiSkin", - "/Lotus/Upgrades/Skins/Dragon/SWRFiveChromaDrevniSkin", - "/Lotus/Upgrades/Skins/Dragon/SWRSixChromaVojnikSkin", - "/Lotus/Upgrades/Skins/Dragon/SWRThreeKaijuHelmet", - "/Lotus/Upgrades/Skins/Dragon/SWRThreeTarrasqueHelmet", - "/Lotus/Upgrades/Skins/Dragon/SWThyrusHelmet", - "/Lotus/Upgrades/Skins/Dragon/SWThyrusSkin", - "/Lotus/Upgrades/Skins/Dragon/UnlockChromaAgile", - "/Lotus/Upgrades/Skins/Dragon/UnlockChromaNoble", - "/Lotus/Upgrades/Skins/DualAxe/DaggerAxe", - "/Lotus/Upgrades/Skins/Duviri/DuviriSwordTowerShieldSkin", - "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaFireEphemera", - "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaIceEphemera", - "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaImpactEphemera", - "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaLightningEphemera", - "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaMagneticEphemera", - "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaToxinEphemera", - "/Lotus/Upgrades/Skins/Effects/Kuva/KuvaTricksterEphemera", - "/Lotus/Upgrades/Skins/Effects/ArchonShardEphemera", - "/Lotus/Upgrades/Skins/Effects/ArchonShardEphemeraB", - "/Lotus/Upgrades/Skins/Effects/AvatarBloodA", - "/Lotus/Upgrades/Skins/Effects/AvatarSmokeA", - "/Lotus/Upgrades/Skins/Effects/BaroEphemeraA", - "/Lotus/Upgrades/Skins/Effects/BaroEphemeraB", - "/Lotus/Upgrades/Skins/Effects/BaruukPrimeEphemera", - "/Lotus/Upgrades/Skins/Effects/BaseFootsteps", - "/Lotus/Upgrades/Skins/Effects/BatWingsEphemera", - "/Lotus/Upgrades/Skins/Effects/BatsEphemera", - "/Lotus/Upgrades/Skins/Effects/Conquera2022Ephemera", - "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", - "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraA", - "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraB", - "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraC", - "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraD", - "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraE", - "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraF", - "/Lotus/Upgrades/Skins/Effects/CorpusLichEphemeraG", - "/Lotus/Upgrades/Skins/Effects/CupidWingsEphemera", - "/Lotus/Upgrades/Skins/Effects/DeimosEphemera", - "/Lotus/Upgrades/Skins/Effects/DogDaysEphemera", - "/Lotus/Upgrades/Skins/Effects/EphemeraGaraPrime", - "/Lotus/Upgrades/Skins/Effects/EphemeraNezhaPrime", - "/Lotus/Upgrades/Skins/Effects/EphemeraPrimeA", - "/Lotus/Upgrades/Skins/Effects/FootstepsEasterEggs", - "/Lotus/Upgrades/Skins/Effects/FootstepsEidolon", - "/Lotus/Upgrades/Skins/Effects/FootstepsElectrical", - "/Lotus/Upgrades/Skins/Effects/FootstepsHeat", - "/Lotus/Upgrades/Skins/Effects/FootstepsIce", - "/Lotus/Upgrades/Skins/Effects/FootstepsMaple", - "/Lotus/Upgrades/Skins/Effects/FootstepsPetals", - "/Lotus/Upgrades/Skins/Effects/GarudaPrimeEphemera", - "/Lotus/Upgrades/Skins/Effects/GrendelPrimeEphemera", - "/Lotus/Upgrades/Skins/Effects/HydroidDeluxeEphemera", - "/Lotus/Upgrades/Skins/Effects/InfestedEphemeraA", - "/Lotus/Upgrades/Skins/Effects/LNYDragonEphemera", - "/Lotus/Upgrades/Skins/Effects/LotusFlowers", - "/Lotus/Upgrades/Skins/Effects/LunarEphemera", - "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraB", - "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraC", - "/Lotus/Upgrades/Skins/Effects/NightwaveIntermissionEphemera", - "/Lotus/Upgrades/Skins/Effects/ObsidianEphemeraA", - "/Lotus/Upgrades/Skins/Effects/OrbsEphemera", - "/Lotus/Upgrades/Skins/Effects/OvergrowthEphemera", - "/Lotus/Upgrades/Skins/Effects/PeachBlossomsEphemera", - "/Lotus/Upgrades/Skins/Effects/ProteaPrimeEphemera", - "/Lotus/Upgrades/Skins/Effects/SandmanEphemera", - "/Lotus/Upgrades/Skins/Effects/SentientDeadEphemera", - "/Lotus/Upgrades/Skins/Effects/SmokeEphemera", - "/Lotus/Upgrades/Skins/Effects/SnowEphemera", - "/Lotus/Upgrades/Skins/Effects/TatsuSkullEphemera", - "/Lotus/Upgrades/Skins/Effects/TennoCon2021Ephemera", - "/Lotus/Upgrades/Skins/Effects/TwitchEphemera", - "/Lotus/Upgrades/Skins/Effects/VoidAngelEphemeraA", - "/Lotus/Upgrades/Skins/Effects/VoidAngelEphemeraB", - "/Lotus/Upgrades/Skins/Effects/WebEphemera", - "/Lotus/Upgrades/Skins/Effects/WerewolfEphemera", - "/Lotus/Upgrades/Skins/Effects/XakuDeluxeEphemera", - "/Lotus/Upgrades/Skins/EliteAlerts/EliteAlertAmprex", - "/Lotus/Upgrades/Skins/EliteAlerts/EliteAlertAtomos", - "/Lotus/Upgrades/Skins/EliteAlerts/EliteAlertAtterax", - "/Lotus/Upgrades/Skins/Ember/EmberAgileAnims", - "/Lotus/Upgrades/Skins/Ember/EmberAlternateSkin", - "/Lotus/Upgrades/Skins/Ember/EmberDeluxeDualPistolSkin", - "/Lotus/Upgrades/Skins/Ember/EmberDeluxeHelmet", - "/Lotus/Upgrades/Skins/Ember/EmberDeluxeIIFlamethrowerSkin", - "/Lotus/Upgrades/Skins/Ember/EmberDeluxeIIHelmet", - "/Lotus/Upgrades/Skins/Ember/EmberDeluxeIISkin", - "/Lotus/Upgrades/Skins/Ember/EmberDeluxePistolSkin", - "/Lotus/Upgrades/Skins/Ember/EmberDeluxeSkin", - "/Lotus/Upgrades/Skins/Ember/EmberHelmet", - "/Lotus/Upgrades/Skins/Ember/EmberHelmetAlt", - "/Lotus/Upgrades/Skins/Ember/EmberHelmetAltB", - "/Lotus/Upgrades/Skins/Ember/EmberHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Ember/EmberHelmetAltStatless", - "/Lotus/Upgrades/Skins/Ember/EmberNobleAnims", - "/Lotus/Upgrades/Skins/Ember/EmberPrimeHelmet", - "/Lotus/Upgrades/Skins/Ember/EmberPrimeSkin", - "/Lotus/Upgrades/Skins/Ember/EmberSkin", - "/Lotus/Upgrades/Skins/Ember/EmberVoidshellHelmet", - "/Lotus/Upgrades/Skins/Ember/EmberVoidshellSkin", - "/Lotus/Upgrades/Skins/Ember/SWIgnitionHelmet", - "/Lotus/Upgrades/Skins/Ember/SWIgnitionSkin", - "/Lotus/Upgrades/Skins/Ember/SWMagestyHelmet", - "/Lotus/Upgrades/Skins/Ember/SWMagestySkin", - "/Lotus/Upgrades/Skins/Ember/SWRSixEmberGraxxHelmet", - "/Lotus/Upgrades/Skins/Ember/SWRSixEmberGraxxSkin", - "/Lotus/Upgrades/Skins/Ember/UnlockEmberAgile", - "/Lotus/Upgrades/Skins/Ember/UnlockEmberNoble", - "/Lotus/Upgrades/Skins/Events/AcolyteStalkerMios", - "/Lotus/Upgrades/Skins/Events/ArchRocketCrossbowGrineer", - "/Lotus/Upgrades/Skins/Events/BlackoutOrthos", - "/Lotus/Upgrades/Skins/Events/BunnyEars", - "/Lotus/Upgrades/Skins/Events/GlaxionPolar", - "/Lotus/Upgrades/Skins/Events/InfQuantaInfestedAladV", - "/Lotus/Upgrades/Skins/Events/PremiumBunnyEars", - "/Lotus/Upgrades/Skins/Events/WolfStalkerMask", - "/Lotus/Upgrades/Skins/Excalibur/DiscordExcalibur", - "/Lotus/Upgrades/Skins/Excalibur/DiscordExcaliburHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburAgileAnims", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburAlternateSkin", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeAgileAnims", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeNobleAnims", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeSkin", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDeluxeSugatra", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDexHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburDexSkin", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAlt", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAltB", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetAltStatless", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetMordred", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburHelmetSWROne", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburNobleAnims", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburPrimeAlabasterSkin", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburPrimeHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburPrimeSkin", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburProtoHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburProtoSuit", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburSkin", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraAgileAnims", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraAltHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraNobleAnims", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburVeilBreakerHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ExcaliburVeilBreakerSkin", - "/Lotus/Upgrades/Skins/Excalibur/NintendoExcalibur", - "/Lotus/Upgrades/Skins/Excalibur/NintendoExcaliburHelmet", - "/Lotus/Upgrades/Skins/Excalibur/ObsidianExcaliburHelmetB", - "/Lotus/Upgrades/Skins/Excalibur/ObsidianExcaliburSkinB", - "/Lotus/Upgrades/Skins/Excalibur/SWArturiusExcaliburHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWCorpraHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWCorpraSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWExaltationHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWExaltationSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWExcaliburBotLHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWExcaliburBotLSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWIonExcaliburHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWIonExcaliburSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWIsurusExcaliburHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWOgrantExcaliburHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburApexHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburApexSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburCadutoHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburCadutoSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburGraxxHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWRFourExcaliburGraxxSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWRFourGraxxAltHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWROneExcaliburSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWRThreeSentientSlayerHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWRThreeSentientSlayerSkin", - "/Lotus/Upgrades/Skins/Excalibur/SWRoninHelmet", - "/Lotus/Upgrades/Skins/Excalibur/SWRoninSkin", - "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburAgile", - "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeAgile", - "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburDeluxeNoble", - "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburNoble", - "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraAgile", - "/Lotus/Upgrades/Skins/Excalibur/UnlockExcaliburUmbraNoble", - "/Lotus/Upgrades/Skins/Fairy/FaerieAltHelm", - "/Lotus/Upgrades/Skins/Fairy/FairyAgileAnims", - "/Lotus/Upgrades/Skins/Fairy/FairyAltHelmet", - "/Lotus/Upgrades/Skins/Fairy/FairyHelmet", - "/Lotus/Upgrades/Skins/Fairy/FairyNobleAnims", - "/Lotus/Upgrades/Skins/Fairy/FairySkin", - "/Lotus/Upgrades/Skins/Fairy/SWLympharisHelmet", - "/Lotus/Upgrades/Skins/Fairy/SWLympharisSkin", - "/Lotus/Upgrades/Skins/Fairy/SWPixialystHelmet", - "/Lotus/Upgrades/Skins/Fairy/SWPixialystSkin", - "/Lotus/Upgrades/Skins/Fairy/SWUnseelieHelmet", - "/Lotus/Upgrades/Skins/Fairy/SWUnseelieSkin", - "/Lotus/Upgrades/Skins/Fairy/SWVirajiHelmet", - "/Lotus/Upgrades/Skins/Fairy/SolsticeFairySkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeArchwingPistolsSkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeArchwingSwordSkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeGunbladeSkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIArchwingPistolsSkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIArchwingSwordSkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIAuxWings", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIIHelmet", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeIISkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaDeluxeSkin", - "/Lotus/Upgrades/Skins/Fairy/TitaniaPrimeHelmet", - "/Lotus/Upgrades/Skins/Fairy/TitaniaPrimeSkin", - "/Lotus/Upgrades/Skins/Fairy/UnlockFairyAgile", - "/Lotus/Upgrades/Skins/Fairy/UnlockFairyNoble", - "/Lotus/Upgrades/Skins/Festivities/JingleKnuckles", - "/Lotus/Upgrades/Skins/Festivities/PumpkinHead", - "/Lotus/Upgrades/Skins/Festivities/XmasGlaxion", - "/Lotus/Upgrades/Skins/Festivities/XmasSonicor", - "/Lotus/Upgrades/Skins/Frost/FrostAgileAnims", - "/Lotus/Upgrades/Skins/Frost/FrostAlternateSkin", - "/Lotus/Upgrades/Skins/Frost/FrostDeluxeHelmet", - "/Lotus/Upgrades/Skins/Frost/FrostDeluxeSuit", - "/Lotus/Upgrades/Skins/Frost/FrostHeirloomHelmet", - "/Lotus/Upgrades/Skins/Frost/FrostHeirloomSkin", - "/Lotus/Upgrades/Skins/Frost/FrostHelmet", - "/Lotus/Upgrades/Skins/Frost/FrostHelmetAlt", - "/Lotus/Upgrades/Skins/Frost/FrostHelmetAltB", - "/Lotus/Upgrades/Skins/Frost/FrostHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Frost/FrostHelmetAltStatless", - "/Lotus/Upgrades/Skins/Frost/FrostNobleAnims", - "/Lotus/Upgrades/Skins/Frost/FrostPrimeBodyCoat", - "/Lotus/Upgrades/Skins/Frost/FrostPrimeHelmet", - "/Lotus/Upgrades/Skins/Frost/FrostPrimeLegsCoat", - "/Lotus/Upgrades/Skins/Frost/FrostPrimeSkin", - "/Lotus/Upgrades/Skins/Frost/FrostSkin", - "/Lotus/Upgrades/Skins/Frost/FrostVoidShellHelmet", - "/Lotus/Upgrades/Skins/Frost/FrostVoidShellSkin", - "/Lotus/Upgrades/Skins/Frost/FrostXmasSkin", - "/Lotus/Upgrades/Skins/Frost/NintendoFrost", - "/Lotus/Upgrades/Skins/Frost/NintendoFrostHelmet", - "/Lotus/Upgrades/Skins/Frost/SWFrostStrigidSkin", - "/Lotus/Upgrades/Skins/Frost/SWHimavatHelmet", - "/Lotus/Upgrades/Skins/Frost/SWHisameHelmet", - "/Lotus/Upgrades/Skins/Frost/SWHisameSkin", - "/Lotus/Upgrades/Skins/Frost/SWIonFrostHelmet", - "/Lotus/Upgrades/Skins/Frost/SWIonFrostSkin", - "/Lotus/Upgrades/Skins/Frost/SWMantaZHelmet", - "/Lotus/Upgrades/Skins/Frost/SWRFourFrostJotunHelmet", - "/Lotus/Upgrades/Skins/Frost/SWRSixFrostEmperorHelmet", - "/Lotus/Upgrades/Skins/Frost/SWRSixFrostEmperorSkin", - "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostGrostHelmet", - "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostGrostSkin", - "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostHailstormHelmet", - "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostHailstormSkin", - "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostVojnikHelmet", - "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostVojnikSkin", - "/Lotus/Upgrades/Skins/Frost/SWRThreeFrostZastrugaHelmet", - "/Lotus/Upgrades/Skins/Frost/SWStrigidHelmet", - "/Lotus/Upgrades/Skins/Frost/SWSummitHelmet", - "/Lotus/Upgrades/Skins/Frost/UnlockFrostAgile", - "/Lotus/Upgrades/Skins/Frost/UnlockFrostNoble", - "/Lotus/Upgrades/Skins/Garuda/GarudaAgileAnims", - "/Lotus/Upgrades/Skins/Garuda/GarudaAltHelmet", - "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeClawsSkin", - "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeSkin", - "/Lotus/Upgrades/Skins/Garuda/GarudaDeluxeWarfanSkin", - "/Lotus/Upgrades/Skins/Garuda/GarudaHelmet", - "/Lotus/Upgrades/Skins/Garuda/GarudaNobleAnims", - "/Lotus/Upgrades/Skins/Garuda/GarudaPrimeHelmet", - "/Lotus/Upgrades/Skins/Garuda/GarudaPrimeSkin", - "/Lotus/Upgrades/Skins/Garuda/GarudaSkin", - "/Lotus/Upgrades/Skins/Garuda/SWGarudaTengushinHelmet", - "/Lotus/Upgrades/Skins/Garuda/SWGarudaTengushinSkin", - "/Lotus/Upgrades/Skins/Garuda/SWSakhuraHelmet", - "/Lotus/Upgrades/Skins/Garuda/SWSuccessorHelmet", - "/Lotus/Upgrades/Skins/Garuda/SWSuccessorSkin", - "/Lotus/Upgrades/Skins/Garuda/SWTiamatHelmet", - "/Lotus/Upgrades/Skins/Garuda/SWTiamatSkin", - "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaAgile", - "/Lotus/Upgrades/Skins/Garuda/UnlockGarudaNoble", - "/Lotus/Upgrades/Skins/Geode/GeodeAgileAnims", - "/Lotus/Upgrades/Skins/Geode/GeodeAltHelmet", - "/Lotus/Upgrades/Skins/Geode/GeodeHelmet", - "/Lotus/Upgrades/Skins/Geode/GeodeNobleAnims", - "/Lotus/Upgrades/Skins/Geode/GeodeSkin", - "/Lotus/Upgrades/Skins/Geode/UnlockGeodeAgile", - "/Lotus/Upgrades/Skins/Geode/UnlockGeodeNoble", - "/Lotus/Upgrades/Skins/Glass/GaraAlternateSkin", - "/Lotus/Upgrades/Skins/Glass/GaraDeluxeSword", - "/Lotus/Upgrades/Skins/Glass/GaraPrimeHelmet", - "/Lotus/Upgrades/Skins/Glass/GaraPrimeSkin", - "/Lotus/Upgrades/Skins/Glass/GlassAgileAnims", - "/Lotus/Upgrades/Skins/Glass/GlassAltHelmet", - "/Lotus/Upgrades/Skins/Glass/GlassDeluxeHelmet", - "/Lotus/Upgrades/Skins/Glass/GlassDeluxeSkin", - "/Lotus/Upgrades/Skins/Glass/GlassDeluxeWings", - "/Lotus/Upgrades/Skins/Glass/GlassHelmet", - "/Lotus/Upgrades/Skins/Glass/GlassNobleAnims", - "/Lotus/Upgrades/Skins/Glass/GlassSkin", - "/Lotus/Upgrades/Skins/Glass/SWGaraAdoraHelmet", - "/Lotus/Upgrades/Skins/Glass/SWRouenHelmet", - "/Lotus/Upgrades/Skins/Glass/SWSilicaHelmet", - "/Lotus/Upgrades/Skins/Glass/SWZamariuHelmet", - "/Lotus/Upgrades/Skins/Glass/SWZamariuSkin", - "/Lotus/Upgrades/Skins/Glass/UnlockGlassAgile", - "/Lotus/Upgrades/Skins/Glass/UnlockGlassNoble", - "/Lotus/Upgrades/Skins/GrineerAssaultRifle/NintendoGrineerAssaultRifleSkin", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestAfuris", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestBallistica", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestBoltor", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestBraton", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDethcube", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDualHeatSwords", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDualVastos", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestDualZoren", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestFuris", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestHeatDagger", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestHeatSword", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestOrthos", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestParis", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestScindo", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestSoma", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestVasto", - "/Lotus/Upgrades/Skins/GrineerForest/GrineerForestVectis", - "/Lotus/Upgrades/Skins/GrineerUrban/AckBruntGrineerUrbanCamo", - "/Lotus/Upgrades/Skins/GrineerUrban/NukorGrineerUrbanCamo", - "/Lotus/Upgrades/Skins/GrineerUrban/OgrisGrineerUrbanCamo", - "/Lotus/Upgrades/Skins/Guandao/NintendoGaundaoSkin", - "/Lotus/Upgrades/Skins/Gyre/GyreAgileAnims", - "/Lotus/Upgrades/Skins/Gyre/GyreAltHelmetA", - "/Lotus/Upgrades/Skins/Gyre/GyreHelmet", - "/Lotus/Upgrades/Skins/Gyre/GyreNobleAnims", - "/Lotus/Upgrades/Skins/Gyre/GyreSkin", - "/Lotus/Upgrades/Skins/Gyre/SWGyreKuvealMonarchHelmet", - "/Lotus/Upgrades/Skins/Gyre/SWGyreKuvealMonarchSkin", - "/Lotus/Upgrades/Skins/Gyre/UnlockGyreAgile", - "/Lotus/Upgrades/Skins/Gyre/UnlockGyreNoble", - "/Lotus/Upgrades/Skins/Halloween/HalloweenAklato", - "/Lotus/Upgrades/Skins/Halloween/HalloweenAkvasto", - "/Lotus/Upgrades/Skins/Halloween/HalloweenAmprex", - "/Lotus/Upgrades/Skins/Halloween/HalloweenAngstrum", - "/Lotus/Upgrades/Skins/Halloween/HalloweenArchSword", - "/Lotus/Upgrades/Skins/Halloween/HalloweenBasmu", - "/Lotus/Upgrades/Skins/Halloween/HalloweenBoltor", - "/Lotus/Upgrades/Skins/Halloween/HalloweenBraton", - "/Lotus/Upgrades/Skins/Halloween/HalloweenBuzlok", - "/Lotus/Upgrades/Skins/Halloween/HalloweenDaikyu", - "/Lotus/Upgrades/Skins/Halloween/HalloweenDarkDagger", - "/Lotus/Upgrades/Skins/Halloween/HalloweenDarkSplitSword", - "/Lotus/Upgrades/Skins/Halloween/HalloweenDragonNikana", - "/Lotus/Upgrades/Skins/Halloween/HalloweenDread", - "/Lotus/Upgrades/Skins/Halloween/HalloweenDualZoren", - "/Lotus/Upgrades/Skins/Halloween/HalloweenGalatine", - "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaive", - "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaxion", - "/Lotus/Upgrades/Skins/Halloween/HalloweenGorgon", - "/Lotus/Upgrades/Skins/Halloween/HalloweenGrakata", - "/Lotus/Upgrades/Skins/Halloween/HalloweenGram", - "/Lotus/Upgrades/Skins/Halloween/HalloweenGrinlok", - "/Lotus/Upgrades/Skins/Halloween/HalloweenImperator", - "/Lotus/Upgrades/Skins/Halloween/HalloweenJatKittag", - "/Lotus/Upgrades/Skins/Halloween/HalloweenKronen", - "/Lotus/Upgrades/Skins/Halloween/HalloweenKunai", - "/Lotus/Upgrades/Skins/Halloween/HalloweenLato", - "/Lotus/Upgrades/Skins/Halloween/HalloweenLatoVandal", - "/Lotus/Upgrades/Skins/Halloween/HalloweenMarelok", - "/Lotus/Upgrades/Skins/Halloween/HalloweenNikana", - "/Lotus/Upgrades/Skins/Halloween/HalloweenNukor", - "/Lotus/Upgrades/Skins/Halloween/HalloweenOpticor", - "/Lotus/Upgrades/Skins/Halloween/HalloweenOrthos", - "/Lotus/Upgrades/Skins/Halloween/HalloweenParis", - "/Lotus/Upgrades/Skins/Halloween/HalloweenRegorAxeShield", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSarpa", - "/Lotus/Upgrades/Skins/Halloween/HalloweenScindo", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSilvaAndAegis", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSimulor", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSkana", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSobek", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSoma", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSonicor", - "/Lotus/Upgrades/Skins/Halloween/HalloweenSpira", - "/Lotus/Upgrades/Skins/Halloween/HalloweenStradavar", - "/Lotus/Upgrades/Skins/Halloween/HalloweenTonkor", - "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGrakatas", - "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGremlins", - "/Lotus/Upgrades/Skins/Halloween/HalloweenVasto", - "/Lotus/Upgrades/Skins/Halos/PrototypeRaidHalo", - "/Lotus/Upgrades/Skins/Hammer/GrnHammer", - "/Lotus/Upgrades/Skins/Hammer/RhinoDeluxeHammer", - "/Lotus/Upgrades/Skins/Hammer/SolsticeHeliocor", - "/Lotus/Upgrades/Skins/Hammer/SpragHammerSkin", - "/Lotus/Upgrades/Skins/Harkonar/HarkonarGLAPistol", - "/Lotus/Upgrades/Skins/Harkonar/HarkonarGLARifle", - "/Lotus/Upgrades/Skins/Harkonar/HarkonarGrnFlameSpear", - "/Lotus/Upgrades/Skins/Harkonar/HarkonarGrnSpark", - "/Lotus/Upgrades/Skins/Harlequin/HarlequinAgileAnims", - "/Lotus/Upgrades/Skins/Harlequin/HarlequinHelmet", - "/Lotus/Upgrades/Skins/Harlequin/HarlequinHelmetAlt", - "/Lotus/Upgrades/Skins/Harlequin/HarlequinNobleAnims", - "/Lotus/Upgrades/Skins/Harlequin/MirageAltBHelmet", - "/Lotus/Upgrades/Skins/Harlequin/MirageAlternateSkin", - "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeAgileAnims", - "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeHelmet", - "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeNobleAnims", - "/Lotus/Upgrades/Skins/Harlequin/MirageDeluxeSkin", - "/Lotus/Upgrades/Skins/Harlequin/MiragePrimeHelmet", - "/Lotus/Upgrades/Skins/Harlequin/MiragePrimeSkin", - "/Lotus/Upgrades/Skins/Harlequin/MirageSkin", - "/Lotus/Upgrades/Skins/Harlequin/MirageVoidShellHelmet", - "/Lotus/Upgrades/Skins/Harlequin/MirageVoidShellSkin", - "/Lotus/Upgrades/Skins/Harlequin/MirageXmasSkin", - "/Lotus/Upgrades/Skins/Harlequin/SWKitsuneHelmet", - "/Lotus/Upgrades/Skins/Harlequin/SWKitsuneSkin", - "/Lotus/Upgrades/Skins/Harlequin/SWMirageKuvaelHelmet", - "/Lotus/Upgrades/Skins/Harlequin/SWMirageKuvaelSkin", - "/Lotus/Upgrades/Skins/Harlequin/SWMithraHelmet", - "/Lotus/Upgrades/Skins/Harlequin/SWMithraSkin", - "/Lotus/Upgrades/Skins/Harlequin/SWMorgaineHelmet", - "/Lotus/Upgrades/Skins/Harlequin/SWMorgaineSkin", - "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageGraxxHelmet", - "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageGraxxSkin", - "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageJolliHelmet", - "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageSigynHelmet", - "/Lotus/Upgrades/Skins/Harlequin/SWRFourMirageSigynSkin", - "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinAgile", - "/Lotus/Upgrades/Skins/Harlequin/UnlockHarlequinNoble", - "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeAgile", - "/Lotus/Upgrades/Skins/Harlequin/UnlockMirageDeluxeNoble", - "/Lotus/Upgrades/Skins/HeavyAxe/GrnAxe", - "/Lotus/Upgrades/Skins/HolsterCustomizations/ClawsHips", - "/Lotus/Upgrades/Skins/HolsterCustomizations/DaggerHipsL", - "/Lotus/Upgrades/Skins/HolsterCustomizations/DaggerLowerBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/DualDaggerLowerBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/DualDaggerStraight", - "/Lotus/Upgrades/Skins/HolsterCustomizations/DualSwordHighLow", - "/Lotus/Upgrades/Skins/HolsterCustomizations/DualSwordHips", - "/Lotus/Upgrades/Skins/HolsterCustomizations/DualSwordStraight", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GauntletsInPlace", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GlaiveInPlace", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GlaiveUpperBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GreatSwordCrossed", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GreatSwordHips", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GreatSwordUpperBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeHipsL", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeHipsR", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeLowerBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/GunbladeUpperBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/HalberdCrossed", - "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyHipsL", - "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyHipsR", - "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyLowerBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/HeavyUpperBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/KatanaCrossedL", - "/Lotus/Upgrades/Skins/HolsterCustomizations/KatanaCrossedR", - "/Lotus/Upgrades/Skins/HolsterCustomizations/KatanaHipsL", - "/Lotus/Upgrades/Skins/HolsterCustomizations/LongKatanaUpperBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/NunchakuCrossed", - "/Lotus/Upgrades/Skins/HolsterCustomizations/NunchakuHips", - "/Lotus/Upgrades/Skins/HolsterCustomizations/NunchakuLowerBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/PunchKickInPlace", - "/Lotus/Upgrades/Skins/HolsterCustomizations/RapierBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/RapierHipsL", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SawHeavyUpperBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/StaffCrossed", - "/Lotus/Upgrades/Skins/HolsterCustomizations/StaffLowerBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/StaffStraight", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordHipsL", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordHipsR", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordShieldDefault", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordShieldDownward", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordShieldUpward", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordUpperBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/SwordWhipLowerBack", - "/Lotus/Upgrades/Skins/HolsterCustomizations/TonfaCrossed", - "/Lotus/Upgrades/Skins/HolsterCustomizations/TonfaHips", - "/Lotus/Upgrades/Skins/HolsterCustomizations/TonfaUpperBack", - "/Lotus/Upgrades/Skins/Hoplite/HopliteAgileAnims", - "/Lotus/Upgrades/Skins/Hoplite/HopliteAltBHelmet", - "/Lotus/Upgrades/Skins/Hoplite/HopliteAltCHelmet", - "/Lotus/Upgrades/Skins/Hoplite/HopliteAltDHelmet", - "/Lotus/Upgrades/Skins/Hoplite/HopliteHelmet", - "/Lotus/Upgrades/Skins/Hoplite/HopliteNobleAnims", - "/Lotus/Upgrades/Skins/Hoplite/HopliteSkin", - "/Lotus/Upgrades/Skins/Hoplite/StyanaxDeluxeAuxChest", - "/Lotus/Upgrades/Skins/Hoplite/StyanaxDeluxeHelmet", - "/Lotus/Upgrades/Skins/Hoplite/StyanaxDeluxeSkin", - "/Lotus/Upgrades/Skins/Hoplite/StyanaxVoidshellHelmet", - "/Lotus/Upgrades/Skins/Hoplite/StyanaxVoidshellSkin", - "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteAgile", - "/Lotus/Upgrades/Skins/Hoplite/UnlockHopliteNoble", - "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraAngry", - "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraFear", - "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraFlower", - "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraSnake", - "/Lotus/Upgrades/Skins/Horse/Effects/HorseCrownEphemeraTeardrop", - "/Lotus/Upgrades/Skins/Horse/ErsatzBodySkinA", - "/Lotus/Upgrades/Skins/Horse/ErsatzBodySkinC", - "/Lotus/Upgrades/Skins/Horse/ErsatzBodySkinDefault", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetA", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetB", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetC", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseHelmetD", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseSaddleA", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseSaddleB", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseSaddleC", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailA", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailB", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailC", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailD", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefaultA", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefaultC", - "/Lotus/Upgrades/Skins/Horse/ErsatzHorseWingsA", - "/Lotus/Upgrades/Skins/Horse/GaussDeluxeHorseHelmet", - "/Lotus/Upgrades/Skins/Horse/GaussDeluxeHorseSaddle", - "/Lotus/Upgrades/Skins/Horse/GaussDeluxeHorseTail", - "/Lotus/Upgrades/Skins/Horse/HorseHelmetDrapery", - "/Lotus/Upgrades/Skins/Horse/HorseSaddleDrapery", - "/Lotus/Upgrades/Skins/Horse/HorseTailDrapery", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerA", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerB", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerBaroA", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerBaroB", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerC", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerD", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerE", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerF", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerG", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerH", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerI", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerInfested", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerJ", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerK", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerL", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerM", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerN", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerO", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerP", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoA", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoB", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoC", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerPromoD", - "/Lotus/Upgrades/Skins/Hoverboard/HoverboardStickerWolf", - "/Lotus/Upgrades/Skins/Hydroid/HydroidAgileAnims", - "/Lotus/Upgrades/Skins/Hydroid/HydroidDeluxeHelmet", - "/Lotus/Upgrades/Skins/Hydroid/HydroidDeluxeSpearGunSkin", - "/Lotus/Upgrades/Skins/Hydroid/HydroidDeluxeSuit", - "/Lotus/Upgrades/Skins/Hydroid/HydroidNobleAnims", - "/Lotus/Upgrades/Skins/Hydroid/HydroidPrimeSkin", - "/Lotus/Upgrades/Skins/Hydroid/HydroidSkin", - "/Lotus/Upgrades/Skins/Hydroid/SWKarkinosHelmet", - "/Lotus/Upgrades/Skins/Hydroid/SWPoseidonHelmet", - "/Lotus/Upgrades/Skins/Hydroid/SWPoseidonSkin", - "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidAgile", - "/Lotus/Upgrades/Skins/Hydroid/UnlockHydroidNoble", - "/Lotus/Upgrades/Skins/IAHGames/IAHGamesBratonSkin", - "/Lotus/Upgrades/Skins/Infestation/InfestationAgileAnims", - "/Lotus/Upgrades/Skins/Infestation/InfestationAltHelmet", - "/Lotus/Upgrades/Skins/Infestation/InfestationHelmet", - "/Lotus/Upgrades/Skins/Infestation/InfestationNobleAnims", - "/Lotus/Upgrades/Skins/Infestation/InfestationSkin", - "/Lotus/Upgrades/Skins/Infestation/NidusAltHelmet", - "/Lotus/Upgrades/Skins/Infestation/NidusAlternateSkin", - "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeClawsSkin", - "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeHelmet", - "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeHipCloth", - "/Lotus/Upgrades/Skins/Infestation/NidusDeluxeSkin", - "/Lotus/Upgrades/Skins/Infestation/NidusPrimeHelmet", - "/Lotus/Upgrades/Skins/Infestation/NidusPrimeSkin", - "/Lotus/Upgrades/Skins/Infestation/NidusVoidShellHelmet", - "/Lotus/Upgrades/Skins/Infestation/NidusVoidShellSkin", - "/Lotus/Upgrades/Skins/Infestation/SWKuvealScoungerHelmet", - "/Lotus/Upgrades/Skins/Infestation/SWNidusKuvaelSkin", - "/Lotus/Upgrades/Skins/Infestation/SWNightHunterHelmet", - "/Lotus/Upgrades/Skins/Infestation/SWNightHunterSkin", - "/Lotus/Upgrades/Skins/Infestation/SWTechnocystHelmet", - "/Lotus/Upgrades/Skins/Infestation/SWTechnocystSkin", - "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationAgile", - "/Lotus/Upgrades/Skins/Infestation/UnlockInfestationNoble", - "/Lotus/Upgrades/Skins/IronFrame/HildrynDeluxeAxeSkin", - "/Lotus/Upgrades/Skins/IronFrame/HildrynPrimeHelmet", - "/Lotus/Upgrades/Skins/IronFrame/HildrynPrimeSkin", - "/Lotus/Upgrades/Skins/IronFrame/IronFrameAgileAnims", - "/Lotus/Upgrades/Skins/IronFrame/IronFrameHelmet", - "/Lotus/Upgrades/Skins/IronFrame/IronFrameNobleAnims", - "/Lotus/Upgrades/Skins/IronFrame/IronFrameSkin", - "/Lotus/Upgrades/Skins/IronFrame/SWHildrynSigrunHelmet", - "/Lotus/Upgrades/Skins/IronFrame/SWHildrynSigrunSkin", - "/Lotus/Upgrades/Skins/IronFrame/ShieldAltHelmet", - "/Lotus/Upgrades/Skins/IronFrame/ShieldDeluxeBlastSkin", - "/Lotus/Upgrades/Skins/IronFrame/ShieldDeluxeBodySkin", - "/Lotus/Upgrades/Skins/IronFrame/ShieldDeluxeHelmet", - "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameAgile", - "/Lotus/Upgrades/Skins/IronFrame/UnlockIronFrameNoble", - "/Lotus/Upgrades/Skins/Jade/JadeAgileAnims", - "/Lotus/Upgrades/Skins/Jade/JadeHelmet", - "/Lotus/Upgrades/Skins/Jade/JadeHelmetAlt", - "/Lotus/Upgrades/Skins/Jade/JadeHelmetAltB", - "/Lotus/Upgrades/Skins/Jade/JadeHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Jade/JadeHelmetAltStatless", - "/Lotus/Upgrades/Skins/Jade/JadeNobleAnims", - "/Lotus/Upgrades/Skins/Jade/NyxAlternateSkin", - "/Lotus/Upgrades/Skins/Jade/NyxDeluxeHelmet", - "/Lotus/Upgrades/Skins/Jade/NyxDeluxeSuit", - "/Lotus/Upgrades/Skins/Jade/NyxNemesisHelmet", - "/Lotus/Upgrades/Skins/Jade/NyxNemesisSuit", - "/Lotus/Upgrades/Skins/Jade/NyxPrimeHelmet", - "/Lotus/Upgrades/Skins/Jade/NyxPrimeSkin", - "/Lotus/Upgrades/Skins/Jade/NyxSkin", - "/Lotus/Upgrades/Skins/Jade/SWAmpulexHelmet", - "/Lotus/Upgrades/Skins/Jade/SWAscophiliaHelmet", - "/Lotus/Upgrades/Skins/Jade/SWAscophiliaSkin", - "/Lotus/Upgrades/Skins/Jade/SWAureliaHelmet", - "/Lotus/Upgrades/Skins/Jade/SWAureliaSkin", - "/Lotus/Upgrades/Skins/Jade/SWAuresHelmet", - "/Lotus/Upgrades/Skins/Jade/SWAuresSkin", - "/Lotus/Upgrades/Skins/Jade/SWCarnifexHelmet", - "/Lotus/Upgrades/Skins/Jade/SWCarnifexSkin", - "/Lotus/Upgrades/Skins/Jade/SWRFourNyxAthenaHelmet", - "/Lotus/Upgrades/Skins/Jade/SWRFourNyxAthenaSkin", - "/Lotus/Upgrades/Skins/Jade/SWRSixNyxGraxxHelmet", - "/Lotus/Upgrades/Skins/Jade/SWRSixNyxGraxxSkin", - "/Lotus/Upgrades/Skins/Jade/SWSaikouHelmet", - "/Lotus/Upgrades/Skins/Jade/SWSaikouSkin", - "/Lotus/Upgrades/Skins/Jade/SWTechnopsycheHelmet", - "/Lotus/Upgrades/Skins/Jade/SWTechnopsycheSkin", - "/Lotus/Upgrades/Skins/Jade/UnlockJadeAgile", - "/Lotus/Upgrades/Skins/Jade/UnlockJadeNoble", - "/Lotus/Upgrades/Skins/KDrive/KDriveVelocipodRareSkin", - "/Lotus/Upgrades/Skins/KDrive/KDriveVelocipodSkin", - "/Lotus/Upgrades/Skins/KDrive/KDriveVelocipodUncommonSkin", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridArmLeftWithACUnit", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridArms", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridBackWithACUnit", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridFront", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourAridLegs", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourCorpusBack", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourDamagedArms", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourDamagedBack", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourDamagedLegs", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardArms", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardBack", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardFront", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourStandardLegs", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourWinterArmLeft", - "/Lotus/Upgrades/Skins/Kahl/KahlArmourWinterPack", - "/Lotus/Upgrades/Skins/Kahl/KahlBody", - "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchA", - "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchB", - "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchC", - "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchD", - "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchE", - "/Lotus/Upgrades/Skins/Kahl/KahlEyepatchF", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetCorpus", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetDamaged", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetDamagedWithMask", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetHood", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetKavaLich3A", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetMushroom", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetPith", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetStandard", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetTall", - "/Lotus/Upgrades/Skins/Kahl/KahlHelmetWater", - "/Lotus/Upgrades/Skins/Katana/AshNikana", - "/Lotus/Upgrades/Skins/Katana/ExcaliburDeluxeNikana", - "/Lotus/Upgrades/Skins/Katana/UmbraDaxNikana", - "/Lotus/Upgrades/Skins/Katana/UngulataKatana", - "/Lotus/Upgrades/Skins/KatanaSheaths/DragonKatanaSheathLightning", - "/Lotus/Upgrades/Skins/KatanaSheaths/KatanaSheathLightning", - "/Lotus/Upgrades/Skins/Khora/KhoraAgileAnims", - "/Lotus/Upgrades/Skins/Khora/KhoraAltHelmet", - "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeAgileAnims", - "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeHelmet", - "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeKavatSkin", - "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeNobleAnims", - "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeSuit", - "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeVenariSkin", - "/Lotus/Upgrades/Skins/Khora/KhoraDeluxeWhipBladeSkin", - "/Lotus/Upgrades/Skins/Khora/KhoraHelmet", - "/Lotus/Upgrades/Skins/Khora/KhoraNobleAnims", - "/Lotus/Upgrades/Skins/Khora/KhoraPrimeAltHelmet", - "/Lotus/Upgrades/Skins/Khora/KhoraPrimeHelmet", - "/Lotus/Upgrades/Skins/Khora/KhoraPrimeSkin", - "/Lotus/Upgrades/Skins/Khora/KhoraSkin", - "/Lotus/Upgrades/Skins/Khora/SWKhoraFieraHelmet", - "/Lotus/Upgrades/Skins/Khora/SWKhoraGraxxHelmet", - "/Lotus/Upgrades/Skins/Khora/SWKhoraGraxxSkin", - "/Lotus/Upgrades/Skins/Khora/SWKhoraMithraHelmet", - "/Lotus/Upgrades/Skins/Khora/SWKhoraMithraSkin", - "/Lotus/Upgrades/Skins/Khora/SWKhoraOiranHelmet", - "/Lotus/Upgrades/Skins/Khora/SWKhoraOiranSkin", - "/Lotus/Upgrades/Skins/Khora/SWLaveauHelmet", - "/Lotus/Upgrades/Skins/Khora/UnlockKhoraAgile", - "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeAgile", - "/Lotus/Upgrades/Skins/Khora/UnlockKhoraDeluxeNoble", - "/Lotus/Upgrades/Skins/Khora/UnlockKhoraNoble", - "/Lotus/Upgrades/Skins/Khora/VenariPrimeSkin", - "/Lotus/Upgrades/Skins/Khora/VenariSkin", - "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiAklato", - "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiBraton", - "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiKunai", - "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiLato", - "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiParis", - "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiSkana", - "/Lotus/Upgrades/Skins/Kintsukuroi/KintsukuroiStaff", - "/Lotus/Upgrades/Skins/Kubrows/Armor/GrineerQueenArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/GrnAmphisKubrowArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/HelminthDeluxeArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorA", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorB", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorBJade", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorBaro", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorC", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorPrisma", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorStalker", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorTrinityDeluxe", - "/Lotus/Upgrades/Skins/Kubrows/Armor/KubrowArmorUmbra", - "/Lotus/Upgrades/Skins/Kubrows/Armor/Lunar2022KubrowArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/NightwaveSeason5HarkaKubrowArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/PacifistKubrowArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/PrimeKubrowArmorA", - "/Lotus/Upgrades/Skins/Kubrows/Armor/TnTigrisKubrowArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/Twitch2021IfritKubrowArmor", - "/Lotus/Upgrades/Skins/Kubrows/Armor/WukongPrimeKubrowArmor", - "/Lotus/Upgrades/Skins/Kubrows/Collars/KubrowCollarDefault", - "/Lotus/Upgrades/Skins/Kubrows/Collars/KubrowCollarXmas", - "/Lotus/Upgrades/Skins/Kubrows/Collars/PrimeKubrowCollarA", - "/Lotus/Upgrades/Skins/Kubrows/Fur/ContestKubrowFur", - "/Lotus/Upgrades/Skins/Kubrows/Fur/DaybreakKubrowFur", - "/Lotus/Upgrades/Skins/Kubrows/Fur/SolsticeKubrowFur", - "/Lotus/Upgrades/Skins/Leverian/NezhaLeverian/NezhaLeverianPolearm", - "/Lotus/Upgrades/Skins/Liset/GrineerShip/LisetGrineerShipDefault", - "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeDefault", - "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeGrineerQueens", - "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinIfrit", - "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinNekrognos", - "/Lotus/Upgrades/Skins/Liset/Gyroscope/LisetGyroscopeSkinPrimeTrader", - "/Lotus/Upgrades/Skins/Liset/Gyroscope/SWXiphosLilieaeSkin", - "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipDefault", - "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinA", - "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinB", - "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinC", - "/Lotus/Upgrades/Skins/Liset/ZarimanShip/LisetZarimanShipSkinD", - "/Lotus/Upgrades/Skins/Liset/ConquestHoodOrnament", - "/Lotus/Upgrades/Skins/Liset/DexLisetSkin", - "/Lotus/Upgrades/Skins/Liset/InarosLisetSkin", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkyDefault", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinDeluxe", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinGrineerQueens", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinInaros", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinPrimeTrader", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSound", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinSplash", - "/Lotus/Upgrades/Skins/Liset/LisetBlueSkySkinStalker", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinCamo", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinDefault", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinExotic", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinGrineerQueens", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinHalloween", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinInaros", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinIridos", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinNautilus", - "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinPrimeTrader", - "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemB", - "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemC", - "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemD", - "/Lotus/Upgrades/Skins/Liset/LisetSkinFlavourItemDefault", - "/Lotus/Upgrades/Skins/Liset/LisetSkinGrineerQueens", - "/Lotus/Upgrades/Skins/Liset/LisetSkinHalloween", - "/Lotus/Upgrades/Skins/Liset/LisetSkinJade", - "/Lotus/Upgrades/Skins/Liset/LisetSkinKaboom", - "/Lotus/Upgrades/Skins/Liset/LisetSkinKotora", - "/Lotus/Upgrades/Skins/Liset/LisetSkinObsidian", - "/Lotus/Upgrades/Skins/Liset/LisetSkinPrime", - "/Lotus/Upgrades/Skins/Liset/LisetSkinRelayEvent", - "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROne", - "/Lotus/Upgrades/Skins/Liset/LisetSkinSWROneHellkite", - "/Lotus/Upgrades/Skins/Liset/LisetSkinSWRThreeMaltzurOculus", - "/Lotus/Upgrades/Skins/Liset/LisetSkinTwitchPrime", - "/Lotus/Upgrades/Skins/Liset/LisetSkinVoidTrader", - "/Lotus/Upgrades/Skins/Liset/MITWHoodOrnamentA", - "/Lotus/Upgrades/Skins/Liset/MITWShipAttachmentItem", - "/Lotus/Upgrades/Skins/Liset/MaduraiHoodOrnament", - "/Lotus/Upgrades/Skins/Liset/MasteryHoodOrnament", - "/Lotus/Upgrades/Skins/Liset/NaramonHoodOrnament", - "/Lotus/Upgrades/Skins/Liset/NoraShipDefault", - "/Lotus/Upgrades/Skins/Liset/SWHerulystLisetSkin", - "/Lotus/Upgrades/Skins/Liset/SWLilieaeSkin", - "/Lotus/Upgrades/Skins/Liset/SWMantisVammatarSkin", - "/Lotus/Upgrades/Skins/Liset/SWMithraLisetSkin", - "/Lotus/Upgrades/Skins/Liset/SWProtegeLisetSkin", - "/Lotus/Upgrades/Skins/Liset/SWVammatarLisetSkin", - "/Lotus/Upgrades/Skins/Liset/UnairuHoodOrnament", - "/Lotus/Upgrades/Skins/Liset/VazarinHoodOrnament", - "/Lotus/Upgrades/Skins/Liset/ZenurikHoodOrnament", - "/Lotus/Upgrades/Skins/Liset/ZephyrDeluxeShipSkin", - "/Lotus/Upgrades/Skins/Loki/LokiAgileAnims", - "/Lotus/Upgrades/Skins/Loki/LokiAltCloakA", - "/Lotus/Upgrades/Skins/Loki/LokiAltCloakB", - "/Lotus/Upgrades/Skins/Loki/LokiAlternateSkin", - "/Lotus/Upgrades/Skins/Loki/LokiDeluxeHelmet", - "/Lotus/Upgrades/Skins/Loki/LokiDeluxeSuit", - "/Lotus/Upgrades/Skins/Loki/LokiEnigmaHelmet", - "/Lotus/Upgrades/Skins/Loki/LokiHelmet", - "/Lotus/Upgrades/Skins/Loki/LokiHelmetAlt", - "/Lotus/Upgrades/Skins/Loki/LokiHelmetAltB", - "/Lotus/Upgrades/Skins/Loki/LokiHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Loki/LokiHelmetAltStatless", - "/Lotus/Upgrades/Skins/Loki/LokiNobleAnims", - "/Lotus/Upgrades/Skins/Loki/LokiPrimeHelmet", - "/Lotus/Upgrades/Skins/Loki/LokiPrimeSkin", - "/Lotus/Upgrades/Skins/Loki/LokiSkin", - "/Lotus/Upgrades/Skins/Loki/LokiTwitchHelmet", - "/Lotus/Upgrades/Skins/Loki/LokiTwitchSkin", - "/Lotus/Upgrades/Skins/Loki/LokiVoidShellHelmet", - "/Lotus/Upgrades/Skins/Loki/LokiVoidShellSkin", - "/Lotus/Upgrades/Skins/Loki/NintendoLoki", - "/Lotus/Upgrades/Skins/Loki/NintendoLokitHelmet", - "/Lotus/Upgrades/Skins/Loki/SWErebusHelmet", - "/Lotus/Upgrades/Skins/Loki/SWErebusSkin", - "/Lotus/Upgrades/Skins/Loki/SWIncubusHelmet", - "/Lotus/Upgrades/Skins/Loki/SWIncubusSkin", - "/Lotus/Upgrades/Skins/Loki/SWJotunheimHelmet", - "/Lotus/Upgrades/Skins/Loki/SWJotunheimSkin", - "/Lotus/Upgrades/Skins/Loki/SWKodamaHelmet", - "/Lotus/Upgrades/Skins/Loki/SWKodamaSkin", - "/Lotus/Upgrades/Skins/Loki/SWLupuHelmet", - "/Lotus/Upgrades/Skins/Loki/SWRFiveLokiRogueHelmet", - "/Lotus/Upgrades/Skins/Loki/SWRFourLokiErsatzHelmet", - "/Lotus/Upgrades/Skins/Loki/UnlockLokiAgile", - "/Lotus/Upgrades/Skins/Loki/UnlockLokiNoble", - "/Lotus/Upgrades/Skins/Lotus/EidolonLotusSkin", - "/Lotus/Upgrades/Skins/Lotus/HalloweenLotusSkin", - "/Lotus/Upgrades/Skins/Lotus/LotusHelmet", - "/Lotus/Upgrades/Skins/Lotus/LotusSkin", - "/Lotus/Upgrades/Skins/Lotus/NewWarLotusSkin", - "/Lotus/Upgrades/Skins/Lotus/SentientLotusSkin", - "/Lotus/Upgrades/Skins/Lotus/UnmaskedLotusSkin", - "/Lotus/Upgrades/Skins/Lotus/XakuDeluxeLotusSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024DragonSigil", - "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Nukor", - "/Lotus/Upgrades/Skins/LunarNewYear/LNY2024Ogris", - "/Lotus/Upgrades/Skins/LunarNewYear/LNYHookSword", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020AcceltraSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020OrthosSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2020PyranaSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022HeavyBladeSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022IgnisSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2022Zarr", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CedoSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023CernosSkin", - "/Lotus/Upgrades/Skins/LunarNewYear/Lunar2023NagantakaSkin", - "/Lotus/Upgrades/Skins/Lunaro/ArcataSkinA", - "/Lotus/Upgrades/Skins/Mag/DiscordMag", - "/Lotus/Upgrades/Skins/Mag/DiscordMagHelmet", - "/Lotus/Upgrades/Skins/Mag/MagAgileAnims", - "/Lotus/Upgrades/Skins/Mag/MagAlternateSkin", - "/Lotus/Upgrades/Skins/Mag/MagDeluxeHelmet", - "/Lotus/Upgrades/Skins/Mag/MagDeluxeSkin", - "/Lotus/Upgrades/Skins/Mag/MagDeluxeTonfaSkin", - "/Lotus/Upgrades/Skins/Mag/MagHeirloomHelmet", - "/Lotus/Upgrades/Skins/Mag/MagHeirloomSkin", - "/Lotus/Upgrades/Skins/Mag/MagHelmet", - "/Lotus/Upgrades/Skins/Mag/MagHelmetAlt", - "/Lotus/Upgrades/Skins/Mag/MagHelmetAltB", - "/Lotus/Upgrades/Skins/Mag/MagHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Mag/MagHelmetAltStatless", - "/Lotus/Upgrades/Skins/Mag/MagNobleAnims", - "/Lotus/Upgrades/Skins/Mag/MagPrimeHelmet", - "/Lotus/Upgrades/Skins/Mag/MagPrimeSkin", - "/Lotus/Upgrades/Skins/Mag/MagSkin", - "/Lotus/Upgrades/Skins/Mag/MagVoidShellHelmet", - "/Lotus/Upgrades/Skins/Mag/MagVoidShellSkin", - "/Lotus/Upgrades/Skins/Mag/NintendoMag", - "/Lotus/Upgrades/Skins/Mag/NintendoMagHelmet", - "/Lotus/Upgrades/Skins/Mag/SWAnthroMagHelmet", - "/Lotus/Upgrades/Skins/Mag/SWCorpraMagHelmet", - "/Lotus/Upgrades/Skins/Mag/SWCorpraMagSkin", - "/Lotus/Upgrades/Skins/Mag/SWFerroHelmet", - "/Lotus/Upgrades/Skins/Mag/SWFerroSkin", - "/Lotus/Upgrades/Skins/Mag/SWGraxxMagHelmet", - "/Lotus/Upgrades/Skins/Mag/SWGraxxMagSkin", - "/Lotus/Upgrades/Skins/Mag/SWInductionMagHelmet", - "/Lotus/Upgrades/Skins/Mag/SWMagCelestisHelmet", - "/Lotus/Upgrades/Skins/Mag/SWMagCelestisSkin", - "/Lotus/Upgrades/Skins/Mag/SWROneMagHelmet", - "/Lotus/Upgrades/Skins/Mag/SWROneMagSkin", - "/Lotus/Upgrades/Skins/Mag/SWRThreeAlataHelmet", - "/Lotus/Upgrades/Skins/Mag/SWRThreeAlataSkin", - "/Lotus/Upgrades/Skins/Mag/SWRThreeDipoleSkin", - "/Lotus/Upgrades/Skins/Mag/SWRThreeOrbitHelmet", - "/Lotus/Upgrades/Skins/Mag/SWToroidalMagHelmet", - "/Lotus/Upgrades/Skins/Mag/UnlockMagAgile", - "/Lotus/Upgrades/Skins/Mag/UnlockMagNoble", - "/Lotus/Upgrades/Skins/Magician/LimboDeluxeHelmet", - "/Lotus/Upgrades/Skins/Magician/LimboDeluxeSkin", - "/Lotus/Upgrades/Skins/Magician/LimboImmortalSkin", - "/Lotus/Upgrades/Skins/Magician/LimboPrimeHelmet", - "/Lotus/Upgrades/Skins/Magician/LimboPrimeSkin", - "/Lotus/Upgrades/Skins/Magician/LimboVoidshellHelmet", - "/Lotus/Upgrades/Skins/Magician/LimboVoidshellSkin", - "/Lotus/Upgrades/Skins/Magician/MagicianAgileAnims", - "/Lotus/Upgrades/Skins/Magician/MagicianAltBHelmet", - "/Lotus/Upgrades/Skins/Magician/MagicianAristeasHelmet", - "/Lotus/Upgrades/Skins/Magician/MagicianHelmet", - "/Lotus/Upgrades/Skins/Magician/MagicianNobleAnims", - "/Lotus/Upgrades/Skins/Magician/MagicianSkin", - "/Lotus/Upgrades/Skins/Magician/SWAureolusHelmet", - "/Lotus/Upgrades/Skins/Magician/SWLimboGraxxHelmet", - "/Lotus/Upgrades/Skins/Magician/SWLimboGraxxSkin", - "/Lotus/Upgrades/Skins/Magician/SWVasionaHelmet", - "/Lotus/Upgrades/Skins/Magician/SWVasionaSkin", - "/Lotus/Upgrades/Skins/Magician/SWVenariHelmet", - "/Lotus/Upgrades/Skins/Magician/SWVistyxioHelmet", - "/Lotus/Upgrades/Skins/Magician/SWVistyxioSkin", - "/Lotus/Upgrades/Skins/Magician/UnlockMagicianAgile", - "/Lotus/Upgrades/Skins/Magician/UnlockMagicianNoble", - "/Lotus/Upgrades/Skins/MeleeDangles/BaroInarosMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/BaroMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/CatenoPrimeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/CephalonSugatraDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/ChainTridentMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/ChromaDeluxeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/CitrineSugatra", - "/Lotus/Upgrades/Skins/MeleeDangles/CordsMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/CorpusMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/ESGrnSugatraMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/EmbolistMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/FireMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/GrnMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/GrnQueensMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/IceMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/InfShellSugatraMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/InfestedMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/JadePatikaMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/KazeruPrimeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/LNYBirdSugatra", - "/Lotus/Upgrades/Skins/MeleeDangles/LNYCarpSugatra", - "/Lotus/Upgrades/Skins/MeleeDangles/LimboDeluxeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/LotusPointMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/MoonWarfanSugatraMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/NekrosDeluxeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/NikanaPrimeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/Obsidian2SugatraMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/ObsidianSugatraMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/PolearmFriendlyMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/PrimeDangleEMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/PrimeDangleF", - "/Lotus/Upgrades/Skins/MeleeDangles/PrimeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/RazorMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/SarynDeluxeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/SentSugatraNewWarDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/SugatraNintendo", - "/Lotus/Upgrades/Skins/MeleeDangles/SurakaPrimeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/TennoCon2022SugatraMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/TennoMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/TnRailJackSugatra", - "/Lotus/Upgrades/Skins/MeleeDangles/TnSugatraNewPlayerXpMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/TwitchPrimeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/ValaPrimeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/VaubanDeluxeMeleeDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/WegameChinaKnotDangle", - "/Lotus/Upgrades/Skins/MeleeDangles/XBoxSugatra2MeleeDangle", - "/Lotus/Upgrades/Skins/Miscellaneous/HuntsmanSoma", - "/Lotus/Upgrades/Skins/MoaPet/BaroMoaPetSkin", - "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityA", - "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityB", - "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityC", - "/Lotus/Upgrades/Skins/MoaPet/MoaPetPersonalityD", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingAgileAnims", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingAltHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingAltHelmetB", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingChamelionHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingChamelionSkin", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingNobleAnims", - "/Lotus/Upgrades/Skins/MonkeyKing/MonkeyKingSkin", - "/Lotus/Upgrades/Skins/MonkeyKing/SWAumanHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/SWAumanSkin", - "/Lotus/Upgrades/Skins/MonkeyKing/SWPiercingEyeHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/SWPiercingEyeSkin", - "/Lotus/Upgrades/Skins/MonkeyKing/SWRFiveWukongXingzheHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/SWWukongMithraHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/SWWukongMithraSkin", - "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingAgile", - "/Lotus/Upgrades/Skins/MonkeyKing/UnlockMonkeyKingNoble", - "/Lotus/Upgrades/Skins/MonkeyKing/WukongDeluxeHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/WukongDeluxeSkin", - "/Lotus/Upgrades/Skins/MonkeyKing/WukongDeluxeStaffSkin", - "/Lotus/Upgrades/Skins/MonkeyKing/WukongPrimeHelmet", - "/Lotus/Upgrades/Skins/MonkeyKing/WukongPrimeSkin", - "/Lotus/Upgrades/Skins/Mustache/Stache", - "/Lotus/Upgrades/Skins/Mustache/Stache02", - "/Lotus/Upgrades/Skins/Mustache/Stache03", - "/Lotus/Upgrades/Skins/Mustache/Stache04", - "/Lotus/Upgrades/Skins/Mustache/Stache05", - "/Lotus/Upgrades/Skins/Mustache/Stache06", - "/Lotus/Upgrades/Skins/Mustache/Stache07", - "/Lotus/Upgrades/Skins/Mustache/Stache08", - "/Lotus/Upgrades/Skins/Mustache/Stache09", - "/Lotus/Upgrades/Skins/Mustache/Stache10", - "/Lotus/Upgrades/Skins/Necramech/MechWeapon/MechEventCortegeSkin", - "/Lotus/Upgrades/Skins/Necramech/MechWeapon/MechEventMausolonSkin", - "/Lotus/Upgrades/Skins/Necramech/MechWeapon/MechEventMorghaSkin", - "/Lotus/Upgrades/Skins/Necramech/InfestedNecraMechHelmet", - "/Lotus/Upgrades/Skins/Necramech/InfestedNecraMechSkin", - "/Lotus/Upgrades/Skins/Necramech/NecraMechCHelmetA", - "/Lotus/Upgrades/Skins/Necramech/NecraMechCHelmetB", - "/Lotus/Upgrades/Skins/Necramech/NecraMechCSkin", - "/Lotus/Upgrades/Skins/Necramech/NecramechSnakeHelmet", - "/Lotus/Upgrades/Skins/Necramech/NecramechSnakeSkin", - "/Lotus/Upgrades/Skins/Necramech/NecramechVoidRigDefaultHelmet", - "/Lotus/Upgrades/Skins/Necramech/NecramechVoidRigDefaultSkin", - "/Lotus/Upgrades/Skins/Necramech/TefilahIridosHelmet", - "/Lotus/Upgrades/Skins/Necramech/TefilahIridosSkin", - "/Lotus/Upgrades/Skins/Necramech/ThanomechVoidRigDefaultHelmet", - "/Lotus/Upgrades/Skins/Necramech/ThanomechVoidRigDefaultSkin", - "/Lotus/Upgrades/Skins/Necramech/VoidrigDOTDHelmet", - "/Lotus/Upgrades/Skins/Necramech/VoidrigDOTDSkin", - "/Lotus/Upgrades/Skins/Necramech/VoidrigDSChromaHelmet", - "/Lotus/Upgrades/Skins/Necramech/VoidrigDSChromaSkin", - "/Lotus/Upgrades/Skins/Necro/NecroAgileAnims", - "/Lotus/Upgrades/Skins/Necro/NecroAraknidHelmet", - "/Lotus/Upgrades/Skins/Necro/NecroDangles", - "/Lotus/Upgrades/Skins/Necro/NecroHelmet", - "/Lotus/Upgrades/Skins/Necro/NecroNobleAnims", - "/Lotus/Upgrades/Skins/Necro/NecroShroudHelmet", - "/Lotus/Upgrades/Skins/Necro/NekrosAlternateSkin", - "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeDangles", - "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeHelmet", - "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeScytheSkin", - "/Lotus/Upgrades/Skins/Necro/NekrosDeluxeSkin", - "/Lotus/Upgrades/Skins/Necro/NekrosPrimeHelmet", - "/Lotus/Upgrades/Skins/Necro/NekrosPrimeSkin", - "/Lotus/Upgrades/Skins/Necro/NekrosSkin", - "/Lotus/Upgrades/Skins/Necro/NekrosVoidShellHelmet", - "/Lotus/Upgrades/Skins/Necro/NekrosVoidShellSkin", - "/Lotus/Upgrades/Skins/Necro/SWCharonHelmet", - "/Lotus/Upgrades/Skins/Necro/SWNekrosAusirylystHelmet", - "/Lotus/Upgrades/Skins/Necro/SWNekrosAusirylystSkin", - "/Lotus/Upgrades/Skins/Necro/SWNekrosGraxxHelmet", - "/Lotus/Upgrades/Skins/Necro/SWNekrosGraxxSkin", - "/Lotus/Upgrades/Skins/Necro/SWNekrosIonHelmet", - "/Lotus/Upgrades/Skins/Necro/SWRThreeLazarusHelmet", - "/Lotus/Upgrades/Skins/Necro/SWVisceraNekrosAuxillaryScarf", - "/Lotus/Upgrades/Skins/Necro/UnlockNecroAgile", - "/Lotus/Upgrades/Skins/Necro/UnlockNecroNoble", - "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPBoSkin", - "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPBratonSkin", - "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPKunaiSkin", - "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPLatoSkin", - "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPParisSkin", - "/Lotus/Upgrades/Skins/NewPlayerXP/NewPlayerXPSkanaSkin", - "/Lotus/Upgrades/Skins/Nezha/NezhaAgileAnims", - "/Lotus/Upgrades/Skins/Nezha/NezhaAlt2Helmet", - "/Lotus/Upgrades/Skins/Nezha/NezhaAltHelmet", - "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeDaggerSkin", - "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeDualDaggerSkin", - "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Nezha/NezhaDeluxeSkin", - "/Lotus/Upgrades/Skins/Nezha/NezhaHelmet", - "/Lotus/Upgrades/Skins/Nezha/NezhaNobleAnims", - "/Lotus/Upgrades/Skins/Nezha/NezhaPrimeHelmet", - "/Lotus/Upgrades/Skins/Nezha/NezhaPrimeSkin", - "/Lotus/Upgrades/Skins/Nezha/NezhaSkin", - "/Lotus/Upgrades/Skins/Nezha/SWDevineHelmet", - "/Lotus/Upgrades/Skins/Nezha/SWDevineSkin", - "/Lotus/Upgrades/Skins/Nezha/SWDracunHelmet", - "/Lotus/Upgrades/Skins/Nezha/SWDracunSkin", - "/Lotus/Upgrades/Skins/Nezha/SWYakshaHelmet", - "/Lotus/Upgrades/Skins/Nezha/SWYakshaSkin", - "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaAgile", - "/Lotus/Upgrades/Skins/Nezha/UnlockNezhaNoble", - "/Lotus/Upgrades/Skins/Nightwatch/NightwatchBrakk", - "/Lotus/Upgrades/Skins/Nightwatch/NightwatchDualCleavers", - "/Lotus/Upgrades/Skins/Nightwatch/NightwatchGrinlok", - "/Lotus/Upgrades/Skins/Nightwatch/NightwatchJatKittag", - "/Lotus/Upgrades/Skins/Nightwatch/NightwatchMachete", - "/Lotus/Upgrades/Skins/Nightwatch/NightwatchMarelok", - "/Lotus/Upgrades/Skins/Nightwatch/NightwatchTonkor", - "/Lotus/Upgrades/Skins/Nightwave/CephPolearmSkin", - "/Lotus/Upgrades/Skins/Nightwave/DayBreakGlaiveSkin", - "/Lotus/Upgrades/Skins/Nightwave/DaybreakCedoSkin", - "/Lotus/Upgrades/Skins/Nightwave/DaybreakGrnBannerScarf", - "/Lotus/Upgrades/Skins/Nightwave/DaybreakNukorSkin", - "/Lotus/Upgrades/Skins/Nightwave/InfHeavyClawsSkin", - "/Lotus/Upgrades/Skins/Nightwave/InfTwoHandedKatanaSkin", - "/Lotus/Upgrades/Skins/Ninja/AshAlternateSkin", - "/Lotus/Upgrades/Skins/Ninja/AshDeluxeHelmet", - "/Lotus/Upgrades/Skins/Ninja/AshDeluxeSkin", - "/Lotus/Upgrades/Skins/Ninja/AshPrimeHelmet", - "/Lotus/Upgrades/Skins/Ninja/AshPrimeSkin", - "/Lotus/Upgrades/Skins/Ninja/NinjaAgileAnims", - "/Lotus/Upgrades/Skins/Ninja/NinjaAltCloakA", - "/Lotus/Upgrades/Skins/Ninja/NinjaAltCloakB", - "/Lotus/Upgrades/Skins/Ninja/NinjaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Ninja/NinjaDeluxeSuit", - "/Lotus/Upgrades/Skins/Ninja/NinjaHelmet", - "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAlt", - "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAltB", - "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Ninja/NinjaHelmetAltStatless", - "/Lotus/Upgrades/Skins/Ninja/NinjaNobleAnims", - "/Lotus/Upgrades/Skins/Ninja/NinjaSkin", - "/Lotus/Upgrades/Skins/Ninja/SWBaihuHelmet", - "/Lotus/Upgrades/Skins/Ninja/SWBaihuSkin", - "/Lotus/Upgrades/Skins/Ninja/SWIchneumonHelmet", - "/Lotus/Upgrades/Skins/Ninja/SWIchneumonSkin", - "/Lotus/Upgrades/Skins/Ninja/SWRSixAshCarabidHelmet", - "/Lotus/Upgrades/Skins/Ninja/SWRyugaHelmet", - "/Lotus/Upgrades/Skins/Ninja/SWRyugaSkin", - "/Lotus/Upgrades/Skins/Ninja/SWTsukuyomiHelmet", - "/Lotus/Upgrades/Skins/Ninja/SWTsukuyomiSkin", - "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaAgile", - "/Lotus/Upgrades/Skins/Ninja/UnlockNinjaNoble", - "/Lotus/Upgrades/Skins/Nvidia/NvidiaBratonSkin", - "/Lotus/Upgrades/Skins/Odalisk/OdaliskAgileAnims", - "/Lotus/Upgrades/Skins/Odalisk/OdaliskAlt2Helmet", - "/Lotus/Upgrades/Skins/Odalisk/OdaliskAltHelmet", - "/Lotus/Upgrades/Skins/Odalisk/OdaliskHelmet", - "/Lotus/Upgrades/Skins/Odalisk/OdaliskNobleAnims", - "/Lotus/Upgrades/Skins/Odalisk/OdaliskSkin", - "/Lotus/Upgrades/Skins/Odalisk/ProteaDeluxeHelmet", - "/Lotus/Upgrades/Skins/Odalisk/ProteaDeluxeSkin", - "/Lotus/Upgrades/Skins/Odalisk/ProteaPrimeAltHelmet", - "/Lotus/Upgrades/Skins/Odalisk/ProteaPrimeHelmet", - "/Lotus/Upgrades/Skins/Odalisk/ProteaPrimeSkin", - "/Lotus/Upgrades/Skins/Odalisk/ProteaVoidShellHelmet", - "/Lotus/Upgrades/Skins/Odalisk/ProteaVoidShellSkin", - "/Lotus/Upgrades/Skins/Odalisk/SWKollapsarHelmet", - "/Lotus/Upgrades/Skins/Odalisk/SWKollapsarSkin", - "/Lotus/Upgrades/Skins/Odalisk/SWTechnochronHelmet", - "/Lotus/Upgrades/Skins/Odalisk/SWTechnochronSkin", - "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskAgile", - "/Lotus/Upgrades/Skins/Odalisk/UnlockOdaliskNoble", - "/Lotus/Upgrades/Skins/Operator/Accessories/ArbitrationA", - "/Lotus/Upgrades/Skins/Operator/Accessories/ArbitrationB", - "/Lotus/Upgrades/Skins/Operator/Accessories/AshLevarianTiara", - "/Lotus/Upgrades/Skins/Operator/Accessories/BaroHorn", - "/Lotus/Upgrades/Skins/Operator/Accessories/BaroMouthPieceA", - "/Lotus/Upgrades/Skins/Operator/Accessories/BaroTiara", - "/Lotus/Upgrades/Skins/Operator/Accessories/BaroVisor", - "/Lotus/Upgrades/Skins/Operator/Accessories/CircletA", - "/Lotus/Upgrades/Skins/Operator/Accessories/CircletLaurel", - "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceA", - "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceB", - "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceBaroA", - "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceBaroB", - "/Lotus/Upgrades/Skins/Operator/Accessories/EarpieceBaroC", - "/Lotus/Upgrades/Skins/Operator/Accessories/ExcaliburDeluxeEarpiece", - "/Lotus/Upgrades/Skins/Operator/Accessories/ExcaliburDeluxeEyepiece", - "/Lotus/Upgrades/Skins/Operator/Accessories/ExcaliburDeluxeMouthPiece", - "/Lotus/Upgrades/Skins/Operator/Accessories/EyepieceA", - "/Lotus/Upgrades/Skins/Operator/Accessories/EyepieceB", - "/Lotus/Upgrades/Skins/Operator/Accessories/EyepieceC", - "/Lotus/Upgrades/Skins/Operator/Accessories/NightWaveEarPieceA", - "/Lotus/Upgrades/Skins/Operator/Accessories/NightWaveEyePieceA", - "/Lotus/Upgrades/Skins/Operator/Accessories/NightWaveMaskA", - "/Lotus/Upgrades/Skins/Operator/Accessories/NoraEarpiece", - "/Lotus/Upgrades/Skins/Operator/Accessories/OperatorNefAnyoMask", - "/Lotus/Upgrades/Skins/Operator/Accessories/PiercingA", - "/Lotus/Upgrades/Skins/Operator/Accessories/PrimeAccessoriesAFacial", - "/Lotus/Upgrades/Skins/Operator/Accessories/PrimeAccessoriesBFacial", - "/Lotus/Upgrades/Skins/Operator/Accessories/PrimeAccessoriesCEar", - "/Lotus/Upgrades/Skins/Operator/Accessories/RevenantDeluxeCrown", - "/Lotus/Upgrades/Skins/Operator/Accessories/RevenantDeluxeMask", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWAuresCrownFacialAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWAuresEarAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWBlazeOculusEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWCaeruleaVisorEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWCorailDiademFacialAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWGarasuEarAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWGarasuFacialAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWIryaEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWJotunheimEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWKiritsuneEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWKonvalystEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWLumisEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWOptimaEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWPapillonEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWPraesidiumFacialAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWScleraOculusEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWVuotoEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/SWYureilystEyeAcc", - "/Lotus/Upgrades/Skins/Operator/Accessories/TempleDots", - "/Lotus/Upgrades/Skins/Operator/Accessories/TempleHornDouble", - "/Lotus/Upgrades/Skins/Operator/Accessories/TempleHornSingle", - "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraBlindfold", - "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraCirclet", - "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraEarpiece", - "/Lotus/Upgrades/Skins/Operator/Accessories/UmbraTiara", - "/Lotus/Upgrades/Skins/Operator/Accessories/VayasPrimeDiadem", - "/Lotus/Upgrades/Skins/Operator/Accessories/VayasPrimeEarpiece", - "/Lotus/Upgrades/Skins/Operator/Accessories/VayasPrimeMask", - "/Lotus/Upgrades/Skins/Operator/Amp/DrifterAmpSkin", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/AdultOperatorAgileAnims", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/AdultOperatorNobleAnims", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/BaseOperatorAnims", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/MaduraiAnims", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/NaramonAnims", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/UnairuAnims", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/VazarinAnims", - "/Lotus/Upgrades/Skins/Operator/AnimationSets/ZenurikAnims", - "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/Apparatist/ApparatistArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/GreaseWitch/GreaseArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/Mage/MageArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/Monk/MonkArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/OperatorPrimeArmour/OperatorPrimeArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/Seer/SeerArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/Smelter/SmelterArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/Technomancer/TechnomancerArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourArms", - "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourBody", - "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourHead", - "/Lotus/Upgrades/Skins/Operator/Armour/Teshin/TeshinArmourLegs", - "/Lotus/Upgrades/Skins/Operator/Beards/BeardA", - "/Lotus/Upgrades/Skins/Operator/Beards/BeardB", - "/Lotus/Upgrades/Skins/Operator/Beards/BeardC", - "/Lotus/Upgrades/Skins/Operator/Beards/BeardN", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitA", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultA", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultArabic", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultBase", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultC", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultChameleon", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDaxA", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDaxB", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDeluxeA", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDexOutfit", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDrifterB", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultDrifterGrineer", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultG", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultJ", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultK", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultM2022TennoCon", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultNightSuit", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultOutfit1A", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultOutfit3A", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeA", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeB", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeC", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitAdultPrimeD", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitArabic", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitB", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitC", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitChameleon", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitD", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitDaxB", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitDexOutfit", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitInfestedA", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitM2022TennoCon", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitN", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitNightSuit", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitO", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitOutfit1A", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitOutfit2A", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitOutfit3A", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitPrimeA", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitPrimeC", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitPrimeD", - "/Lotus/Upgrades/Skins/Operator/BodySuits/BodySuitZephyrDeluxe", - "/Lotus/Upgrades/Skins/Operator/BodySuits/NoBodySuit", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingA", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingB", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingC", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingD", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingE", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingF", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingG", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingH", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingI", - "/Lotus/Upgrades/Skins/Operator/FacialMarkings/FacialMarkingJ", - "/Lotus/Upgrades/Skins/Operator/Hair/HairA", - "/Lotus/Upgrades/Skins/Operator/Hair/HairAdultN", - "/Lotus/Upgrades/Skins/Operator/Hair/HairAdultNightwave", - "/Lotus/Upgrades/Skins/Operator/Hair/HairAdultNightwaveB", - "/Lotus/Upgrades/Skins/Operator/Hair/HairB", - "/Lotus/Upgrades/Skins/Operator/Hair/HairC", - "/Lotus/Upgrades/Skins/Operator/Hair/HairD", - "/Lotus/Upgrades/Skins/Operator/Hair/HairE", - "/Lotus/Upgrades/Skins/Operator/Hair/HairG", - "/Lotus/Upgrades/Skins/Operator/Hair/HairH", - "/Lotus/Upgrades/Skins/Operator/Hair/HairI", - "/Lotus/Upgrades/Skins/Operator/Hair/HairJ", - "/Lotus/Upgrades/Skins/Operator/Hair/HairK", - "/Lotus/Upgrades/Skins/Operator/Hair/HairL", - "/Lotus/Upgrades/Skins/Operator/Hair/HairM", - "/Lotus/Upgrades/Skins/Operator/Hair/HairN", - "/Lotus/Upgrades/Skins/Operator/Hair/HairO", - "/Lotus/Upgrades/Skins/Operator/Hair/HairP", - "/Lotus/Upgrades/Skins/Operator/Hair/HairRBun", - "/Lotus/Upgrades/Skins/Operator/Hair/HairRBunBraid", - "/Lotus/Upgrades/Skins/Operator/Hair/HairRPonytail", - "/Lotus/Upgrades/Skins/Operator/Hair/HairS", - "/Lotus/Upgrades/Skins/Operator/Hair/HairSLong", - "/Lotus/Upgrades/Skins/Operator/Hair/HairSShort", - "/Lotus/Upgrades/Skins/Operator/Hair/HairTBraid", - "/Lotus/Upgrades/Skins/Operator/Hair/HairTBun", - "/Lotus/Upgrades/Skins/Operator/Hair/HairTPonytail", - "/Lotus/Upgrades/Skins/Operator/Hair/HairUOneBraid", - "/Lotus/Upgrades/Skins/Operator/Hair/HairUThreeBraid", - "/Lotus/Upgrades/Skins/Operator/Hair/HairUTwoBraid", - "/Lotus/Upgrades/Skins/Operator/Hair/HairVOne", - "/Lotus/Upgrades/Skins/Operator/Hair/HairVThree", - "/Lotus/Upgrades/Skins/Operator/Hair/HairVTwo", - "/Lotus/Upgrades/Skins/Operator/Hair/HairWDreadShortTail", - "/Lotus/Upgrades/Skins/Operator/Hair/HairWDreadTail", - "/Lotus/Upgrades/Skins/Operator/Hair/HairWFuzzyBall", - "/Lotus/Upgrades/Skins/Operator/Hair/HairXDreadShortTail", - "/Lotus/Upgrades/Skins/Operator/Hair/HairXDreadTail", - "/Lotus/Upgrades/Skins/Operator/Hair/HairXFuzzyBall", - "/Lotus/Upgrades/Skins/Operator/Hair/HairZ", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadA", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadB", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadC", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadD", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadE", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadF", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadG", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadH", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadI", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadJ", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadK", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadL", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultFemaleHeadM", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadA", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadB", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadC", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadD", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadE", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadF", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadG", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadH", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadI", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadJ", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadK", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadL", - "/Lotus/Upgrades/Skins/Operator/Heads/AdultMaleHeadM", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadA", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadB", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadC", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadD", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadE", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadF", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadG", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadH", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadI", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadJ", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadK", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadL", - "/Lotus/Upgrades/Skins/Operator/Heads/FemaleHeadM", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadA", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadB", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadC", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadD", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadE", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadF", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadG", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadH", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadI", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadJ", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadK", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadL", - "/Lotus/Upgrades/Skins/Operator/Heads/MaleHeadM", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodA", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultA", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultArabic", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultC", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultChameleon", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDaxA", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDaxB", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDeluxeA", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDrifterB", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultDrifterGrineer", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultG", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultJ", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultK", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultM2022TennoCon", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultOutfit1A", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultOutfit3A", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeA", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeB", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeC", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodAdultPrimeD", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodArabic", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodB", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodC", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodChameleon", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodD", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDaxB", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDuviriAdultOperator", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodDuviriOperator", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodInfestedA", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodLotusWisp", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodM2022TennoCon", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodN", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodNorg", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodO", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodOutfit1A", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodOutfit2A", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodOutfit3A", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodPrimeA", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodPrimeC", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodPrimeD", - "/Lotus/Upgrades/Skins/Operator/Hoods/HoodZephyrDeluxe", - "/Lotus/Upgrades/Skins/Operator/Hoods/JaviExecutionHood", - "/Lotus/Upgrades/Skins/Operator/Hoods/NoHood", - "/Lotus/Upgrades/Skins/Operator/Hoods/UmbraScarfHood", - "/Lotus/Upgrades/Skins/Operator/Hoods/WolfHood", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsA", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultA", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultArabic", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultBase", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultC", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultChameleon", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDaxA", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDaxB", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDeluxeA", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDrifterB", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultDrifterGrineer", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultG", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultJ", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultK", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultM2022TennoCon", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultNightSuit", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultOutfit1A", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultOutfit3A", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeA", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeB", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeC", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsAdultPrimeD", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsArabic", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsB", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsC", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsChameleon", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsD", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsDaxB", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsInfestedA", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsM2022TennoCon", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsN", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsNightSuit", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsO", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsOutfit1A", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsOutfit2A", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsOutfit3A", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsPrimeA", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsPrimeC", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsPrimeD", - "/Lotus/Upgrades/Skins/Operator/Leggings/LeggingsZephyrDeluxe", - "/Lotus/Upgrades/Skins/Operator/Leggings/NoLeggings", - "/Lotus/Upgrades/Skins/Operator/Skirts/HipSocketB", - "/Lotus/Upgrades/Skins/Operator/Skirts/NoSkirt", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultArabic", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultC", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultDaxB", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultG", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultJ", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultK", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultPrimeB", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtAdultPrimeC", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtArabic", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtB", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtDaxB", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtDrifterGrineer", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtE", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtF", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtG", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtJ", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtK", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtN", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtO", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtPrimeB", - "/Lotus/Upgrades/Skins/Operator/Skirts/SkirtPrimeC", - "/Lotus/Upgrades/Skins/Operator/Sleeves/NoSleeves", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesA", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultA", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultArabic", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultBase", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultC", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultChameleon", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDaxA", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDaxB", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDeluxeA", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDrifterB", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultDrifterGrineer", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultG", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultJ", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultK", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultM2022Tennocon", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultNightSuit", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultOutfit1A", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultOutfit3A", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeA", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeB", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeC", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesAdultPrimeD", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesArabic", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesB", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesC", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesChameleon", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesD", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesDaxB", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesDexOutfit", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesInfestedA", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesM2022TennoCon", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesN", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesNightSuit", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesNovaEngineer", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesO", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesOutfit1A", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesOutfit2A", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesOutfit3A", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesPrimeA", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesPrimeC", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesPrimeD", - "/Lotus/Upgrades/Skins/Operator/Sleeves/SleevesZephyrDeluxe", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusA", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusB", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusC", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusD", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooCorpusE", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriA", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriB", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriC", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriD", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriE", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriF", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooDuviriG", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGeode", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGeodeBlack", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGeodeGrey", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerA", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerB", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerC", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerD", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooGrineerE", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveFlower", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveFlowerB", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveHeart", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooLoveRose", - "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooTennoG", - "/Lotus/Upgrades/Skins/Operator/OperatorCustomization", - "/Lotus/Upgrades/Skins/Ornate/OrnateArchSword", - "/Lotus/Upgrades/Skins/Ornate/OrnateBallistica", - "/Lotus/Upgrades/Skins/Ornate/OrnateGalatine", - "/Lotus/Upgrades/Skins/Ornate/OrnateImperator", - "/Lotus/Upgrades/Skins/Ornate/OrnateOrthos", - "/Lotus/Upgrades/Skins/Ornate/OrnateTigris", - "/Lotus/Upgrades/Skins/Ornate/OrnateVectis", - "/Lotus/Upgrades/Skins/Ornate/TekeluAkmagnusSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluAkstilettoSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluAkvastoSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluBazaSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluFragorSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluGlaiveSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluGunsenSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluMagnusSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluNikanaSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluPantheraSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluRedeemerSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluStradavarSkin", - "/Lotus/Upgrades/Skins/Ornate/TekeluVastoSkin", - "/Lotus/Upgrades/Skins/Ostron/ExcaliburMask", - "/Lotus/Upgrades/Skins/Ostron/GrineerMask", - "/Lotus/Upgrades/Skins/Ostron/MagMask", - "/Lotus/Upgrades/Skins/Ostron/RevenantMask", - "/Lotus/Upgrades/Skins/Ostron/TrinityMask", - "/Lotus/Upgrades/Skins/Ostron/VoltMask", - "/Lotus/Upgrades/Skins/Pacifist/BaruukDeluxeHelmet", - "/Lotus/Upgrades/Skins/Pacifist/BaruukDeluxeSkin", - "/Lotus/Upgrades/Skins/Pacifist/BaruukDeluxeSparring", - "/Lotus/Upgrades/Skins/Pacifist/BaruukImmortalSkin", - "/Lotus/Upgrades/Skins/Pacifist/BaruukPrimeHelmet", - "/Lotus/Upgrades/Skins/Pacifist/BaruukPrimeSkin", - "/Lotus/Upgrades/Skins/Pacifist/PacifistAgileAnims", - "/Lotus/Upgrades/Skins/Pacifist/PacifistAltHelmet", - "/Lotus/Upgrades/Skins/Pacifist/PacifistHelmet", - "/Lotus/Upgrades/Skins/Pacifist/PacifistNobleAnims", - "/Lotus/Upgrades/Skins/Pacifist/PacifistSkin", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukBotLSkin", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukBotlHelmet", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukGraxxHelmet", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukGraxxSkin", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukPeacemakerHelmet", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukPeacemakerSkin", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukZamariuHelmet", - "/Lotus/Upgrades/Skins/Pacifist/SWBaruukZamariuSkin", - "/Lotus/Upgrades/Skins/Pacifist/SWBedouinHelmet", - "/Lotus/Upgrades/Skins/Pacifist/SWBedouinSkin", - "/Lotus/Upgrades/Skins/Pacifist/SWShiraanHelmet", - "/Lotus/Upgrades/Skins/Pacifist/SWShiraanSkin", - "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistAgile", - "/Lotus/Upgrades/Skins/Pacifist/UnlockPacifistNoble", - "/Lotus/Upgrades/Skins/Pagemaster/PagemasterAgileAnims", - "/Lotus/Upgrades/Skins/Pagemaster/PagemasterAltHelmet", - "/Lotus/Upgrades/Skins/Pagemaster/PagemasterHelmet", - "/Lotus/Upgrades/Skins/Pagemaster/PagemasterNobleAnims", - "/Lotus/Upgrades/Skins/Pagemaster/PagemasterSkin", - "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterAgile", - "/Lotus/Upgrades/Skins/Pagemaster/UnlockPagemasterNoble", - "/Lotus/Upgrades/Skins/Paladin/OberonAlternateSkin", - "/Lotus/Upgrades/Skins/Paladin/OberonPS4Alt2Helmet", - "/Lotus/Upgrades/Skins/Paladin/OberonPS4Helmet", - "/Lotus/Upgrades/Skins/Paladin/OberonPS4Skin", - "/Lotus/Upgrades/Skins/Paladin/PaladinAgileAnims", - "/Lotus/Upgrades/Skins/Paladin/PaladinDeluxeHelmet", - "/Lotus/Upgrades/Skins/Paladin/PaladinDeluxeSuit", - "/Lotus/Upgrades/Skins/Paladin/PaladinHelmet", - "/Lotus/Upgrades/Skins/Paladin/PaladinHelmetAlt", - "/Lotus/Upgrades/Skins/Paladin/PaladinHelmetAltB", - "/Lotus/Upgrades/Skins/Paladin/PaladinNobleAnims", - "/Lotus/Upgrades/Skins/Paladin/PaladinPrimeHelmet", - "/Lotus/Upgrades/Skins/Paladin/PaladinPrimeSkin", - "/Lotus/Upgrades/Skins/Paladin/PaladinSkin", - "/Lotus/Upgrades/Skins/Paladin/SWFeroshHelmet", - "/Lotus/Upgrades/Skins/Paladin/SWOberonBotLHelmet", - "/Lotus/Upgrades/Skins/Paladin/SWOberonBotLSkin", - "/Lotus/Upgrades/Skins/Paladin/SWOberonYoukaiHelmet", - "/Lotus/Upgrades/Skins/Paladin/SWOberonYoukaiSkin", - "/Lotus/Upgrades/Skins/Paladin/SWRFiveOberonDestrierHelmet", - "/Lotus/Upgrades/Skins/Paladin/SWTaurusHelmet", - "/Lotus/Upgrades/Skins/Paladin/SWWendigoHelmet", - "/Lotus/Upgrades/Skins/Paladin/SWWendigoSkin", - "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinAgile", - "/Lotus/Upgrades/Skins/Paladin/UnlockPaladinNoble", - "/Lotus/Upgrades/Skins/Parazon/TnRailjackDataKnife", - "/Lotus/Upgrades/Skins/PaxDuviricus/KullervoTwoHandedSwordSkin", - "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusAgileAnims", - "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusAltHelmet", - "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusBodyBlades", - "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusHelmet", - "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusNobleAnims", - "/Lotus/Upgrades/Skins/PaxDuviricus/PaxDuviricusSkin", - "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusAgile", - "/Lotus/Upgrades/Skins/PaxDuviricus/UnlockPaxDuviricusNoble", - "/Lotus/Upgrades/Skins/Pirate/HydroidAlternateSkin", - "/Lotus/Upgrades/Skins/Pirate/HydroidPrimeDefaultHelmet", - "/Lotus/Upgrades/Skins/Pirate/PirateAltBHelmet", - "/Lotus/Upgrades/Skins/Pirate/PirateAltHelmet", - "/Lotus/Upgrades/Skins/Pirate/PirateDefaultHelmet", - "/Lotus/Upgrades/Skins/Pirate/SWGraxxHydroidHelmet", - "/Lotus/Upgrades/Skins/Pirate/SWGraxxHydroidSkin", - "/Lotus/Upgrades/Skins/Pirate/SWRorqualHelmet", - "/Lotus/Upgrades/Skins/Polearm/SWOsirisPolearm", - "/Lotus/Upgrades/Skins/Polearm/SWSkoposPolearm", - "/Lotus/Upgrades/Skins/Polearm/SWUlceratedPolearm", - "/Lotus/Upgrades/Skins/Priest/HarrowDeluxeHelmet", - "/Lotus/Upgrades/Skins/Priest/HarrowDeluxeSuit", - "/Lotus/Upgrades/Skins/Priest/HarrowPrimeHelmet", - "/Lotus/Upgrades/Skins/Priest/HarrowPrimeSkin", - "/Lotus/Upgrades/Skins/Priest/PriestAgileAnims", - "/Lotus/Upgrades/Skins/Priest/PriestAlt2Helmet", - "/Lotus/Upgrades/Skins/Priest/PriestHelmet", - "/Lotus/Upgrades/Skins/Priest/PriestHelmetAlt", - "/Lotus/Upgrades/Skins/Priest/PriestNobleAnims", - "/Lotus/Upgrades/Skins/Priest/PriestSkin", - "/Lotus/Upgrades/Skins/Priest/SWAlgalystHelmet", - "/Lotus/Upgrades/Skins/Priest/SWAlgalystSkin", - "/Lotus/Upgrades/Skins/Priest/SWGraxxHarrowHelmet", - "/Lotus/Upgrades/Skins/Priest/SWGraxxHarrowSkin", - "/Lotus/Upgrades/Skins/Priest/SWHierophaHelmet", - "/Lotus/Upgrades/Skins/Priest/SWVelesHelmet", - "/Lotus/Upgrades/Skins/Priest/SWVelesSkin", - "/Lotus/Upgrades/Skins/Priest/UnlockPriestAgile", - "/Lotus/Upgrades/Skins/Priest/UnlockPriestNoble", - "/Lotus/Upgrades/Skins/Promo/ChangYou/CYRubedoDrakgoonCamo", - "/Lotus/Upgrades/Skins/Promo/ChangYou/CYRubedoGalatineCamo", - "/Lotus/Upgrades/Skins/Promo/ChangYou/CYSingleStaffSkin", - "/Lotus/Upgrades/Skins/Promo/Microsoft/ExcaliburXBoneSkin", - "/Lotus/Upgrades/Skins/Promo/Microsoft/ExcaliburXBoneSkinHelmet", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeCarrier", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeCassowarSkin", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDethcube", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDexDakra", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDexFuris", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDualHeatSwords", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeDualKamas", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeFragor", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeGrakata", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeHeatDagger", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeHeatSword", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeInfestedWings", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeKama", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeLatron", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeRhinoHelmet", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeRhinoSkin", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeStealthArchwingSkin", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeTonkor", - "/Lotus/Upgrades/Skins/Promo/Microsoft/JadeTwinGrakatas", - "/Lotus/Upgrades/Skins/Promo/Nintendo/NintendoAklatoSkin", - "/Lotus/Upgrades/Skins/Promo/Nintendo/NintendoSemiAutoSkin", - "/Lotus/Upgrades/Skins/Promo/PCGamer/PCGamerDarkSwordDaggerHybridSkin", - "/Lotus/Upgrades/Skins/Promo/RixtyMOL/RixtyMOLAklatoSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneEtherReaperSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneHateSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneReaperPrimeSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/CandyCaneScytheSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDAcceltraSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDCorvasSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDCycron", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDGammacorSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDSkiajatiSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDSuparna", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDVetalaRevenantArmorA", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDVetalaRevenantArmorC", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023DOTDVetalaRevenantArmorL", - "/Lotus/Upgrades/Skins/Promo/Seasonal/Halloween2023SOULGammacorSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumArcaPlasmorSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumAtomosSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumCycronSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumDualKeresSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumFulminSkin", - "/Lotus/Upgrades/Skins/Promo/Seasonal/TennobaumGramSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/AkjagaraIridosSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/ExcaliburTwitchSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/ExcaliburTwitchSkinHelmet", - "/Lotus/Upgrades/Skins/Promo/Twitch/LisetSkinTwitch", - "/Lotus/Upgrades/Skins/Promo/Twitch/OgrisTwitchSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/PyranaTwitchSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/TigrisTwitchSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/Twitch2021AfurisSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/Twitch2021FurisSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/TwitchAnkyros", - "/Lotus/Upgrades/Skins/Promo/Twitch/TwitchPentaSkin", - "/Lotus/Upgrades/Skins/Promo/Twitch/TwitchRubicoSkin", - "/Lotus/Upgrades/Skins/Promo/Void/AkvastosVoidSkin", - "/Lotus/Upgrades/Skins/Promo/Void/AnkyrosVoidSkin", - "/Lotus/Upgrades/Skins/Promo/Void/TigrisVoidSkin", - "/Lotus/Upgrades/Skins/Promo/Void/VastoVoidSkin", - "/Lotus/Upgrades/Skins/Promo/Warframe/PromoParis", - "/Lotus/Upgrades/Skins/Promo/Warframe/ProtoGlaive", - "/Lotus/Upgrades/Skins/Promo/WeGame/WeGameMacheteSkin", - "/Lotus/Upgrades/Skins/PvP/Bows/PvPDaikyu", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPBraton", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPGorgon", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPGrinlok", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPKarak", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPLatron", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPOpticor", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPSoma", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPStrun", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPSybaris", - "/Lotus/Upgrades/Skins/PvP/LongGuns/PvPTonkor", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPAckBrunt", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPDragonNikana", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPDualSkana", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPFurax", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPGlaive", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPJatKittag", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPKronen", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPNikana", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPSkana", - "/Lotus/Upgrades/Skins/PvP/Melee/PvPTipedo", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAkLex", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAklato", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAkstiletto", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAkvasto", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPAngstrum", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPKraken", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPLato", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPLex", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPMarelok", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPTwinVipers", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPVasto", - "/Lotus/Upgrades/Skins/PvP/Pistols/PvPViper", - "/Lotus/Upgrades/Skins/RailJack/DefaultEngines", - "/Lotus/Upgrades/Skins/RailJack/DefaultReactor", - "/Lotus/Upgrades/Skins/RailJack/EnginesClanC", - "/Lotus/Upgrades/Skins/RailJack/EnginesLavanA", - "/Lotus/Upgrades/Skins/RailJack/EnginesLavanB", - "/Lotus/Upgrades/Skins/RailJack/EnginesLavanC", - "/Lotus/Upgrades/Skins/RailJack/EnginesVidarA", - "/Lotus/Upgrades/Skins/RailJack/EnginesVidarB", - "/Lotus/Upgrades/Skins/RailJack/EnginesVidarC", - "/Lotus/Upgrades/Skins/RailJack/EnginesZektiA", - "/Lotus/Upgrades/Skins/RailJack/EnginesZektiB", - "/Lotus/Upgrades/Skins/RailJack/EnginesZektiC", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsClanA", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsClanB", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsClanC", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsDefault", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsLavanA", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsLavanB", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsLavanC", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsVidarA", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsVidarB", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsVidarC", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsZektiA", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsZektiB", - "/Lotus/Upgrades/Skins/RailJack/HullMaterialsZektiC", - "/Lotus/Upgrades/Skins/RailJack/NimbleEngines", - "/Lotus/Upgrades/Skins/RailJack/RailjackAeronSkin", - "/Lotus/Upgrades/Skins/RailJack/RailjackDefaultSkin", - "/Lotus/Upgrades/Skins/RailJack/RailjackGhostSkin", - "/Lotus/Upgrades/Skins/RailJack/RailjackWrasseSkin", - "/Lotus/Upgrades/Skins/RailJack/ReactorClanA", - "/Lotus/Upgrades/Skins/RailJack/ReactorClanB", - "/Lotus/Upgrades/Skins/RailJack/ReactorClanC", - "/Lotus/Upgrades/Skins/RailJack/ReactorLavanA", - "/Lotus/Upgrades/Skins/RailJack/ReactorLavanB", - "/Lotus/Upgrades/Skins/RailJack/ReactorLavanC", - "/Lotus/Upgrades/Skins/RailJack/ReactorVidarA", - "/Lotus/Upgrades/Skins/RailJack/ReactorVidarB", - "/Lotus/Upgrades/Skins/RailJack/ReactorVidarC", - "/Lotus/Upgrades/Skins/RailJack/ReactorZektiA", - "/Lotus/Upgrades/Skins/RailJack/ReactorZektiB", - "/Lotus/Upgrades/Skins/RailJack/ReactorZektiC", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayA", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayB", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayC", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayDefault", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayLavanA", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayLavanB", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayLavanC", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayVidarA", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayVidarB", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayVidarC", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayZektiA", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayZektiB", - "/Lotus/Upgrades/Skins/RailJack/ShieldArrayZektiC", - "/Lotus/Upgrades/Skins/RailJack/ThrustEngines", - "/Lotus/Upgrades/Skins/Ranger/RangerAgileAnims", - "/Lotus/Upgrades/Skins/Ranger/RangerAlt02Helmet", - "/Lotus/Upgrades/Skins/Ranger/RangerAltCloakA", - "/Lotus/Upgrades/Skins/Ranger/RangerAltCloakB", - "/Lotus/Upgrades/Skins/Ranger/RangerAltHelmet", - "/Lotus/Upgrades/Skins/Ranger/RangerHelmet", - "/Lotus/Upgrades/Skins/Ranger/RangerNobleAnims", - "/Lotus/Upgrades/Skins/Ranger/RangerSkin", - "/Lotus/Upgrades/Skins/Ranger/UnlockRangerAgile", - "/Lotus/Upgrades/Skins/Ranger/UnlockRangerNoble", - "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoAkimboViperCamo", - "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoDrakgoonCamo", - "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoGalatineCamo", - "/Lotus/Upgrades/Skins/ReferralSeriesTwo/RubedoViperCamo", - "/Lotus/Upgrades/Skins/Revenant/RevenantAgileAnims", - "/Lotus/Upgrades/Skins/Revenant/RevenantDeluxeHelmet", - "/Lotus/Upgrades/Skins/Revenant/RevenantDeluxeSkin", - "/Lotus/Upgrades/Skins/Revenant/RevenantHelmet", - "/Lotus/Upgrades/Skins/Revenant/RevenantHelmetAlt", - "/Lotus/Upgrades/Skins/Revenant/RevenantNobleAnims", - "/Lotus/Upgrades/Skins/Revenant/RevenantPrimeHelmet", - "/Lotus/Upgrades/Skins/Revenant/RevenantPrimeSkin", - "/Lotus/Upgrades/Skins/Revenant/RevenantSkin", - "/Lotus/Upgrades/Skins/Revenant/SWAhrimanHelmet", - "/Lotus/Upgrades/Skins/Revenant/SWAhrimanSkin", - "/Lotus/Upgrades/Skins/Revenant/SWDraugenHelmet", - "/Lotus/Upgrades/Skins/Revenant/SWDraugenSkin", - "/Lotus/Upgrades/Skins/Revenant/SWImmortuosHelmet", - "/Lotus/Upgrades/Skins/Revenant/SWRevenantWightHelmet", - "/Lotus/Upgrades/Skins/Revenant/SWRevenantWightSkin", - "/Lotus/Upgrades/Skins/Revenant/SWTenebrusHelmet", - "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantAgile", - "/Lotus/Upgrades/Skins/Revenant/UnlockRevenantNoble", - "/Lotus/Upgrades/Skins/Rhino/ChangYou/CYRhinoRubedoSkin", - "/Lotus/Upgrades/Skins/Rhino/ChangYou/CYRhinoRubedoSkinHelmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoAgileAnims", - "/Lotus/Upgrades/Skins/Rhino/RhinoAlternateSkin", - "/Lotus/Upgrades/Skins/Rhino/RhinoChameleonAHelmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoChameleonASkin", - "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeHelmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeSuit", - "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2AgileAnims", - "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2Helmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2NobleAnims", - "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2Skin", - "/Lotus/Upgrades/Skins/Rhino/RhinoDeluxeV2Wings", - "/Lotus/Upgrades/Skins/Rhino/RhinoDexHelmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoDexSkin", - "/Lotus/Upgrades/Skins/Rhino/RhinoHelmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAlt", - "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAltB", - "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Rhino/RhinoHelmetAltStatless", - "/Lotus/Upgrades/Skins/Rhino/RhinoNobleAnims", - "/Lotus/Upgrades/Skins/Rhino/RhinoPrimeHelmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoPrimeSkin", - "/Lotus/Upgrades/Skins/Rhino/RhinoRubedoSkin", - "/Lotus/Upgrades/Skins/Rhino/RhinoRubedoSkinHelmet", - "/Lotus/Upgrades/Skins/Rhino/RhinoSkin", - "/Lotus/Upgrades/Skins/Rhino/SWIonRhinoHelmet", - "/Lotus/Upgrades/Skins/Rhino/SWIonRhinoSkin", - "/Lotus/Upgrades/Skins/Rhino/SWMastodonHelmet", - "/Lotus/Upgrades/Skins/Rhino/SWMastodonSkin", - "/Lotus/Upgrades/Skins/Rhino/SWRFourRhinoGraxxHelmet", - "/Lotus/Upgrades/Skins/Rhino/SWRFourRhinoGraxxSkin", - "/Lotus/Upgrades/Skins/Rhino/SWRFourRhinoVojnikSkin", - "/Lotus/Upgrades/Skins/Rhino/SWRhinoBotLHelmet", - "/Lotus/Upgrades/Skins/Rhino/SWRhinoBotLSkin", - "/Lotus/Upgrades/Skins/Rhino/SWScarabSectHelmet", - "/Lotus/Upgrades/Skins/Rhino/SWScarabSectSkin", - "/Lotus/Upgrades/Skins/Rhino/SWTeutonicHelmet", - "/Lotus/Upgrades/Skins/Rhino/SWWarlustHelmet", - "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoAgile", - "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Agile", - "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoDeluxeV2Noble", - "/Lotus/Upgrades/Skins/Rhino/UnlockRhinoNoble", - "/Lotus/Upgrades/Skins/Runner/DeluxeAcceltraSkin", - "/Lotus/Upgrades/Skins/Runner/GaussDeluxeHelmet", - "/Lotus/Upgrades/Skins/Runner/GaussDeluxeSkin", - "/Lotus/Upgrades/Skins/Runner/GaussPrimeAltHelmet", - "/Lotus/Upgrades/Skins/Runner/GaussPrimeHelmet", - "/Lotus/Upgrades/Skins/Runner/GaussPrimeSkin", - "/Lotus/Upgrades/Skins/Runner/RunnerAgileAnims", - "/Lotus/Upgrades/Skins/Runner/RunnerAltHelmet", - "/Lotus/Upgrades/Skins/Runner/RunnerHelmet", - "/Lotus/Upgrades/Skins/Runner/RunnerNobleAnims", - "/Lotus/Upgrades/Skins/Runner/RunnerSkin", - "/Lotus/Upgrades/Skins/Runner/SWGaussAgitoHelmet", - "/Lotus/Upgrades/Skins/Runner/SWGaussAgitoSkin", - "/Lotus/Upgrades/Skins/Runner/SWGaussGraxxHelmet", - "/Lotus/Upgrades/Skins/Runner/SWGaussGraxxSkin", - "/Lotus/Upgrades/Skins/Runner/SWGaussNitrolystHelmet", - "/Lotus/Upgrades/Skins/Runner/SWGaussNitrolystSkin", - "/Lotus/Upgrades/Skins/Runner/UnlockRunnerAgile", - "/Lotus/Upgrades/Skins/Runner/UnlockRunnerNoble", - "/Lotus/Upgrades/Skins/Sandman/InarosDeluxeHelmet", - "/Lotus/Upgrades/Skins/Sandman/InarosDeluxeSkin", - "/Lotus/Upgrades/Skins/Sandman/InarosDeluxeSword", - "/Lotus/Upgrades/Skins/Sandman/InarosPrimeHelmet", - "/Lotus/Upgrades/Skins/Sandman/InarosPrimeSkin", - "/Lotus/Upgrades/Skins/Sandman/MummyAlt03Helmet", - "/Lotus/Upgrades/Skins/Sandman/SWHorusHelmet", - "/Lotus/Upgrades/Skins/Sandman/SWHorusSkin", - "/Lotus/Upgrades/Skins/Sandman/SWKephriHelmet", - "/Lotus/Upgrades/Skins/Sandman/SWOzymandiasHelmet", - "/Lotus/Upgrades/Skins/Sandman/SWOzymandiasSkin", - "/Lotus/Upgrades/Skins/Sandman/SandmanAgileAnims", - "/Lotus/Upgrades/Skins/Sandman/SandmanAlt02Helmet", - "/Lotus/Upgrades/Skins/Sandman/SandmanAltHelmet", - "/Lotus/Upgrades/Skins/Sandman/SandmanHelmet", - "/Lotus/Upgrades/Skins/Sandman/SandmanNobleAnims", - "/Lotus/Upgrades/Skins/Sandman/SandmanSkin", - "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanAgile", - "/Lotus/Upgrades/Skins/Sandman/UnlockSandmanNoble", - "/Lotus/Upgrades/Skins/Saryn/SWAmalgamaHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWAmalgamaSkin", - "/Lotus/Upgrades/Skins/Saryn/SWBelladonnaHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWBotLSarynHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWBotLSkin", - "/Lotus/Upgrades/Skins/Saryn/SWIntegraHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWIntegraSkin", - "/Lotus/Upgrades/Skins/Saryn/SWNapellusHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWNapellusSkin", - "/Lotus/Upgrades/Skins/Saryn/SWNitasModaHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWNitasModaSkin", - "/Lotus/Upgrades/Skins/Saryn/SWRSixSarynGraxxHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWRSixSarynGraxxSkin", - "/Lotus/Upgrades/Skins/Saryn/SWSarynIonHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWSarynIonSkin", - "/Lotus/Upgrades/Skins/Saryn/SWSarynNighthunterHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWSarynNighthunterSkin", - "/Lotus/Upgrades/Skins/Saryn/SWVelenosaHelmet", - "/Lotus/Upgrades/Skins/Saryn/SWVelenosaSkin", - "/Lotus/Upgrades/Skins/Saryn/SarynChameleonBHelmet", - "/Lotus/Upgrades/Skins/Saryn/SarynChameleonBSkin", - "/Lotus/Upgrades/Skins/Saryn/SarynDeluxeHelmet", - "/Lotus/Upgrades/Skins/Saryn/SarynDeluxeSuit", - "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearHelmet", - "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "/Lotus/Upgrades/Skins/Saryn/SarynPrimeHelmet", - "/Lotus/Upgrades/Skins/Saryn/SarynPrimeSkin", - "/Lotus/Upgrades/Skins/Saryn/SarynSkin", - "/Lotus/Upgrades/Skins/Scarves/AmazonOniSyandana", - "/Lotus/Upgrades/Skins/Scarves/April2015Scarf", - "/Lotus/Upgrades/Skins/Scarves/ArmScarf", - "/Lotus/Upgrades/Skins/Scarves/AtlasDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/BaroCape", - "/Lotus/Upgrades/Skins/Scarves/BaroCape2Scarf", - "/Lotus/Upgrades/Skins/Scarves/BaroCape3Scarf", - "/Lotus/Upgrades/Skins/Scarves/BaruukDeluxeCape", - "/Lotus/Upgrades/Skins/Scarves/BillowingCape", - "/Lotus/Upgrades/Skins/Scarves/BrassAndGoldScarf", - "/Lotus/Upgrades/Skins/Scarves/CenturionCape", - "/Lotus/Upgrades/Skins/Scarves/CephSyandana", - "/Lotus/Upgrades/Skins/Scarves/ConclaveCape", - "/Lotus/Upgrades/Skins/Scarves/CrpAladScarf", - "/Lotus/Upgrades/Skins/Scarves/CrpCubinatorScarf", - "/Lotus/Upgrades/Skins/Scarves/CrpMBundleSyandana", - "/Lotus/Upgrades/Skins/Scarves/CrpModularScarf", - "/Lotus/Upgrades/Skins/Scarves/DeimosSupporterFireFlyBlueScarf", - "/Lotus/Upgrades/Skins/Scarves/DexScarf", - "/Lotus/Upgrades/Skins/Scarves/DinoSpikeScarf", - "/Lotus/Upgrades/Skins/Scarves/EmberDeluxeIISyandana", - "/Lotus/Upgrades/Skins/Scarves/EmberDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/EnergyScarf", - "/Lotus/Upgrades/Skins/Scarves/EnergyScarfVoidSkin", - "/Lotus/Upgrades/Skins/Scarves/EquinoxDeluxeCape", - "/Lotus/Upgrades/Skins/Scarves/ErosionCape", - "/Lotus/Upgrades/Skins/Scarves/FireFlyScarf", - "/Lotus/Upgrades/Skins/Scarves/FlameScarf", - "/Lotus/Upgrades/Skins/Scarves/GarudaCape", - "/Lotus/Upgrades/Skins/Scarves/GarudaDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/GaussDeluxeCape", - "/Lotus/Upgrades/Skins/Scarves/GlassDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/GrineerTurbinesScarf", - "/Lotus/Upgrades/Skins/Scarves/GrnAmphisScarf", - "/Lotus/Upgrades/Skins/Scarves/GrnHoodedCape", - "/Lotus/Upgrades/Skins/Scarves/GrnQueenScarf", - "/Lotus/Upgrades/Skins/Scarves/GrnStrapsScarf", - "/Lotus/Upgrades/Skins/Scarves/GrnTubeScarf", - "/Lotus/Upgrades/Skins/Scarves/GrnVhCape", - "/Lotus/Upgrades/Skins/Scarves/HalloweenErosionCape", - "/Lotus/Upgrades/Skins/Scarves/HalloweenFireFlyScarf", - "/Lotus/Upgrades/Skins/Scarves/HalloweenGrnBannerScarf", - "/Lotus/Upgrades/Skins/Scarves/HalloweenKyropteraScarf", - "/Lotus/Upgrades/Skins/Scarves/HildrynDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/HolidayTurtleNeckScarf", - "/Lotus/Upgrades/Skins/Scarves/HornSkullScarf", - "/Lotus/Upgrades/Skins/Scarves/HornSkullScarfDefault", - "/Lotus/Upgrades/Skins/Scarves/HydroidDeluxeBlazers", - "/Lotus/Upgrades/Skins/Scarves/IceSpikeCape", - "/Lotus/Upgrades/Skins/Scarves/InarosDlxCape", - "/Lotus/Upgrades/Skins/Scarves/InfBatCape", - "/Lotus/Upgrades/Skins/Scarves/InfCoralSyandana", - "/Lotus/Upgrades/Skins/Scarves/InfMembraneCape", - "/Lotus/Upgrades/Skins/Scarves/InfScarfRibCage", - "/Lotus/Upgrades/Skins/Scarves/InfTentacleScarf", - "/Lotus/Upgrades/Skins/Scarves/InfestedFinsScarf", - "/Lotus/Upgrades/Skins/Scarves/IvaraDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/IvaraPrimeCape", - "/Lotus/Upgrades/Skins/Scarves/JadeBombyxScarf", - "/Lotus/Upgrades/Skins/Scarves/JadeSyandana", - "/Lotus/Upgrades/Skins/Scarves/JadeTurtleNeckScarf", - "/Lotus/Upgrades/Skins/Scarves/KazBaroCape", - "/Lotus/Upgrades/Skins/Scarves/KazInfestedScarf", - "/Lotus/Upgrades/Skins/Scarves/KhoraPrimeSyandana", - "/Lotus/Upgrades/Skins/Scarves/LimboDeluxeCape", - "/Lotus/Upgrades/Skins/Scarves/LisetScarf", - "/Lotus/Upgrades/Skins/Scarves/MagDeluxeScarf", - "/Lotus/Upgrades/Skins/Scarves/MesaDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/MixerKyropteraScarf", - "/Lotus/Upgrades/Skins/Scarves/NarmerEvolvingSyandanaACape", - "/Lotus/Upgrades/Skins/Scarves/NarmerEvolvingSyandanaBCape", - "/Lotus/Upgrades/Skins/Scarves/NarmerEvolvingSyandanaCCape", - "/Lotus/Upgrades/Skins/Scarves/NefSyandanaScarf", - "/Lotus/Upgrades/Skins/Scarves/NezhaDeluxeScarf", - "/Lotus/Upgrades/Skins/Scarves/NezhaLeverianCape", - "/Lotus/Upgrades/Skins/Scarves/NidusDeluxeScarf", - "/Lotus/Upgrades/Skins/Scarves/NidusPrimeSyandana", - "/Lotus/Upgrades/Skins/Scarves/NintendoTurtleNeckScarf", - "/Lotus/Upgrades/Skins/Scarves/NoruPrimeScarf", - "/Lotus/Upgrades/Skins/Scarves/NovaDeluxeScarf", - "/Lotus/Upgrades/Skins/Scarves/NovaIIDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/NyxDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/ObsidianAzureScarf", - "/Lotus/Upgrades/Skins/Scarves/ObsidianCrowSyandana", - "/Lotus/Upgrades/Skins/Scarves/ObsidianKyropteraScarf", - "/Lotus/Upgrades/Skins/Scarves/ObsidianSamiaScarf", - "/Lotus/Upgrades/Skins/Scarves/PS4ArmScarf", - "/Lotus/Upgrades/Skins/Scarves/PS5Syandana", - "/Lotus/Upgrades/Skins/Scarves/PacifistSyandana", - "/Lotus/Upgrades/Skins/Scarves/PaxDuviricusSyandana", - "/Lotus/Upgrades/Skins/Scarves/PriestScarf", - "/Lotus/Upgrades/Skins/Scarves/PrimeAkrabuSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeAltraScarf", - "/Lotus/Upgrades/Skins/Scarves/PrimeAviaSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeCapeEquinox", - "/Lotus/Upgrades/Skins/Scarves/PrimeChromaCape", - "/Lotus/Upgrades/Skins/Scarves/PrimeFlameScarf", - "/Lotus/Upgrades/Skins/Scarves/PrimeGrendelSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeInarosSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeLimboCape", - "/Lotus/Upgrades/Skins/Scarves/PrimeNaveScarf", - "/Lotus/Upgrades/Skins/Scarves/PrimeOberonCape", - "/Lotus/Upgrades/Skins/Scarves/PrimeOctaviaSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeRevenantCape", - "/Lotus/Upgrades/Skins/Scarves/PrimeRhoptronSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeScarf", - "/Lotus/Upgrades/Skins/Scarves/PrimeScarfAtlas", - "/Lotus/Upgrades/Skins/Scarves/PrimeScarfF", - "/Lotus/Upgrades/Skins/Scarves/PrimeScarfG", - "/Lotus/Upgrades/Skins/Scarves/PrimeScarfV", - "/Lotus/Upgrades/Skins/Scarves/PrimeSuratorSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeTwitchScarf", - "/Lotus/Upgrades/Skins/Scarves/PrimeWispSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrimeWukongSyandana", - "/Lotus/Upgrades/Skins/Scarves/PrismaRazorScarf", - "/Lotus/Upgrades/Skins/Scarves/QuillCanistersSyandana", - "/Lotus/Upgrades/Skins/Scarves/QuillCape", - "/Lotus/Upgrades/Skins/Scarves/RazorScarf", - "/Lotus/Upgrades/Skins/Scarves/RhinoDeluxeScarf", - "/Lotus/Upgrades/Skins/Scarves/RubedoDinoSpikeScarf", - "/Lotus/Upgrades/Skins/Scarves/SWAkSuraScarf", - "/Lotus/Upgrades/Skins/Scarves/SWAlocanaSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWAlyaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWArcturusScarf", - "/Lotus/Upgrades/Skins/Scarves/SWArmalystSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWAropanexSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWBodoScarf", - "/Lotus/Upgrades/Skins/Scarves/SWBoltaraScarf", - "/Lotus/Upgrades/Skins/Scarves/SWChemtankSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWCoronaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWCovenantScarf", - "/Lotus/Upgrades/Skins/Scarves/SWCryonaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWDeruScarf", - "/Lotus/Upgrades/Skins/Scarves/SWDespotScarf", - "/Lotus/Upgrades/Skins/Scarves/SWDiablilloSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWDisconnectScarf", - "/Lotus/Upgrades/Skins/Scarves/SWDominusCape", - "/Lotus/Upgrades/Skins/Scarves/SWDraugenSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWDueVolpiScarf", - "/Lotus/Upgrades/Skins/Scarves/SWEklisSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWEzrielSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWFeiSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWIcariusScarf", - "/Lotus/Upgrades/Skins/Scarves/SWIncubusScarf", - "/Lotus/Upgrades/Skins/Scarves/SWJotunheimMusic", - "/Lotus/Upgrades/Skins/Scarves/SWJotunheimScarf", - "/Lotus/Upgrades/Skins/Scarves/SWKunshuScarf", - "/Lotus/Upgrades/Skins/Scarves/SWLaprosysSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWMaharliqaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWMithraScarf", - "/Lotus/Upgrades/Skins/Scarves/SWMushussuScarf", - "/Lotus/Upgrades/Skins/Scarves/SWNaruScarf", - "/Lotus/Upgrades/Skins/Scarves/SWNighthunterSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWOfficiumScarf", - "/Lotus/Upgrades/Skins/Scarves/SWPaxisScarf", - "/Lotus/Upgrades/Skins/Scarves/SWPistrisScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRSixSariScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRSixSpitefireScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRThreeAquirosScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRThreeJattukScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRThreeNsaruScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRaijiScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRanulystSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWRepalaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWRetrorolystSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWSarvaHarnessScarf", - "/Lotus/Upgrades/Skins/Scarves/SWScapulisScarf", - "/Lotus/Upgrades/Skins/Scarves/SWSciathinScarf", - "/Lotus/Upgrades/Skins/Scarves/SWScyllaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWSenvictisSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWSeraphimScarf", - "/Lotus/Upgrades/Skins/Scarves/SWSetharSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWSetkaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWShirokuSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWShurihoshiScarf", - "/Lotus/Upgrades/Skins/Scarves/SWSildargScarf", - "/Lotus/Upgrades/Skins/Scarves/SWSolidaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWSovereignScarf", - "/Lotus/Upgrades/Skins/Scarves/SWStyxSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWSydekoScarf", - "/Lotus/Upgrades/Skins/Scarves/SWTenuiSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWTeploScarf", - "/Lotus/Upgrades/Skins/Scarves/SWTonacaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWTsujinasaSyandana", - "/Lotus/Upgrades/Skins/Scarves/SWValestiScarf", - "/Lotus/Upgrades/Skins/Scarves/SWZaikhyaScarf", - "/Lotus/Upgrades/Skins/Scarves/SWZamariuSyandana", - "/Lotus/Upgrades/Skins/Scarves/SamiaTownsunSyandana", - "/Lotus/Upgrades/Skins/Scarves/SapientCape", - "/Lotus/Upgrades/Skins/Scarves/SentSyandanaB", - "/Lotus/Upgrades/Skins/Scarves/ShieldFrameCape", - "/Lotus/Upgrades/Skins/Scarves/SolsticeBaroCape", - "/Lotus/Upgrades/Skins/Scarves/SolsticeCenturionCape", - "/Lotus/Upgrades/Skins/Scarves/SolsticeGrnBannerScarf", - "/Lotus/Upgrades/Skins/Scarves/SolsticeGrnHoodedCape", - "/Lotus/Upgrades/Skins/Scarves/SolsticeNelumboCape", - "/Lotus/Upgrades/Skins/Scarves/SolsticeU17TnoCapeScarf", - "/Lotus/Upgrades/Skins/Scarves/StalkerCapeItem", - "/Lotus/Upgrades/Skins/Scarves/StyanaxDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/SummerSolsticeCenturionCape", - "/Lotus/Upgrades/Skins/Scarves/SummerSolsticeMaggorCape", - "/Lotus/Upgrades/Skins/Scarves/SyndicateAHScarf", - "/Lotus/Upgrades/Skins/Scarves/SyndicateCSScarf", - "/Lotus/Upgrades/Skins/Scarves/SyndicateNLScarf", - "/Lotus/Upgrades/Skins/Scarves/SyndicatePSScarf", - "/Lotus/Upgrades/Skins/Scarves/SyndicateRVScarf", - "/Lotus/Upgrades/Skins/Scarves/SyndicateSMScarf", - "/Lotus/Upgrades/Skins/Scarves/TennoAngleCapeScarf", - "/Lotus/Upgrades/Skins/Scarves/TennoCon2017Scarf", - "/Lotus/Upgrades/Skins/Scarves/TennoCon2020Scarf", - "/Lotus/Upgrades/Skins/Scarves/TennoCon2023Cape", - "/Lotus/Upgrades/Skins/Scarves/TennoCon2024Scarf", - "/Lotus/Upgrades/Skins/Scarves/TennoConScarf", - "/Lotus/Upgrades/Skins/Scarves/TennoFeathersCapeScarf", - "/Lotus/Upgrades/Skins/Scarves/TennoLeafDotCapeScarf", - "/Lotus/Upgrades/Skins/Scarves/TennoWolfBackpack", - "/Lotus/Upgrades/Skins/Scarves/TitaniaDeluxeV2Cape", - "/Lotus/Upgrades/Skins/Scarves/TitaniaPrimeShortSyandana", - "/Lotus/Upgrades/Skins/Scarves/TitaniaPrimeSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnAlchemistSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnAshDeluxe2Syandana", - "/Lotus/Upgrades/Skins/Scarves/TnBrokenFrameSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnConcreteSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnGlassSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnGuandaoScarf", - "/Lotus/Upgrades/Skins/Scarves/TnGyreCape", - "/Lotus/Upgrades/Skins/Scarves/TnKorahSyandanaDeluxe", - "/Lotus/Upgrades/Skins/Scarves/TnLargeCape", - "/Lotus/Upgrades/Skins/Scarves/TnLargeCapeTwitch", - "/Lotus/Upgrades/Skins/Scarves/TnLargeCapeXbox", - "/Lotus/Upgrades/Skins/Scarves/TnLefaucheuxSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnNewPlayerSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnOctaviaDeluxeCape", - "/Lotus/Upgrades/Skins/Scarves/TnOdaliskSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnOniSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnPagemasterSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnPyraV2Syandana", - "/Lotus/Upgrades/Skins/Scarves/TnRailjackSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnSmallBatteryCape", - "/Lotus/Upgrades/Skins/Scarves/TnSparrowCape", - "/Lotus/Upgrades/Skins/Scarves/TnStyanaxSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnSundialCape", - "/Lotus/Upgrades/Skins/Scarves/TnVoltDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnWispDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/TnWraitheSyandana", - "/Lotus/Upgrades/Skins/Scarves/TurtleNeckScarf", - "/Lotus/Upgrades/Skins/Scarves/Twitch2021Syandana", - "/Lotus/Upgrades/Skins/Scarves/TwitchPrimeScarf", - "/Lotus/Upgrades/Skins/Scarves/UmbraDaxSyandana", - "/Lotus/Upgrades/Skins/Scarves/UruPrimeScarf", - "/Lotus/Upgrades/Skins/Scarves/VTDinoSpikeScarf", - "/Lotus/Upgrades/Skins/Scarves/VTHornSkullScarf", - "/Lotus/Upgrades/Skins/Scarves/WraithTurbinesScarf", - "/Lotus/Upgrades/Skins/Scarves/WukongDeluxeSyandana", - "/Lotus/Upgrades/Skins/Scarves/YamakoPrimeScarf", - "/Lotus/Upgrades/Skins/Scarves/YareliCape", - "/Lotus/Upgrades/Skins/Sentient/CalibanAltHelmet", - "/Lotus/Upgrades/Skins/Sentient/SWCalibanScionHelmet", - "/Lotus/Upgrades/Skins/Sentient/SentientAgileAnims", - "/Lotus/Upgrades/Skins/Sentient/SentientHelmet", - "/Lotus/Upgrades/Skins/Sentient/SentientNobleAnims", - "/Lotus/Upgrades/Skins/Sentient/SentientSkin", - "/Lotus/Upgrades/Skins/Sentient/UnlockSentientAgile", - "/Lotus/Upgrades/Skins/Sentient/UnlockSentientNoble", - "/Lotus/Upgrades/Skins/Sentinels/Masks/BaroPetMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/DethcubePrimeMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/GardenerMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/GaussSentinelMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/GunHeadMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/HeimtPrimeSentinelMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/HeliosDeluxeMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/HunhowMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/IctusMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/IctusPrimeMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/InfBatMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/InfNightWaveMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/InfestedMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/KavatPetMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/KubrowMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/LNYDragonMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/LotusMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/MechHeadMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/OrokinMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/ParrotMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/PrimeSentinelMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/PrismaMechHeadMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/ThanoTechMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/TnEmpyreanSocketMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/TnHydroidDlxSentMask", - "/Lotus/Upgrades/Skins/Sentinels/Masks/TwitchSentHeadMask", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultCarrierPrimeSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultCarrierSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDethcubePrimeSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDethcubeSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDirigaSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultDjinnSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultHeliosPrimeSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultHeliosSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultOxylusSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultShadePrismaSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultShadeSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultTaxonSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultWyrmPrimeSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/Defaults/DefaultWyrmSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/DesertTaxonSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/GaussSentinelSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/HeliosDeluxe", - "/Lotus/Upgrades/Skins/Sentinels/Skins/LNYDragonSentinelSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/LibrarianHelios", - "/Lotus/Upgrades/Skins/Sentinels/Skins/OwlSentinelSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/ThanotechSentinelSkin", - "/Lotus/Upgrades/Skins/Sentinels/Skins/TnHydroidDlxSentSkin", - "/Lotus/Upgrades/Skins/Sentinels/Tails/BaroPetTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/CapsuleTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/ColtekTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/DethcubePrimeTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/FishTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/GardenerTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/GaussSentinelTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/HeimtPrimeSentinelTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/HeliosDeluxeTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/IctusPrimeTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/IctusTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/InfBatTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/InfNightWaveTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/InfestedTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/KavatPetTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/LNYDragonTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/OrokinTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/ParrotTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/PrimeSentinelTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/PrismaFishTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/ThanoTechTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/TnEmpyreanSocketTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/TnHydroidDlxSentTail", - "/Lotus/Upgrades/Skins/Sentinels/Tails/TwitchSentTail", - "/Lotus/Upgrades/Skins/Sentinels/Wings/BaroPetWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/ColtekWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/ColtekWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/DethcubePrimeWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/DethcubePrimeWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/DiamondWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/DiamondWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/DomeWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/DomeWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWingsStatic", - "/Lotus/Upgrades/Skins/Sentinels/Wings/GardenerWingsStaticRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/GaussSentinelWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/HeimtPrimeSentinelWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/HeliosDeluxeWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusPrimeWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusPrimeWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/IctusWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/InfBatWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/InfNightWaveWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/InfNightWaveWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/InfestedWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/InfestedWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/JetWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/JetWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/KavatPetWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/KavatPetWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/LNYDragonWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/OrokinWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/OrokinWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/ParrotWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/ParrotWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/PrimeSentinelWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/PrimeSentinelWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/PrismaJetWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/PrismaJetWingsRight", - "/Lotus/Upgrades/Skins/Sentinels/Wings/ThanoTechWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/TnEmpyreanSocketWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/TnHydroidDlxSentWings", - "/Lotus/Upgrades/Skins/Sentinels/Wings/TwitchSentWings", - "/Lotus/Upgrades/Skins/Sentinels/CarbuncleDethcubeSkin", - "/Lotus/Upgrades/Skins/Sentinels/GardenerDethcubeSkin", - "/Lotus/Upgrades/Skins/Sentinels/NightwatchDirigaSkin", - "/Lotus/Upgrades/Skins/Sentinels/ParrotCarrierSkin", - "/Lotus/Upgrades/Skins/Sentinels/PersianDjinnSkin", - "/Lotus/Upgrades/Skins/Sentinels/SpriteShadeSkin", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/CaviaRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/EntratiRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/HoldfastsRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/NecraloidRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/NecraloidRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/NecraloidRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/OstronRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/QuillsRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/SolarisRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VentkidsRankTwo", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankFive", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankFour", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankOne", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankThree", - "/Lotus/Upgrades/Skins/Sigils/Syndicate/VoxRankTwo", - "/Lotus/Upgrades/Skins/Sigils/AllianceSigilBasic", - "/Lotus/Upgrades/Skins/Sigils/ArchwingSigil", - "/Lotus/Upgrades/Skins/Sigils/BansheeDeluxeSigil", - "/Lotus/Upgrades/Skins/Sigils/BaroKavatSigil", - "/Lotus/Upgrades/Skins/Sigils/BaroKubrowSigil", - "/Lotus/Upgrades/Skins/Sigils/BladeAndGunSigil", - "/Lotus/Upgrades/Skins/Sigils/BloodiedSigil", - "/Lotus/Upgrades/Skins/Sigils/BossSigilAladV", - "/Lotus/Upgrades/Skins/Sigils/BossSigilAmbulas", - "/Lotus/Upgrades/Skins/Sigils/BossSigilCaptainVor", - "/Lotus/Upgrades/Skins/Sigils/BossSigilHyenaPack", - "/Lotus/Upgrades/Skins/Sigils/BossSigilJackal", - "/Lotus/Upgrades/Skins/Sigils/BossSigilKelaDeThaym", - "/Lotus/Upgrades/Skins/Sigils/BossSigilLechKril", - "/Lotus/Upgrades/Skins/Sigils/BossSigilLephantis", - "/Lotus/Upgrades/Skins/Sigils/BossSigilLynx", - "/Lotus/Upgrades/Skins/Sigils/BossSigilNefAnyo", - "/Lotus/Upgrades/Skins/Sigils/BossSigilPhorid", - "/Lotus/Upgrades/Skins/Sigils/BossSigilRaptor", - "/Lotus/Upgrades/Skins/Sigils/BossSigilSargusRuk", - "/Lotus/Upgrades/Skins/Sigils/BossSigilTeralystBig", - "/Lotus/Upgrades/Skins/Sigils/BossSigilTeralystRain", - "/Lotus/Upgrades/Skins/Sigils/BossSigilTylRegor", - "/Lotus/Upgrades/Skins/Sigils/BossSigilVayHek", - "/Lotus/Upgrades/Skins/Sigils/CNYRoosterCYSigil", - "/Lotus/Upgrades/Skins/Sigils/CNYRoosterPWSigil", - "/Lotus/Upgrades/Skins/Sigils/ClanSigilBasic", - "/Lotus/Upgrades/Skins/Sigils/ClanSigilBasicAdd", - "/Lotus/Upgrades/Skins/Sigils/ClanSigilMaskedEffect", - "/Lotus/Upgrades/Skins/Sigils/ClanSigilTwoTone", - "/Lotus/Upgrades/Skins/Sigils/CollectorSigil", - "/Lotus/Upgrades/Skins/Sigils/Community10YearAnniversarySigil", - "/Lotus/Upgrades/Skins/Sigils/ConclaveTacAlertSigilA", - "/Lotus/Upgrades/Skins/Sigils/ConqueraSigil", - "/Lotus/Upgrades/Skins/Sigils/CorpusLichSigil", - "/Lotus/Upgrades/Skins/Sigils/DanteSigil", - "/Lotus/Upgrades/Skins/Sigils/DawnsEarlyLightSigil", - "/Lotus/Upgrades/Skins/Sigils/DeathMarkSigilGrustrag", - "/Lotus/Upgrades/Skins/Sigils/DeathMarkSigilStalker", - "/Lotus/Upgrades/Skins/Sigils/DeathMarkSigilZanuka", - "/Lotus/Upgrades/Skins/Sigils/DogDays2023ASigil", - "/Lotus/Upgrades/Skins/Sigils/DogDays2023BSigil", - "/Lotus/Upgrades/Skins/Sigils/DogDays2023CSigil", - "/Lotus/Upgrades/Skins/Sigils/DogDaysSigil", - "/Lotus/Upgrades/Skins/Sigils/DotD2016Sigil", - "/Lotus/Upgrades/Skins/Sigils/DuvDragonSigil", - "/Lotus/Upgrades/Skins/Sigils/EnergySigilA", - "/Lotus/Upgrades/Skins/Sigils/EnergySigilB", - "/Lotus/Upgrades/Skins/Sigils/EventSigilAmalgam", - "/Lotus/Upgrades/Skins/Sigils/EventSigilAmbulas", - "/Lotus/Upgrades/Skins/Sigils/EventSigilCaviaBirdThree", - "/Lotus/Upgrades/Skins/Sigils/EventSigilCaviaFibonacci", - "/Lotus/Upgrades/Skins/Sigils/EventSigilCaviaTagfer", - "/Lotus/Upgrades/Skins/Sigils/EventSigilFalseProfit", - "/Lotus/Upgrades/Skins/Sigils/EventSigilIndex", - "/Lotus/Upgrades/Skins/Sigils/EventSigilScarletSpear", - "/Lotus/Upgrades/Skins/Sigils/FireSigil", - "/Lotus/Upgrades/Skins/Sigils/FormaSigil", - "/Lotus/Upgrades/Skins/Sigils/FortunaSigil", - "/Lotus/Upgrades/Skins/Sigils/FounderSigilDisciple", - "/Lotus/Upgrades/Skins/Sigils/FounderSigilGrandMaster", - "/Lotus/Upgrades/Skins/Sigils/FounderSigilHunter", - "/Lotus/Upgrades/Skins/Sigils/FounderSigilMaster", - "/Lotus/Upgrades/Skins/Sigils/GeodeSigil", - "/Lotus/Upgrades/Skins/Sigils/GlassmakerSigil", - "/Lotus/Upgrades/Skins/Sigils/Halloween2020Sigil", - "/Lotus/Upgrades/Skins/Sigils/HeirloomSigil", - "/Lotus/Upgrades/Skins/Sigils/HolidaySigilSnowflake", - "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014A", - "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014B", - "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014C", - "/Lotus/Upgrades/Skins/Sigils/HolidaySigilXmas2014D", - "/Lotus/Upgrades/Skins/Sigils/HoundingKubrowSigil", - "/Lotus/Upgrades/Skins/Sigils/InktoberSigil", - "/Lotus/Upgrades/Skins/Sigils/KahlSupporterPackSigil", - "/Lotus/Upgrades/Skins/Sigils/KelaEventSigil", - "/Lotus/Upgrades/Skins/Sigils/KuvaLichSigil", - "/Lotus/Upgrades/Skins/Sigils/LoginSigilA", - "/Lotus/Upgrades/Skins/Sigils/LoginSigilB", - "/Lotus/Upgrades/Skins/Sigils/LoginSigilC", - "/Lotus/Upgrades/Skins/Sigils/LoginSigilD", - "/Lotus/Upgrades/Skins/Sigils/LoginSigilE", - "/Lotus/Upgrades/Skins/Sigils/LoginSigilF", - "/Lotus/Upgrades/Skins/Sigils/LotusGuideSigil", - "/Lotus/Upgrades/Skins/Sigils/LotusHeartSigil", - "/Lotus/Upgrades/Skins/Sigils/MasterySigil", - "/Lotus/Upgrades/Skins/Sigils/MasteryStoneSigil", - "/Lotus/Upgrades/Skins/Sigils/MechEventSigil", - "/Lotus/Upgrades/Skins/Sigils/MonquisCYSigil", - "/Lotus/Upgrades/Skins/Sigils/MonquisSigil", - "/Lotus/Upgrades/Skins/Sigils/NarmerEyeSigil", - "/Lotus/Upgrades/Skins/Sigils/NecramechSigilSnake", - "/Lotus/Upgrades/Skins/Sigils/NewWar2021Sigil", - "/Lotus/Upgrades/Skins/Sigils/NoraSeasonTwoSigil", - "/Lotus/Upgrades/Skins/Sigils/ObsidianIndraSigil", - "/Lotus/Upgrades/Skins/Sigils/OpticorConclaveVariantSigil", - "/Lotus/Upgrades/Skins/Sigils/OrbSigil", - "/Lotus/Upgrades/Skins/Sigils/OstronCommunitySigil", - "/Lotus/Upgrades/Skins/Sigils/PS4CrowSigil", - "/Lotus/Upgrades/Skins/Sigils/PS4FiveYearSigil", - "/Lotus/Upgrades/Skins/Sigils/PS4FourYearSigil", - "/Lotus/Upgrades/Skins/Sigils/PS4OneYearSigil", - "/Lotus/Upgrades/Skins/Sigils/PS4RenownXSigil", - "/Lotus/Upgrades/Skins/Sigils/PS4ThreeYearSigil", - "/Lotus/Upgrades/Skins/Sigils/PS4TwoYearSigil", - "/Lotus/Upgrades/Skins/Sigils/PrimeAccessSigilFive", - "/Lotus/Upgrades/Skins/Sigils/PrimeAccessSigilLimbo", - "/Lotus/Upgrades/Skins/Sigils/PrimeAccessSigilSaryn", - "/Lotus/Upgrades/Skins/Sigils/PrimeTraderSigil", - "/Lotus/Upgrades/Skins/Sigils/PrismaLotusFlamesSigil", - "/Lotus/Upgrades/Skins/Sigils/PrismaLotusSigil", - "/Lotus/Upgrades/Skins/Sigils/PrismaLotusVinesSigil", - "/Lotus/Upgrades/Skins/Sigils/ProjectSinisterSigil", - "/Lotus/Upgrades/Skins/Sigils/QTCC2023ConqueraSigil", - "/Lotus/Upgrades/Skins/Sigils/RadioLegionSigil", - "/Lotus/Upgrades/Skins/Sigils/RhinoDeluxeSigil", - "/Lotus/Upgrades/Skins/Sigils/ScarSigil", - "/Lotus/Upgrades/Skins/Sigils/SigilSnake", - "/Lotus/Upgrades/Skins/Sigils/SigilTankAncient", - "/Lotus/Upgrades/Skins/Sigils/SigilVideoContest", - "/Lotus/Upgrades/Skins/Sigils/SomberStalkerSigil", - "/Lotus/Upgrades/Skins/Sigils/SparkSigil", - "/Lotus/Upgrades/Skins/Sigils/StarterPackASigil", - "/Lotus/Upgrades/Skins/Sigils/StarterPackLotusSigil", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisA", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisB", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisC", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisD", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisE", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisF", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisG", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisH", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisI", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisJ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilArbitersOfHexisK", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaA", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaB", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaC", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaD", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaE", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaF", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaG", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaH", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaI", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaJ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilCephalonSudaK", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveA", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveB", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveC", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveD", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveE", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveF", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveG", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveH", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveI", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveJ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveK", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveL", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveM", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveN", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveO", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveP", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilConclaveQ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaA", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaB", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaC", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaD", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaE", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaF", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaG", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaH", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaI", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaJ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilNewLokaK", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceA", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceB", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceC", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceD", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceE", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceF", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceG", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceH", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceI", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceJ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilPerrinSequenceK", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilA", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilB", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilC", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilD", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilE", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilF", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilG", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilH", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilI", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilJ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilRedVeilK", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianA", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianB", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianC", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianD", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianE", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianF", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianG", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianH", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianI", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianJ", - "/Lotus/Upgrades/Skins/Sigils/SyndicateSigilSteelMeridianK", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2016Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2017Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2018Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2019Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2020Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2021Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2022Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2023Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoCon2024Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoGenSigil", - "/Lotus/Upgrades/Skins/Sigils/TennoLive2015Sigil", - "/Lotus/Upgrades/Skins/Sigils/TennoLivePromoSigil", - "/Lotus/Upgrades/Skins/Sigils/TennoVIP2024Sigil", - "/Lotus/Upgrades/Skins/Sigils/TeralystSigil", - "/Lotus/Upgrades/Skins/Sigils/ThraxSigil", - "/Lotus/Upgrades/Skins/Sigils/TranslatorSigil", - "/Lotus/Upgrades/Skins/Sigils/TwitchNecraloidSigil", - "/Lotus/Upgrades/Skins/Sigils/TwitchPrimeSigil", - "/Lotus/Upgrades/Skins/Sigils/TwitchProminenceSigil", - "/Lotus/Upgrades/Skins/Sigils/TwitchPromo2021Sigil", - "/Lotus/Upgrades/Skins/Sigils/TwoToneSigil", - "/Lotus/Upgrades/Skins/Sigils/VorDuviriSigil", - "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearDragonSigil", - "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearFreeTigerSigil", - "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearOxSigil", - "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearRabbitSigil", - "/Lotus/Upgrades/Skins/Sigils/WeGameNewYearTigerSigil", - "/Lotus/Upgrades/Skins/Sigils/WikiaSigil", - "/Lotus/Upgrades/Skins/Sigils/Winter2016Sigil", - "/Lotus/Upgrades/Skins/Sigils/WolfSigil", - "/Lotus/Upgrades/Skins/Sigils/XBoneFourYearSigil", - "/Lotus/Upgrades/Skins/Sigils/XBoneJadeSigil", - "/Lotus/Upgrades/Skins/Sigils/XBoneOneYearSigil", - "/Lotus/Upgrades/Skins/Sigils/XBoneThreeYearSigil", - "/Lotus/Upgrades/Skins/Sigils/XBoneTwoYearSigil", - "/Lotus/Upgrades/Skins/Sigils/XboneJadeTwoSigil", - "/Lotus/Upgrades/Skins/Sigils/YareliSigil", - "/Lotus/Upgrades/Skins/Sigils/ZarimanSupporterPackSigil", - "/Lotus/Upgrades/Skins/SolarisUnited/SUVentkidsBoomerang", - "/Lotus/Upgrades/Skins/Sony/ExcaliburPSPlusSkin", - "/Lotus/Upgrades/Skins/Sony/ExcaliburPSPlusSkinHelmet", - "/Lotus/Upgrades/Skins/Sony/ObsidianAkmagnus", - "/Lotus/Upgrades/Skins/Sony/ObsidianAttica", - "/Lotus/Upgrades/Skins/Sony/ObsidianBoltor", - "/Lotus/Upgrades/Skins/Sony/ObsidianColtekMask", - "/Lotus/Upgrades/Skins/Sony/ObsidianCorinth", - "/Lotus/Upgrades/Skins/Sony/ObsidianDexFuris", - "/Lotus/Upgrades/Skins/Sony/ObsidianGalatine", - "/Lotus/Upgrades/Skins/Sony/ObsidianGlaive", - "/Lotus/Upgrades/Skins/Sony/ObsidianGorgon", - "/Lotus/Upgrades/Skins/Sony/ObsidianGrattler", - "/Lotus/Upgrades/Skins/Sony/ObsidianHek", - "/Lotus/Upgrades/Skins/Sony/ObsidianHelios", - "/Lotus/Upgrades/Skins/Sony/ObsidianMagnus", - "/Lotus/Upgrades/Skins/Sony/ObsidianNikana", - "/Lotus/Upgrades/Skins/Sony/ObsidianPennant", - "/Lotus/Upgrades/Skins/Sony/ObsidianQuanta", - "/Lotus/Upgrades/Skins/Sony/ObsidianScoliac", - "/Lotus/Upgrades/Skins/Sony/ObsidianSerro", - "/Lotus/Upgrades/Skins/Sony/ObsidianSilvaAndAegis", - "/Lotus/Upgrades/Skins/Sony/ObsidianSonicor", - "/Lotus/Upgrades/Skins/Sony/ObsidianSpira", - "/Lotus/Upgrades/Skins/Sony/ObsidianStandardArchwingSkin", - "/Lotus/Upgrades/Skins/Sony/ObsidianTwinVipers", - "/Lotus/Upgrades/Skins/Sony/ObsidianViper", - "/Lotus/Upgrades/Skins/Sony/ObsidianWyrm", - "/Lotus/Upgrades/Skins/Sony/PS4Braton", - "/Lotus/Upgrades/Skins/Sony/PS4Lato", - "/Lotus/Upgrades/Skins/Sony/PS4Mk1Braton", - "/Lotus/Upgrades/Skins/Sony/PS4Skana", - "/Lotus/Upgrades/Skins/Sony/PS5OkinaSkin", - "/Lotus/Upgrades/Skins/Sony/PS5TiberonSkin", - "/Lotus/Upgrades/Skins/Starry/StarryAklato", - "/Lotus/Upgrades/Skins/Starry/StarryBraton", - "/Lotus/Upgrades/Skins/Starry/StarryKunai", - "/Lotus/Upgrades/Skins/Starry/StarryLato", - "/Lotus/Upgrades/Skins/Starry/StarryParis", - "/Lotus/Upgrades/Skins/Starry/StarrySkana", - "/Lotus/Upgrades/Skins/Starry/StarryStaff", - "/Lotus/Upgrades/Skins/SteamEsteem/EsteemExcalibur", - "/Lotus/Upgrades/Skins/SteamEsteem/EsteemExcaliburHelmet", - "/Lotus/Upgrades/Skins/SteamEsteem/EsteemLex", - "/Lotus/Upgrades/Skins/SteamEsteem/EsteemOrthos", - "/Lotus/Upgrades/Skins/SteamEsteem/EsteemTigris", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Dagger/SWCrubbakDaggerSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWArashiGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWDogmaHeavyBladeSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWIonGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWKarvrGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWKilzorathGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWMagestyGalatineSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWMithraGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWMizarGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWSupremaGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/GreatSwords/SWTengokenGreatswordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Hammer/SWAxonnakHammerSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWKhatuunKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWKrtrimaKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWMinosKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWMithraKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWShinigamiKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWUndercutterKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Machetes/SWKutherMachete", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Machetes/SWUdjyatMachete", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/JatKittagNoxiousHammerSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/OrthosMagestySkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWAphriaPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWDivaPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWIonPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWJatKittagOgunSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWJotunheimPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWKalynexPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWLahnssPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWLympharisPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Polearms/SWPhorcysPolearmSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Rapier/SWArashiRapierSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Rapier/SWFeritaRapierSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Rapier/SWNiDuhlRapierSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Staff/SWEklypsaStaffSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/DualSkanaInfestedSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/GalatineClaymireSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWAritSkanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWDeroSwordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWEisenSwordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWInsidiaSwordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWIonSwordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SWTengushenSwordSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Swords/SkanaInfestedSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWBaGethTonfaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWHadesTonfaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWRThreeKronenAritSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Tonfa/SWYamexTonfaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/TwoHandKatana/SWArashiTwoHandedKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/TwoHandKatana/SWDogma", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/TwoHandKatana/SWKsaraTwoHandedKatanaSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Melee/Whip/SWWuushWhipSkin", - "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWGarasuEyeAccessory", - "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWIncognitoEyeAccessory", - "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWLumisEarAccessory", - "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuEarAccessory", - "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuEyeAccessory", - "/Lotus/Upgrades/Skins/SteamWorkshop/Operator/Accessories/SWZenoriuFacialAccessory", - "/Lotus/Upgrades/Skins/SteamWorkshop/Primary/Opticor/SWMithraOpticorSkin", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerIgnisSkin", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeGorgon", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeGrakata", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeKesheg", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeQuartakk", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeStubba", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeTwinGrakatas", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeTwinRogga", - "/Lotus/Upgrades/Skins/SummerSolstice/SummerSolsticeZarr", - "/Lotus/Upgrades/Skins/Tengu/SWRFourZephyrMigisiHelmet", - "/Lotus/Upgrades/Skins/Tengu/SWRThreeHagoromoHelmet", - "/Lotus/Upgrades/Skins/Tengu/SWRThreeHagoromoSkin", - "/Lotus/Upgrades/Skins/Tengu/SWRThreeMonsoonHelmet", - "/Lotus/Upgrades/Skins/Tengu/SWRThreeSkeironHelmet", - "/Lotus/Upgrades/Skins/Tengu/SWRThreeSkeironSkin", - "/Lotus/Upgrades/Skins/Tengu/SWStrafeHelmet", - "/Lotus/Upgrades/Skins/Tengu/SWStrafeSkin", - "/Lotus/Upgrades/Skins/Tengu/SWZephyrBotLHelmet", - "/Lotus/Upgrades/Skins/Tengu/SWZephyrBotLSkin", - "/Lotus/Upgrades/Skins/Tengu/SWZephyrGraxxHelmet", - "/Lotus/Upgrades/Skins/Tengu/SWZephyrGraxxSkin", - "/Lotus/Upgrades/Skins/Tengu/TenguAgileAnims", - "/Lotus/Upgrades/Skins/Tengu/TenguAltBHelmet", - "/Lotus/Upgrades/Skins/Tengu/TenguAltHelmet", - "/Lotus/Upgrades/Skins/Tengu/TenguDeluxeAgileAnims", - "/Lotus/Upgrades/Skins/Tengu/TenguDeluxeNobleAnims", - "/Lotus/Upgrades/Skins/Tengu/TenguHelmet", - "/Lotus/Upgrades/Skins/Tengu/TenguNobleAnims", - "/Lotus/Upgrades/Skins/Tengu/TenguSkin", - "/Lotus/Upgrades/Skins/Tengu/UnlockTenguAgile", - "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeAgile", - "/Lotus/Upgrades/Skins/Tengu/UnlockTenguDeluxeNoble", - "/Lotus/Upgrades/Skins/Tengu/UnlockTenguNoble", - "/Lotus/Upgrades/Skins/Tengu/ZephyrAlternateSkin", - "/Lotus/Upgrades/Skins/Tengu/ZephyrDeluxeHelmet", - "/Lotus/Upgrades/Skins/Tengu/ZephyrDeluxeSkin", - "/Lotus/Upgrades/Skins/Tengu/ZephyrPrimeAlternateSkin", - "/Lotus/Upgrades/Skins/Tengu/ZephyrPrimeHelmet", - "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterPistolSkin", - "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterShotgunSkin", - "/Lotus/Upgrades/Skins/Tennocon2020Skins/DeimosSupporterWhipSkin", - "/Lotus/Upgrades/Skins/Tennogen/SWEzrielSwordSkin", - "/Lotus/Upgrades/Skins/Tennogen/SWROneSyandanaItem", - "/Lotus/Upgrades/Skins/Tennogen/SWROneSybaris", - "/Lotus/Upgrades/Skins/TextureOverrides/Bronze", - "/Lotus/Upgrades/Skins/TextureOverrides/Canvas", - "/Lotus/Upgrades/Skins/TextureOverrides/CarPaint", - "/Lotus/Upgrades/Skins/TextureOverrides/CarbonFiber", - "/Lotus/Upgrades/Skins/TextureOverrides/CeramicBreak", - "/Lotus/Upgrades/Skins/TextureOverrides/Circuits", - "/Lotus/Upgrades/Skins/TextureOverrides/CloudyStone", - "/Lotus/Upgrades/Skins/TextureOverrides/CremaMarble", - "/Lotus/Upgrades/Skins/TextureOverrides/DamasSteel", - "/Lotus/Upgrades/Skins/TextureOverrides/Droplets", - "/Lotus/Upgrades/Skins/TextureOverrides/DuviriPattern", - "/Lotus/Upgrades/Skins/TextureOverrides/Echo", - "/Lotus/Upgrades/Skins/TextureOverrides/FrogSkin", - "/Lotus/Upgrades/Skins/TextureOverrides/Frost", - "/Lotus/Upgrades/Skins/TextureOverrides/Galvanized", - "/Lotus/Upgrades/Skins/TextureOverrides/Glass", - "/Lotus/Upgrades/Skins/TextureOverrides/GlossyPlastic", - "/Lotus/Upgrades/Skins/TextureOverrides/GoldfishScale", - "/Lotus/Upgrades/Skins/TextureOverrides/GrossFlesh", - "/Lotus/Upgrades/Skins/TextureOverrides/IncompletePaintjob", - "/Lotus/Upgrades/Skins/TextureOverrides/Intestine", - "/Lotus/Upgrades/Skins/TextureOverrides/Ivory", - "/Lotus/Upgrades/Skins/TextureOverrides/JasperStone", - "/Lotus/Upgrades/Skins/TextureOverrides/LayeredStone", - "/Lotus/Upgrades/Skins/TextureOverrides/LeatherPackMap", - "/Lotus/Upgrades/Skins/TextureOverrides/LotusJacquard", - "/Lotus/Upgrades/Skins/TextureOverrides/Madurai", - "/Lotus/Upgrades/Skins/TextureOverrides/MarbleAlloy", - "/Lotus/Upgrades/Skins/TextureOverrides/MarbleShell", - "/Lotus/Upgrades/Skins/TextureOverrides/MattePaint", - "/Lotus/Upgrades/Skins/TextureOverrides/MetalPolish", - "/Lotus/Upgrades/Skins/TextureOverrides/Mirage", - "/Lotus/Upgrades/Skins/TextureOverrides/Naramon", - "/Lotus/Upgrades/Skins/TextureOverrides/PaintedMetal", - "/Lotus/Upgrades/Skins/TextureOverrides/PatternWrapped", - "/Lotus/Upgrades/Skins/TextureOverrides/PearlescentPlastic", - "/Lotus/Upgrades/Skins/TextureOverrides/PerformanceFabric", - "/Lotus/Upgrades/Skins/TextureOverrides/PlasticMembrane", - "/Lotus/Upgrades/Skins/TextureOverrides/PorcelainCracked", - "/Lotus/Upgrades/Skins/TextureOverrides/RoughMetal", - "/Lotus/Upgrades/Skins/TextureOverrides/Rubber", - "/Lotus/Upgrades/Skins/TextureOverrides/RubberWoven", - "/Lotus/Upgrades/Skins/TextureOverrides/ScalesUniform", - "/Lotus/Upgrades/Skins/TextureOverrides/Shark", - "/Lotus/Upgrades/Skins/TextureOverrides/ShingledMetal", - "/Lotus/Upgrades/Skins/TextureOverrides/SilkFabric", - "/Lotus/Upgrades/Skins/TextureOverrides/SoftDots", - "/Lotus/Upgrades/Skins/TextureOverrides/StackedWedge", - "/Lotus/Upgrades/Skins/TextureOverrides/Stitched", - "/Lotus/Upgrades/Skins/TextureOverrides/TechMetalDots", - "/Lotus/Upgrades/Skins/TextureOverrides/Trypophobia", - "/Lotus/Upgrades/Skins/TextureOverrides/Unairu", - "/Lotus/Upgrades/Skins/TextureOverrides/Vazarin", - "/Lotus/Upgrades/Skins/TextureOverrides/WoodBurned", - "/Lotus/Upgrades/Skins/TextureOverrides/Zenurik", - "/Lotus/Upgrades/Skins/TnHeavyShotgun/NintendoTnHeavyShotgunSkin", - "/Lotus/Upgrades/Skins/Trapper/SWBonaparteHelmet", - "/Lotus/Upgrades/Skins/Trapper/SWBonaparteSkin", - "/Lotus/Upgrades/Skins/Trapper/SWGraxxVaubanHelmet", - "/Lotus/Upgrades/Skins/Trapper/SWGraxxVaubanSkin", - "/Lotus/Upgrades/Skins/Trapper/SWRFourVaubanChapelonHelmet", - "/Lotus/Upgrades/Skins/Trapper/SWSuppressorHelmet", - "/Lotus/Upgrades/Skins/Trapper/SWSuppressorSkin", - "/Lotus/Upgrades/Skins/Trapper/TrapperAgileAnims", - "/Lotus/Upgrades/Skins/Trapper/TrapperDefaultHelmet", - "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAlt", - "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAltB", - "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetAltStatless", - "/Lotus/Upgrades/Skins/Trapper/TrapperHelmetSoldier", - "/Lotus/Upgrades/Skins/Trapper/TrapperNobleAnims", - "/Lotus/Upgrades/Skins/Trapper/TrapperPrimeSkin", - "/Lotus/Upgrades/Skins/Trapper/TrapperSkin", - "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperAgile", - "/Lotus/Upgrades/Skins/Trapper/UnlockTrapperNoble", - "/Lotus/Upgrades/Skins/Trapper/VaubanAlternateSkin", - "/Lotus/Upgrades/Skins/Trapper/VaubanDeluxeAxe", - "/Lotus/Upgrades/Skins/Trapper/VaubanDeluxeHelmet", - "/Lotus/Upgrades/Skins/Trapper/VaubanDeluxeSkin", - "/Lotus/Upgrades/Skins/Trapper/VaubanPrimeHelmet", - "/Lotus/Upgrades/Skins/Trapper/VaubanVoidSkin", - "/Lotus/Upgrades/Skins/Trapper/VaubanVoidSkinHelmet", - "/Lotus/Upgrades/Skins/Trinity/SWAncyraHelmet", - "/Lotus/Upgrades/Skins/Trinity/SWKnightessHelmet", - "/Lotus/Upgrades/Skins/Trinity/SWKnightessSkin", - "/Lotus/Upgrades/Skins/Trinity/SWNightingaleHelmet", - "/Lotus/Upgrades/Skins/Trinity/SWNightingaleSkin", - "/Lotus/Upgrades/Skins/Trinity/SWRFiveTrinityMessiahHelmet", - "/Lotus/Upgrades/Skins/Trinity/SWTrinityBotLHelmet", - "/Lotus/Upgrades/Skins/Trinity/SWTrinityBotLSkin", - "/Lotus/Upgrades/Skins/Trinity/TrinityAgileAnims", - "/Lotus/Upgrades/Skins/Trinity/TrinityAlternateSkin", - "/Lotus/Upgrades/Skins/Trinity/TrinityDeluxeHelmet", - "/Lotus/Upgrades/Skins/Trinity/TrinityDeluxeSuit", - "/Lotus/Upgrades/Skins/Trinity/TrinityHelmet", - "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAlt", - "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAltB", - "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Trinity/TrinityHelmetAltStatless", - "/Lotus/Upgrades/Skins/Trinity/TrinityNobleAnims", - "/Lotus/Upgrades/Skins/Trinity/TrinityPrimeHelmet", - "/Lotus/Upgrades/Skins/Trinity/TrinityPrimeSkin", - "/Lotus/Upgrades/Skins/Trinity/TrinitySkin", - "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityAgile", - "/Lotus/Upgrades/Skins/Trinity/UnlockTrinityNoble", - "/Lotus/Upgrades/Skins/Umbra/UmbraAltHelmet", - "/Lotus/Upgrades/Skins/Umbra/UmbraDaxGlaive", - "/Lotus/Upgrades/Skins/Umbra/UmbraSkin", - "/Lotus/Upgrades/Skins/ValentinesDay/ValentinesArrow", - "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceAItem", - "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceBItem", - "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceCItem", - "/Lotus/Upgrades/Skins/Voices/AdultOperatorVoiceDItem", - "/Lotus/Upgrades/Skins/Voices/OperatorVoiceAItem", - "/Lotus/Upgrades/Skins/Voices/OperatorVoiceBItem", - "/Lotus/Upgrades/Skins/Voices/OperatorVoiceCItem", - "/Lotus/Upgrades/Skins/Voices/OperatorVoiceDItem", - "/Lotus/Upgrades/Skins/VoidTrader/AshLeverianLiosPistol", - "/Lotus/Upgrades/Skins/VoidTrader/BaroArrow", - "/Lotus/Upgrades/Skins/VoidTrader/BaroInarosPolearmSkin", - "/Lotus/Upgrades/Skins/VoidTrader/BaroScytheMacheteSkin", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisBallasSword", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisLatronPistol", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisNikana", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisOdonataSkin", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisOpticor", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisSonicor", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisTiberon", - "/Lotus/Upgrades/Skins/VoidTrader/ElixisTigris", - "/Lotus/Upgrades/Skins/VoidTrader/PrismaArrow", - "/Lotus/Upgrades/Skins/VoidTrader/VTBoar", - "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburAvalonHelmet", - "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburHelmet", - "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburPendragonHelmet", - "/Lotus/Upgrades/Skins/VoidTrader/VTExcaliburSkin", - "/Lotus/Upgrades/Skins/VoidTrader/VTHalloweenDarkSword", - "/Lotus/Upgrades/Skins/VoidTrader/VTQuanta", - "/Lotus/Upgrades/Skins/VoidTrader/VTRedeemerSkin", - "/Lotus/Upgrades/Skins/Volt/DiscordVolt", - "/Lotus/Upgrades/Skins/Volt/DiscordVoltHelmet", - "/Lotus/Upgrades/Skins/Volt/NintendoVolt", - "/Lotus/Upgrades/Skins/Volt/NintendoVoltHelmet", - "/Lotus/Upgrades/Skins/Volt/SWArresterVoltHelmet", - "/Lotus/Upgrades/Skins/Volt/SWCapacitorHelmet", - "/Lotus/Upgrades/Skins/Volt/SWCapacitorSkin", - "/Lotus/Upgrades/Skins/Volt/SWFulgursorHelmet", - "/Lotus/Upgrades/Skins/Volt/SWFulgursorSkin", - "/Lotus/Upgrades/Skins/Volt/SWRFourVoltGraxxHelmet", - "/Lotus/Upgrades/Skins/Volt/SWRFourVoltGraxxSkin", - "/Lotus/Upgrades/Skins/Volt/SWROneVoltHelmet", - "/Lotus/Upgrades/Skins/Volt/SWROneVoltSkin", - "/Lotus/Upgrades/Skins/Volt/SWRelayVoltHelmet", - "/Lotus/Upgrades/Skins/Volt/SWTechnoshockHelmet", - "/Lotus/Upgrades/Skins/Volt/SWTechnoshockSkin", - "/Lotus/Upgrades/Skins/Volt/SWThalesVoltHelmet", - "/Lotus/Upgrades/Skins/Volt/SWZenerHelmet", - "/Lotus/Upgrades/Skins/Volt/SWZenerSkin", - "/Lotus/Upgrades/Skins/Volt/UnlockVoltAgile", - "/Lotus/Upgrades/Skins/Volt/UnlockVoltNoble", - "/Lotus/Upgrades/Skins/Volt/VoltAgileAnims", - "/Lotus/Upgrades/Skins/Volt/VoltAlternateSkin", - "/Lotus/Upgrades/Skins/Volt/VoltChameleonAHelmet", - "/Lotus/Upgrades/Skins/Volt/VoltChameleonASkin", - "/Lotus/Upgrades/Skins/Volt/VoltDeluxeBHelmet", - "/Lotus/Upgrades/Skins/Volt/VoltDeluxeBSkin", - "/Lotus/Upgrades/Skins/Volt/VoltDeluxeHelmet", - "/Lotus/Upgrades/Skins/Volt/VoltDeluxeMaceSkin", - "/Lotus/Upgrades/Skins/Volt/VoltDeluxeSkin", - "/Lotus/Upgrades/Skins/Volt/VoltHelmet", - "/Lotus/Upgrades/Skins/Volt/VoltHelmetAlt", - "/Lotus/Upgrades/Skins/Volt/VoltHelmetAltB", - "/Lotus/Upgrades/Skins/Volt/VoltHelmetAltBStatless", - "/Lotus/Upgrades/Skins/Volt/VoltHelmetAltStatless", - "/Lotus/Upgrades/Skins/Volt/VoltNobleAnims", - "/Lotus/Upgrades/Skins/Volt/VoltPrimeHelmet", - "/Lotus/Upgrades/Skins/Volt/VoltPrimeSkin", - "/Lotus/Upgrades/Skins/Volt/VoltSkin", - "/Lotus/Upgrades/Skins/Volt/VoltTwitchHelmet", - "/Lotus/Upgrades/Skins/Volt/VoltTwitchSkin", - "/Lotus/Upgrades/Skins/Weapons/DSPistols/BroncoSpectre", - "/Lotus/Upgrades/Skins/Weapons/DSPistols/FurisVekesk", - "/Lotus/Upgrades/Skins/Weapons/DSPistols/LatoTekna", - "/Lotus/Upgrades/Skins/Weapons/DSPistols/LexHammer", - "/Lotus/Upgrades/Skins/Weapons/DualDaggers/TnMilitaryDualDaggerSkin", - "/Lotus/Upgrades/Skins/Weapons/DualSword/DualRibbonKamasSkin", - "/Lotus/Upgrades/Skins/Weapons/GreatSword/PS4BallasSword", - "/Lotus/Upgrades/Skins/Weapons/GreatSword/SWGrimstoneCleaver", - "/Lotus/Upgrades/Skins/Weapons/GreatSword/SWIBallasSword", - "/Lotus/Upgrades/Skins/Weapons/GreatSword/SWObanakk", - "/Lotus/Upgrades/Skins/Weapons/GreatSword/XB1BallasSword", - "/Lotus/Upgrades/Skins/Weapons/Grimoire/GrimoireFantasySkin", - "/Lotus/Upgrades/Skins/Weapons/Grimoire/GrimoireSciFiSkin", - "/Lotus/Upgrades/Skins/Weapons/Hammers/NintendoFragor", - "/Lotus/Upgrades/Skins/Weapons/Hammers/SolarisHammerSkinA", - "/Lotus/Upgrades/Skins/Weapons/LongGuns/CorpusSpearGunSkin", - "/Lotus/Upgrades/Skins/Weapons/LongGuns/HarrowDeluxeSpearGun", - "/Lotus/Upgrades/Skins/Weapons/LongGuns/SolsticeBurston", - "/Lotus/Upgrades/Skins/Weapons/LongGuns/VenkraSniperSkin", - "/Lotus/Upgrades/Skins/Weapons/Machete/GrnGunStockClubSkin", - "/Lotus/Upgrades/Skins/Weapons/Pistols/BillowingPistolSkin", - "/Lotus/Upgrades/Skins/Weapons/Pistols/CeramicPistolSkin", - "/Lotus/Upgrades/Skins/Weapons/Pistols/TnSubmachinegunDualPistolSkin", - "/Lotus/Upgrades/Skins/Weapons/Pistols/TnSubmachinegunPistolSkin", - "/Lotus/Upgrades/Skins/Weapons/Rapier/CrpRapierSkin", - "/Lotus/Upgrades/Skins/Weapons/Rapier/TnLotusRapierSkin", - "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerRelayFireSkin", - "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerRelayWaterSkin", - "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerTNWNarmerSkin", - "/Lotus/Upgrades/Skins/Weapons/Redeemer/RedeemerTwitchSkin", - "/Lotus/Upgrades/Skins/Weapons/Redeemer/TnSpikeGunbladeSkin", - "/Lotus/Upgrades/Skins/Weapons/Rifle/SoaktronRifleSkin", - "/Lotus/Upgrades/Skins/Weapons/Staff/TnRibbonStaffSkin", - "/Lotus/Upgrades/Skins/Weapons/Staff/TrinityDeluxeBo", - "/Lotus/Upgrades/Skins/Weapons/Throwable/TennoCon2024NinjaStarSkin", - "/Lotus/Upgrades/Skins/Weapons/Tonfa/CeramicTonfaSkin", - "/Lotus/Upgrades/Skins/Weapons/Tonfa/KronenTwitchSkin", - "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/DrakgoonFlakCannonSkin", - "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/DrakgoonFlakCannonSkinPrimaryProjectileSkin", - "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/OgrisRocketLauncherSkin", - "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/OgrisRocketLauncherSkinPrimaryProjectileSkin", - "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/StahltaShockRifleSkin", - "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/StahltaShockRifleSkinPrimaryProjectileSkin", - "/Lotus/Upgrades/Skins/Weapons/UnrealTournament/StahltaShockRifleSkinSecondaryProjectileSkin", - "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfAgile", - "/Lotus/Upgrades/Skins/Werewolf/UnlockWerewolfNoble", - "/Lotus/Upgrades/Skins/Werewolf/VorunaVoidShellHelmet", - "/Lotus/Upgrades/Skins/Werewolf/VorunaVoidShellSkin", - "/Lotus/Upgrades/Skins/Werewolf/WerewolfAgileAnims", - "/Lotus/Upgrades/Skins/Werewolf/WerewolfAltCloakA", - "/Lotus/Upgrades/Skins/Werewolf/WerewolfAltCloakB", - "/Lotus/Upgrades/Skins/Werewolf/WerewolfAltHelmet", - "/Lotus/Upgrades/Skins/Werewolf/WerewolfHelmet", - "/Lotus/Upgrades/Skins/Werewolf/WerewolfNobleAnims", - "/Lotus/Upgrades/Skins/Werewolf/WerewolfSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeAcceltraSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeCorinthSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeGalatineSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeGaundaoSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeIgnisSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeLenzSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeSkiajatiSkin", - "/Lotus/Upgrades/Skins/WinterSolstice/SolsticeTatsuSkin", - "/Lotus/Upgrades/Skins/Wisp/DexWispHelmet", - "/Lotus/Upgrades/Skins/Wisp/DexWispSkin", - "/Lotus/Upgrades/Skins/Wisp/SWCelestisWispHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWCelestisWispSkin", - "/Lotus/Upgrades/Skins/Wisp/SWCovenWispHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWCovenWispSkin", - "/Lotus/Upgrades/Skins/Wisp/SWDamasHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWDelusionHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWDelusionSkin", - "/Lotus/Upgrades/Skins/Wisp/SWRaevuzHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWRaevuzSkin", - "/Lotus/Upgrades/Skins/Wisp/SWSycoraxWispHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWSycoraxWispSkin", - "/Lotus/Upgrades/Skins/Wisp/SWWispGraxxHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWWispGraxxSkin", - "/Lotus/Upgrades/Skins/Wisp/SWZamariuWispHelmet", - "/Lotus/Upgrades/Skins/Wisp/SWZamariuWispSkin", - "/Lotus/Upgrades/Skins/Wisp/UnlockWispAgile", - "/Lotus/Upgrades/Skins/Wisp/UnlockWispNoble", - "/Lotus/Upgrades/Skins/Wisp/WispAgileAnims", - "/Lotus/Upgrades/Skins/Wisp/WispAltHelmet", - "/Lotus/Upgrades/Skins/Wisp/WispAlternateSkin", - "/Lotus/Upgrades/Skins/Wisp/WispDeluxeHelmet", - "/Lotus/Upgrades/Skins/Wisp/WispDeluxeSkin", - "/Lotus/Upgrades/Skins/Wisp/WispHelmet", - "/Lotus/Upgrades/Skins/Wisp/WispNobleAnims", - "/Lotus/Upgrades/Skins/Wisp/WispPrimeDefaultCape", - "/Lotus/Upgrades/Skins/Wisp/WispPrimeHelmet", - "/Lotus/Upgrades/Skins/Wisp/WispPrimeSkin", - "/Lotus/Upgrades/Skins/Wisp/WispSkin", - "/Lotus/Upgrades/Skins/Wraith/ReaperHelmet", - "/Lotus/Upgrades/Skins/Wraith/ReaperSkin", - "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielHelmet", - "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielReaperHelmet", - "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielReaperSkin", - "/Lotus/Upgrades/Skins/Wraith/SWSevagothEzrielSkin", - "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeArmRightArmor", - "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeHelmet", - "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeRopeAnchor", - "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeShadowClawsSkin", - "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeShadowHelmet", - "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeShadowSkin", - "/Lotus/Upgrades/Skins/Wraith/SevagothDeluxeSkin", - "/Lotus/Upgrades/Skins/Wraith/SevagothDlxWeaponSkin", - "/Lotus/Upgrades/Skins/Wraith/UnlockWraithAgile", - "/Lotus/Upgrades/Skins/Wraith/UnlockWraithNoble", - "/Lotus/Upgrades/Skins/Wraith/WraithAgileAnims", - "/Lotus/Upgrades/Skins/Wraith/WraithAltHelmet", - "/Lotus/Upgrades/Skins/Wraith/WraithHelmet", - "/Lotus/Upgrades/Skins/Wraith/WraithNobleAnims", - "/Lotus/Upgrades/Skins/Wraith/WraithSkin", - "/Lotus/Upgrades/Skins/Yareli/SWBatomorphaHelmet", - "/Lotus/Upgrades/Skins/Yareli/UnlockYareliAgile", - "/Lotus/Upgrades/Skins/Yareli/UnlockYareliNoble", - "/Lotus/Upgrades/Skins/Yareli/YareliAgileAnims", - "/Lotus/Upgrades/Skins/Yareli/YareliAltHelmet", - "/Lotus/Upgrades/Skins/Yareli/YareliHelmet", - "/Lotus/Upgrades/Skins/Yareli/YareliNobleAnims", - "/Lotus/Upgrades/Skins/Yareli/YareliSkin", - "/Lotus/Upgrades/Skins/YinYang/EquinoxDeluxeHelmet", - "/Lotus/Upgrades/Skins/YinYang/EquinoxDeluxeSkin", - "/Lotus/Upgrades/Skins/YinYang/EquinoxDeluxeSwordShieldSkin", - "/Lotus/Upgrades/Skins/YinYang/EquinoxPrimeHelmet", - "/Lotus/Upgrades/Skins/YinYang/EquinoxPrimeSkin", - "/Lotus/Upgrades/Skins/YinYang/YinYangSkin" -] -- 2.47.2 From be5a2716093270ac6659ae9277071d9d27b1f334 Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 19 Jun 2024 10:32:16 +0200 Subject: [PATCH 189/522] feat: handle costs of recipes (#329) --- .../api/claimCompletedRecipeController.ts | 51 ++++++++++++++----- src/services/itemDataService.ts | 3 +- src/services/recipeService.ts | 50 ++++-------------- 3 files changed, 48 insertions(+), 56 deletions(-) diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts index 43abc899..cd8aa3c4 100644 --- a/src/controllers/api/claimCompletedRecipeController.ts +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -3,11 +3,11 @@ import { RequestHandler } from "express"; import { logger } from "@/src/utils/logger"; -import { getItemByBlueprint } from "@/src/services/itemDataService"; +import { getRecipe } from "@/src/services/itemDataService"; import { IOid } from "@/src/types/commonTypes"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getInventory, updateCurrency, addItem } from "@/src/services/inventoryService"; +import { getInventory, updateCurrency, addItem, addMiscItems, addRecipes } from "@/src/services/inventoryService"; export interface IClaimCompletedRecipeRequest { RecipeIds: IOid[]; @@ -37,28 +37,51 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) = inventory.PendingRecipes.pull(pendingRecipe._id); await inventory.save(); - const buildable = getItemByBlueprint(pendingRecipe.ItemType); - if (!buildable) { + const recipe = getRecipe(pendingRecipe.ItemType); + if (!recipe) { logger.error(`no completed item found for recipe ${pendingRecipe._id}`); throw new Error(`no completed item found for recipe ${pendingRecipe._id}`); } if (req.query.cancel) { - // TODO: Refund items - res.json({}); + const currencyChanges = await updateCurrency(recipe.buildPrice * -1, false, accountId); + + const inventory = await getInventory(accountId); + addMiscItems(inventory, recipe.ingredients); + await inventory.save(); + + // Not a bug: In the specific case of cancelling a recipe, InventoryChanges are expected to be the root. + res.json({ + ...currencyChanges, + MiscItems: recipe.ingredients + }); } else { - logger.debug("Claiming Recipe", { buildable, pendingRecipe }); - if (buildable.consumeOnUse) { - // TODO: Remove one instance of this recipe, and include that in InventoryChanges. + logger.debug("Claiming Recipe", { recipe, pendingRecipe }); + let InventoryChanges = {}; + if (recipe.consumeOnUse) { + const recipeChanges = [ + { + ItemType: pendingRecipe.ItemType, + ItemCount: -1 + } + ]; + + InventoryChanges = { ...InventoryChanges, Recipes: recipeChanges }; + + const inventory = await getInventory(accountId); + addRecipes(inventory, recipeChanges); + await inventory.save(); } - let currencyChanges = {}; - if (req.query.rush && buildable.skipBuildTimePrice) { - currencyChanges = await updateCurrency(buildable.skipBuildTimePrice, true, accountId); + if (req.query.rush) { + InventoryChanges = { + ...InventoryChanges, + ...(await updateCurrency(recipe.skipBuildTimePrice, true, accountId)) + }; } res.json({ InventoryChanges: { - ...currencyChanges, - ...(await addItem(accountId, buildable.resultType, buildable.num)).InventoryChanges + ...InventoryChanges, + ...(await addItem(accountId, recipe.resultType, recipe.num)).InventoryChanges } }); } diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 694a766f..890cde2a 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -97,8 +97,7 @@ export const blueprintNames = Object.fromEntries( .map(name => [name, craftNames[name]]) ); -// Gets a recipe by its uniqueName -export const getItemByBlueprint = (uniqueName: string): IRecipe | undefined => { +export const getRecipe = (uniqueName: string): IRecipe | undefined => { return ExportRecipes[uniqueName]; }; diff --git a/src/services/recipeService.ts b/src/services/recipeService.ts index c9d315bd..8594def4 100644 --- a/src/services/recipeService.ts +++ b/src/services/recipeService.ts @@ -1,60 +1,30 @@ import { unixTimesInMs } from "@/src/constants/timeConstants"; -import { getInventory } from "@/src/services/inventoryService"; -import { getItemByBlueprint } from "@/src/services/itemDataService"; +import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; +import { getRecipe } from "@/src/services/itemDataService"; import { logger } from "@/src/utils/logger"; import { Types } from "mongoose"; -export interface IResource { - uniqueName: string; - count: number; -} - -// export const updateResources = async (accountId: string, components: IResource[]) => { -// const inventory = await getInventory(accountId); - -// for (const component of components) { -// const category = getItemCategoryByUniqueName(component.uniqueName) as keyof typeof inventory; -// //validate category - -// console.log(component.uniqueName); -// console.log("cate", category); - -// const invItem = inventory[category]; -// console.log("invItem", invItem); - -// inventory["MiscItems"]; -// } -// }; - export const startRecipe = async (recipeName: string, accountId: string) => { - const recipe = getItemByBlueprint(recipeName); + const recipe = getRecipe(recipeName); if (!recipe) { logger.error(`unknown recipe ${recipeName}`); throw new Error(`unknown recipe ${recipeName}`); } - const componentsNeeded = recipe.ingredients.map(component => ({ - uniqueName: component.ItemType, - count: component.ItemCount + await updateCurrency(recipe.buildPrice, false, accountId); + + const ingredientsInverse = recipe.ingredients.map(component => ({ + ItemType: component.ItemType, + ItemCount: component.ItemCount * -1 })); - if (!componentsNeeded) { - logger.error(`recipe ${recipeName} has no components`); - throw new Error(`recipe ${recipeName} has no components`); - } + const inventory = await getInventory(accountId); + addMiscItems(inventory, ingredientsInverse); - //TODO: consume components used - //await updateResources(accountId, componentsNeeded); - - if (!recipe.buildTime) { - logger.error(`recipe ${recipeName} has no build time`); - throw new Error(`recipe ${recipeName} has no build time`); - } //buildtime is in seconds const completionDate = new Date(Date.now() + recipe.buildTime * unixTimesInMs.second); - const inventory = await getInventory(accountId); inventory.PendingRecipes.push({ ItemType: recipeName, CompletionDate: completionDate, -- 2.47.2 From 1bbdfb030cb6967e297e1f594cc7a8b1045e4b1b Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 19 Jun 2024 10:33:11 +0200 Subject: [PATCH 190/522] feat: implement selling of recipes (#328) --- src/controllers/api/sellController.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts index b240475b..a2a36228 100644 --- a/src/controllers/api/sellController.ts +++ b/src/controllers/api/sellController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { ISellRequest } from "@/src/types/sellTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getInventory, addMods } from "@/src/services/inventoryService"; +import { getInventory, addMods, addRecipes } from "@/src/services/inventoryService"; export const sellController: RequestHandler = async (req, res) => { const payload: ISellRequest = JSON.parse(req.body.toString()); @@ -39,8 +39,14 @@ export const sellController: RequestHandler = async (req, res) => { }); } if (payload.Items.Recipes) { - // TODO - // Note: sellItem.String is a uniqueName in this case + const recipeChanges = []; + for (const sellItem of payload.Items.Recipes) { + recipeChanges.push({ + ItemType: sellItem.String, + ItemCount: sellItem.Count * -1 + }); + } + addRecipes(inventory, recipeChanges); } if (payload.Items.Upgrades) { payload.Items.Upgrades.forEach(sellItem => { -- 2.47.2 From f1237d562d291046c72b76b9275731f941995640 Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 19 Jun 2024 10:33:56 +0200 Subject: [PATCH 191/522] feat: implement stepSequencers.php (#327) --- src/controllers/api/stepSequencersController.ts | 14 ++++++++++++++ src/routes/api.ts | 2 ++ src/types/inventoryTypes/inventoryTypes.ts | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 src/controllers/api/stepSequencersController.ts diff --git a/src/controllers/api/stepSequencersController.ts b/src/controllers/api/stepSequencersController.ts new file mode 100644 index 00000000..45ea01ba --- /dev/null +++ b/src/controllers/api/stepSequencersController.ts @@ -0,0 +1,14 @@ +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory } from "@/src/services/inventoryService"; +import { IStepSequencer } from "@/src/types/inventoryTypes/inventoryTypes"; + +export const stepSequencersController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + const stepSequencer = JSON.parse(req.body.toString()) as IStepSequencer; + delete stepSequencer.ItemId; + const stepSequencerIndex = inventory.StepSequencers.push(stepSequencer); + const changedInventory = await inventory.save(); + res.json(changedInventory.StepSequencers[stepSequencerIndex - 1]); // unsure about the expected response format, but it seems anything works. +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index 35eaaa43..15192fe8 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -50,6 +50,7 @@ import { setSupportedSyndicateController } from "@/src/controllers/api/setSuppor import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController"; import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; import { startRecipeController } from "@/src/controllers/api/startRecipeController"; +import { stepSequencersController } from "@/src/controllers/api/stepSequencersController"; import { surveysController } from "@/src/controllers/api/surveysController"; import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; import { trainingResultController } from "@/src/controllers/api/trainingResultController"; @@ -117,6 +118,7 @@ apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController); apiRouter.post("/shipDecorations.php", shipDecorationsController); apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); apiRouter.post("/startRecipe.php", startRecipeController); +apiRouter.post("/stepSequencers.php", stepSequencersController); apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); apiRouter.post("/trainingResult.php", trainingResultController); apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 1abd4cd8..a8f30308 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -831,7 +831,7 @@ export interface IStepSequencer { NotePacks: INotePacks; FingerPrint: string; Name: string; - ItemId: IOid; + ItemId?: IOid; } export interface INotePacks { -- 2.47.2 From 1fe8351dca08ef3cf20e25db23ac4e63c71af394 Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 19 Jun 2024 17:46:12 +0200 Subject: [PATCH 192/522] feat: handle purchasing of archwing, archgun, & archmelee (#326) --- src/models/inventoryModels/inventoryModel.ts | 53 ++++++----- src/services/inventoryService.ts | 99 +++++++++++--------- src/types/inventoryTypes/inventoryTypes.ts | 1 + 3 files changed, 88 insertions(+), 65 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 90c4c844..2dc26ef8 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -197,29 +197,32 @@ ArchonCrystalUpgradeSchema.set("toJSON", { } }); -const EquipmentSchema = new Schema({ - ItemType: String, - Configs: [ItemConfigSchema], - UpgradeVer: Number, - XP: Number, - Features: Number, - Polarized: Number, - Polarity: [polaritySchema], - FocusLens: String, - ModSlotPurchases: Number, - CustomizationSlotPurchases: Number, - UpgradeType: String, - UpgradeFingerprint: String, - ItemName: String, - InfestationDate: Date, - InfestationDays: Number, - InfestationType: String, - ModularParts: [String], - UnlockLevel: Number, - Expiry: Date, - SkillTree: String, - ArchonCrystalUpgrades: { type: [ArchonCrystalUpgradeSchema], default: undefined } -}); +const EquipmentSchema = new Schema( + { + ItemType: String, + Configs: [ItemConfigSchema], + UpgradeVer: Number, + XP: Number, + Features: Number, + Polarized: Number, + Polarity: [polaritySchema], + FocusLens: String, + ModSlotPurchases: Number, + CustomizationSlotPurchases: Number, + UpgradeType: String, + UpgradeFingerprint: String, + ItemName: String, + InfestationDate: Date, + InfestationDays: Number, + InfestationType: String, + ModularParts: { type: [String], default: undefined }, + UnlockLevel: Number, + Expiry: Date, + SkillTree: String, + ArchonCrystalUpgrades: { type: [ArchonCrystalUpgradeSchema], default: undefined } + }, + { id: false } +); EquipmentSchema.virtual("ItemId").get(function () { return { $oid: this._id.toString() } satisfies IOid; @@ -955,6 +958,10 @@ type InventoryDocumentProps = { Sentinels: Types.DocumentArray; Horses: Types.DocumentArray; PendingRecipes: Types.DocumentArray; + SpaceSuits: Types.DocumentArray; + SpaceGuns: Types.DocumentArray; + SpaceMelee: Types.DocumentArray; + SentinelWeapons: Types.DocumentArray; }; // eslint-disable-next-line @typescript-eslint/ban-types diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index c7861130..36bda69e 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -92,33 +92,51 @@ export const addItem = async ( // Path-based duck typing switch (typeName.substr(1).split("/")[1]) { case "Powersuits": - if (typeName.includes("EntratiMech")) { - const mechSuit = await addMechSuit(typeName, accountId); - await updateSlots(accountId, InventorySlot.MECHSUITS, 0, 1); - logger.debug("mech suit", mechSuit); - return { - InventoryChanges: { - MechBin: { - count: 1, - platinum: 0, - Slots: -1 - }, - MechSuits: [mechSuit] - } - }; - } - const suit = await addPowerSuit(typeName, accountId); - await updateSlots(accountId, InventorySlot.SUITS, 0, 1); - return { - InventoryChanges: { - SuitBin: { - count: 1, - platinum: 0, - Slots: -1 - }, - Suits: [suit] + switch (typeName.substr(1).split("/")[2]) { + default: { + const suit = await addPowerSuit(typeName, accountId); + await updateSlots(accountId, InventorySlot.SUITS, 0, 1); + return { + InventoryChanges: { + SuitBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + Suits: [suit] + } + }; } - }; + case "Archwing": { + const spaceSuit = await addSpaceSuit(typeName, accountId); + await updateSlots(accountId, InventorySlot.SPACESUITS, 0, 1); + return { + InventoryChanges: { + SpaceSuitBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + SpaceSuits: [spaceSuit] + } + }; + } + case "EntratiMech": { + const mechSuit = await addMechSuit(typeName, accountId); + await updateSlots(accountId, InventorySlot.MECHSUITS, 0, 1); + return { + InventoryChanges: { + MechBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + MechSuits: [mechSuit] + } + }; + } + } + break; case "Weapons": const weaponType = getWeaponType(typeName); const weapon = await addWeapon(weaponType, typeName, accountId); @@ -277,6 +295,13 @@ export const addSpecialItem = async (itemName: string, accountId: string) => { return changedInventory.SpecialItems[specialItemIndex - 1].toJSON(); }; +export const addSpaceSuit = async (spacesuitName: string, accountId: string) => { + const inventory = await getInventory(accountId); + const suitIndex = inventory.SpaceSuits.push({ ItemType: spacesuitName, Configs: [], UpgradeVer: 101, XP: 0 }); + const changedInventory = await inventory.save(); + return changedInventory.SpaceSuits[suitIndex - 1].toJSON(); +}; + export const updateSlots = async (accountId: string, slotName: SlotNames, slotAmount: number, extraAmount: number) => { const inventory = await getInventory(accountId); @@ -391,22 +416,12 @@ export const addWeapon = async ( ): Promise => { const inventory = await getInventory(accountId); - let weaponIndex; - switch (weaponType) { - case "LongGuns": - case "Pistols": - case "Melee": - case "OperatorAmps": - weaponIndex = inventory[weaponType].push({ - ItemType: weaponName, - Configs: [], - XP: 0, - ModularParts: modularParts - }); - break; - default: - throw new Error("unknown weapon type: " + weaponType); - } + const weaponIndex = inventory[weaponType].push({ + ItemType: weaponName, + Configs: [], + XP: 0, + ModularParts: modularParts + }); const changedInventory = await inventory.save(); return changedInventory[weaponType][weaponIndex - 1].toJSON(); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index a8f30308..28423edb 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -358,6 +358,7 @@ export interface ICombat { export enum InventorySlot { SUITS = "SuitBin", WEAPONS = "WeaponBin", + SPACESUITS = "SpaceSuitBin", MECHSUITS = "MechBin", PVE_LOADOUTS = "PveBonusLoadoutBin", SENTINELS = "SentinelBin" -- 2.47.2 From 2f9ac5dc7b619c3593892f0ff3c4e7c8f11b0add Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 11:45:45 +0200 Subject: [PATCH 193/522] chore: update typescript plugins for eslint (#335) --- package-lock.json | 467 +++++------------- package.json | 4 +- src/services/missionInventoryUpdateService.ts | 2 +- 3 files changed, 118 insertions(+), 355 deletions(-) diff --git a/package-lock.json b/package-lock.json index e12a07ef..0725994e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,8 +22,8 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.20", "@types/morgan": "^1.9.7", - "@typescript-eslint/eslint-plugin": "^6.9.0", - "@typescript-eslint/parser": "^6.2.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", "eslint": "^8.56.0", "eslint-plugin-prettier": "^5.1.3", "morgan": "^1.10.0", @@ -364,12 +364,6 @@ "@types/send": "*" } }, - "node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true - }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -403,12 +397,6 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, - "node_modules/@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", - "dev": true - }, "node_modules/@types/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", @@ -460,33 +448,31 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", - "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", + "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.9.0", - "@typescript-eslint/type-utils": "6.9.0", - "@typescript-eslint/utils": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/type-utils": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -494,97 +480,27 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", - "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", - "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", - "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.0.tgz", - "integrity": "sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", + "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.2.0", - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/typescript-estree": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -593,9 +509,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -616,16 +532,16 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.0.tgz", - "integrity": "sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", + "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0" + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -633,25 +549,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", - "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", + "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.9.0", - "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/utils": "7.13.1", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -659,67 +575,10 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", - "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", - "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", - "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -740,12 +599,12 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.0.tgz", - "integrity": "sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", + "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -753,21 +612,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.0.tgz", - "integrity": "sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -779,10 +639,19 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -796,6 +665,21 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -803,138 +687,38 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", - "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.9.0", - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/typescript-estree": "6.9.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", - "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", - "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", - "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", - "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/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/@typescript-eslint/utils/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/@typescript-eslint/visitor-keys": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz", - "integrity": "sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1848,9 +1632,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -2245,9 +2029,9 @@ } }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -2496,18 +2280,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "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/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -2550,12 +2322,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -3261,13 +3033,10 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "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==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3658,12 +3427,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -4061,12 +3830,6 @@ "node": ">=10" } }, - "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/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index 473d3cdc..0acdfc73 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "@tsconfig/node20": "^1.0.0", "@types/express": "^4.17.20", "@types/morgan": "^1.9.7", - "@typescript-eslint/eslint-plugin": "^6.9.0", - "@typescript-eslint/parser": "^6.2.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", "eslint": "^8.56.0", "eslint-plugin-prettier": "^5.1.3", "morgan": "^1.10.0", diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 5936adbe..aadcd4ae 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -174,7 +174,7 @@ const itemCheck = ( }; for (const key of Object.keys(rewardCheck) as IInventoryFieldType[]) { if (rewardCheck[key]) { - addRewardResponse(InventoryChanges, MissionRewards, name, rewardCheck[key]!, key); + addRewardResponse(InventoryChanges, MissionRewards, name, rewardCheck[key], key); return true; } } -- 2.47.2 From f9414dcf84fb392a5bc279644cbfa48c4a165229 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 11:46:08 +0200 Subject: [PATCH 194/522] fix: switching to drifter doesn't save (#334) --- src/services/saveLoadoutService.ts | 4 ++++ src/types/inventoryTypes/inventoryTypes.ts | 2 +- src/types/saveLoadoutTypes.ts | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index 502a0e63..9ff6e523 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -171,6 +171,10 @@ export const handleInventoryItemConfigChange = async ( inventory.EquippedGear = equipment as string[]; break; } + case "UseAdultOperatorLoadout": { + inventory.UseAdultOperatorLoadout = equipment as boolean; + break; + } default: { logger.error(`category not implemented: ${equipmentName}`, { config: equipment }); } diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 28423edb..d538a7a2 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -239,7 +239,7 @@ export interface IInventoryResponse { CrewMembers: ICrewMember[]; AdultOperatorLoadOuts: IOperatorConfigClient[]; LotusCustomization: ILotusCustomization; - UseAdultOperatorLoadout: boolean; + UseAdultOperatorLoadout?: boolean; DailyAffiliationZariman: number; NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; diff --git a/src/types/saveLoadoutTypes.ts b/src/types/saveLoadoutTypes.ts index 4f434eef..9121aadf 100644 --- a/src/types/saveLoadoutTypes.ts +++ b/src/types/saveLoadoutTypes.ts @@ -33,6 +33,7 @@ export interface ISaveLoadoutRequest { CurrentLoadOutIds: IOid[]; ValidNewLoadoutId: string; EquippedGear: string[]; + UseAdultOperatorLoadout: boolean; } export interface ISaveLoadoutRequestNoUpgradeVer extends Omit {} -- 2.47.2 From 722a9aba5b8d0e1b5fa89fba549d19c8f28ae791 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 11:47:21 +0200 Subject: [PATCH 195/522] improve: suppress no-misued-promises when declaring RequestHandler (#332) --- src/controllers/api/addFriendImageController.ts | 1 + src/controllers/api/createGuildController.ts | 1 + src/controllers/api/focusController.ts | 1 + src/controllers/api/getGuildController.ts | 1 + src/controllers/api/getGuildDojoController.ts | 1 + src/controllers/api/hostSessionController.ts | 1 + src/controllers/api/infestedFoundryController.ts | 1 + src/controllers/api/inventoryController.ts | 6 +++--- src/controllers/api/logoutController.ts | 1 + src/controllers/api/modularWeaponCraftingController.ts | 1 + src/controllers/api/nameWeaponController.ts | 1 + src/controllers/api/purchaseController.ts | 5 +++-- src/controllers/api/sellController.ts | 1 + src/controllers/api/setBootLocationController.ts | 1 + src/controllers/api/setSupportedSyndicateController.ts | 1 + src/controllers/api/startDojoRecipeController.ts | 1 + src/controllers/api/stepSequencersController.ts | 1 + src/controllers/api/syndicateSacrificeController.ts | 1 + src/controllers/api/updateChallengeProgressController.ts | 1 + src/controllers/api/upgradesController.ts | 1 + src/controllers/custom/updateConfigDataController.ts | 1 + src/controllers/stats/viewController.ts | 1 + src/routes/cache.ts | 1 + 23 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/controllers/api/addFriendImageController.ts b/src/controllers/api/addFriendImageController.ts index 979bb9fb..6c9a2370 100644 --- a/src/controllers/api/addFriendImageController.ts +++ b/src/controllers/api/addFriendImageController.ts @@ -4,6 +4,7 @@ import { IUpdateGlyphRequest } from "@/src/types/requestTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const addFriendImageController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const json = getJSONfromString(req.body.toString()) as IUpdateGlyphRequest; diff --git a/src/controllers/api/createGuildController.ts b/src/controllers/api/createGuildController.ts index f0f56f1b..9499e308 100644 --- a/src/controllers/api/createGuildController.ts +++ b/src/controllers/api/createGuildController.ts @@ -5,6 +5,7 @@ import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Guild } from "@/src/models/guildModel"; import { ICreateGuildRequest } from "@/src/types/guildTypes"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const createGuildController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const payload: ICreateGuildRequest = getJSONfromString(req.body.toString()); diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index b2ac53f6..e13b6057 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -5,6 +5,7 @@ import { IMiscItem, TFocusPolarity } from "@/src/types/inventoryTypes/inventoryT import { logger } from "@/src/utils/logger"; import baseFocusPointCosts from "@/static/json/baseFocusPointCosts.json"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const focusController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); switch (req.query.op) { diff --git a/src/controllers/api/getGuildController.ts b/src/controllers/api/getGuildController.ts index d112f996..076e5934 100644 --- a/src/controllers/api/getGuildController.ts +++ b/src/controllers/api/getGuildController.ts @@ -4,6 +4,7 @@ import { Guild } from "@/src/models/guildModel"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { toOid } from "@/src/helpers/inventoryHelpers"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const getGuildController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await Inventory.findOne({ accountOwnerId: accountId }); diff --git a/src/controllers/api/getGuildDojoController.ts b/src/controllers/api/getGuildDojoController.ts index a220bb7e..af60b492 100644 --- a/src/controllers/api/getGuildDojoController.ts +++ b/src/controllers/api/getGuildDojoController.ts @@ -4,6 +4,7 @@ import { Guild } from "@/src/models/guildModel"; import { IDojoClient, IDojoComponentClient } from "@/src/types/guildTypes"; import { toOid, toMongoDate } from "@/src/helpers/inventoryHelpers"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const getGuildDojoController: RequestHandler = async (req, res) => { const guildId = req.query.guildId as string; diff --git a/src/controllers/api/hostSessionController.ts b/src/controllers/api/hostSessionController.ts index 1745d994..94ca633a 100644 --- a/src/controllers/api/hostSessionController.ts +++ b/src/controllers/api/hostSessionController.ts @@ -4,6 +4,7 @@ import { createNewSession } from "@/src/managers/sessionManager"; import { logger } from "@/src/utils/logger"; import { ISession } from "@/src/types/session"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const hostSessionController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const hostSessionRequest = JSON.parse(req.body as string) as ISession; diff --git a/src/controllers/api/infestedFoundryController.ts b/src/controllers/api/infestedFoundryController.ts index 26b98803..85c50921 100644 --- a/src/controllers/api/infestedFoundryController.ts +++ b/src/controllers/api/infestedFoundryController.ts @@ -4,6 +4,7 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getInventory, addMiscItems } from "@/src/services/inventoryService"; import { IOid } from "@/src/types/commonTypes"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const infestedFoundryController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const payload = getJSONfromString(req.body.toString()); diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index b2738bf8..03383df8 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,15 +1,15 @@ -/* eslint-disable @typescript-eslint/no-misused-promises */ +import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; -import { Request, RequestHandler, Response } from "express"; import { config } from "@/src/services/configService"; import allMissions from "@/static/fixed_responses/allMissions.json"; import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes"; import { ExportCustoms, ExportFlavour, ExportKeys, ExportResources } from "warframe-public-export-plus"; -const inventoryController: RequestHandler = async (request: Request, response: Response) => { +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const inventoryController: RequestHandler = async (request, response) => { let accountId; try { accountId = await getAccountIdForRequest(request); diff --git a/src/controllers/api/logoutController.ts b/src/controllers/api/logoutController.ts index 735014d4..a6faa008 100644 --- a/src/controllers/api/logoutController.ts +++ b/src/controllers/api/logoutController.ts @@ -2,6 +2,7 @@ import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { Account } from "@/src/models/loginModel"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const logoutController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const account = await Account.findOne({ _id: accountId }); diff --git a/src/controllers/api/modularWeaponCraftingController.ts b/src/controllers/api/modularWeaponCraftingController.ts index c1cd7bc8..09244764 100644 --- a/src/controllers/api/modularWeaponCraftingController.ts +++ b/src/controllers/api/modularWeaponCraftingController.ts @@ -18,6 +18,7 @@ interface IModularCraftRequest { Parts: string[]; } +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const modularWeaponCraftingController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const data: IModularCraftRequest = getJSONfromString(req.body.toString()); diff --git a/src/controllers/api/nameWeaponController.ts b/src/controllers/api/nameWeaponController.ts index 7543cbc4..c32f0fe8 100644 --- a/src/controllers/api/nameWeaponController.ts +++ b/src/controllers/api/nameWeaponController.ts @@ -8,6 +8,7 @@ interface INameWeaponRequest { ItemName: string; } +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const nameWeaponController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); diff --git a/src/controllers/api/purchaseController.ts b/src/controllers/api/purchaseController.ts index cf32a95d..9e8bcb45 100644 --- a/src/controllers/api/purchaseController.ts +++ b/src/controllers/api/purchaseController.ts @@ -1,9 +1,10 @@ +import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { toPurchaseRequest } from "@/src/helpers/purchaseHelpers"; import { handlePurchase } from "@/src/services/purchaseService"; -import { Request, Response } from "express"; -export const purchaseController = async (req: Request, res: Response) => { +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const purchaseController: RequestHandler = async (req, res) => { const purchaseRequest = toPurchaseRequest(JSON.parse(String(req.body))); const accountId = await getAccountIdForRequest(req); const response = await handlePurchase(purchaseRequest, accountId); diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts index a2a36228..f242ccba 100644 --- a/src/controllers/api/sellController.ts +++ b/src/controllers/api/sellController.ts @@ -3,6 +3,7 @@ import { ISellRequest } from "@/src/types/sellTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory, addMods, addRecipes } from "@/src/services/inventoryService"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const sellController: RequestHandler = async (req, res) => { const payload: ISellRequest = JSON.parse(req.body.toString()); const accountId = await getAccountIdForRequest(req); diff --git a/src/controllers/api/setBootLocationController.ts b/src/controllers/api/setBootLocationController.ts index 599044a0..a91f63a1 100644 --- a/src/controllers/api/setBootLocationController.ts +++ b/src/controllers/api/setBootLocationController.ts @@ -3,6 +3,7 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { TBootLocation } from "@/src/types/shipTypes"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const setBootLocationController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const personalRooms = await getPersonalRooms(accountId); diff --git a/src/controllers/api/setSupportedSyndicateController.ts b/src/controllers/api/setSupportedSyndicateController.ts index e22b659f..619fb44c 100644 --- a/src/controllers/api/setSupportedSyndicateController.ts +++ b/src/controllers/api/setSupportedSyndicateController.ts @@ -2,6 +2,7 @@ import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const setSupportedSyndicateController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); diff --git a/src/controllers/api/startDojoRecipeController.ts b/src/controllers/api/startDojoRecipeController.ts index 8b4104ac..a278f31c 100644 --- a/src/controllers/api/startDojoRecipeController.ts +++ b/src/controllers/api/startDojoRecipeController.ts @@ -8,6 +8,7 @@ interface IStartDojoRecipeRequest { Revision: number; } +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const startDojoRecipeController: RequestHandler = async (req, res) => { const guild = await getGuildForRequest(req); // At this point, we know that a member of the guild is making this request. Assuming they are allowed to start a build. diff --git a/src/controllers/api/stepSequencersController.ts b/src/controllers/api/stepSequencersController.ts index 45ea01ba..bb963b92 100644 --- a/src/controllers/api/stepSequencersController.ts +++ b/src/controllers/api/stepSequencersController.ts @@ -3,6 +3,7 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; import { IStepSequencer } from "@/src/types/inventoryTypes/inventoryTypes"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const stepSequencersController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); diff --git a/src/controllers/api/syndicateSacrificeController.ts b/src/controllers/api/syndicateSacrificeController.ts index e6ee04b9..d67f68b5 100644 --- a/src/controllers/api/syndicateSacrificeController.ts +++ b/src/controllers/api/syndicateSacrificeController.ts @@ -3,6 +3,7 @@ import { syndicateSacrifice } from "@/src/services/inventoryService"; import { ISyndicateSacrifice } from "@/src/types/syndicateTypes"; import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; + // eslint-disable-next-line @typescript-eslint/no-misused-promises const syndicateSacrificeController: RequestHandler = async (request, response) => { const accountId = await getAccountIdForRequest(request); diff --git a/src/controllers/api/updateChallengeProgressController.ts b/src/controllers/api/updateChallengeProgressController.ts index e41880e6..bc91f9d3 100644 --- a/src/controllers/api/updateChallengeProgressController.ts +++ b/src/controllers/api/updateChallengeProgressController.ts @@ -4,6 +4,7 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { updateChallengeProgress } from "@/src/services/inventoryService"; import { IUpdateChallengeProgressRequest } from "@/src/types/requestTypes"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const updateChallengeProgressController: RequestHandler = async (req, res) => { const payload: IUpdateChallengeProgressRequest = getJSONfromString(req.body.toString()); const accountId = await getAccountIdForRequest(req); diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 25b548e6..e2f7f052 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -5,6 +5,7 @@ import { IMiscItem, TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTy import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises export const upgradesController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const payload = JSON.parse(req.body.toString()) as IUpgradesRequest; diff --git a/src/controllers/custom/updateConfigDataController.ts b/src/controllers/custom/updateConfigDataController.ts index b7521a1a..8a23cd1b 100644 --- a/src/controllers/custom/updateConfigDataController.ts +++ b/src/controllers/custom/updateConfigDataController.ts @@ -1,6 +1,7 @@ import { RequestHandler } from "express"; import { updateConfig } from "@/src/services/configService"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const updateConfigDataController: RequestHandler = async (req, res) => { await updateConfig(req.body.toString()); res.end(); diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index 03372433..3d6b9e20 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -6,6 +6,7 @@ import { config } from "@/src/services/configService"; import view from "@/static/fixed_responses/view.json"; import allScans from "@/static/fixed_responses/allScans.json"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const viewController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await Inventory.findOne({ accountOwnerId: accountId }); diff --git a/src/routes/cache.ts b/src/routes/cache.ts index adc69b2a..5c1df0d6 100644 --- a/src/routes/cache.ts +++ b/src/routes/cache.ts @@ -16,6 +16,7 @@ cacheRouter.get(/^\/origin\/[a-zA-Z0-9]+\/[0-9]+\/H\.Cache\.bin.*$/, (_req, res) res.sendFile(`static/data/H.Cache_${buildConfig.version}.bin`, { root: "./" }); }); +// eslint-disable-next-line @typescript-eslint/no-misused-promises cacheRouter.get(/\.bk2!/, async (req, res) => { try { const dir = req.path.substr(0, req.path.lastIndexOf("/")); -- 2.47.2 From c9d4712565ba53a43bffb840369775e285e08d8f Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 11:48:12 +0200 Subject: [PATCH 196/522] fix: miscellaneous inaccuracies (#330) Co-authored-by: Sainan --- src/models/inventoryModels/inventoryModel.ts | 23 +++++++++++--------- src/types/inventoryTypes/inventoryTypes.ts | 2 +- static/webui/script.js | 5 +---- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 2dc26ef8..aed24800 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -161,14 +161,17 @@ const ItemConfigSchema = new Schema( facial: colorSchema, syancol: colorSchema, Upgrades: [String], - Songs: [ - { - m: String, - b: String, - p: String, - s: String - } - ], + Songs: { + type: [ + { + m: String, + b: String, + p: String, + s: String + } + ], + default: undefined + }, Name: String, AbilityOverride: abilityOverrideSchema, PvpUpgrades: [String], @@ -888,7 +891,7 @@ const inventorySchema = new Schema( ChallengesFixVersion: Number, PlayedParkourTutorial: Boolean, SubscribedToEmailsPersonalized: Number, - LastInventorySync: Schema.Types.Mixed, + LastInventorySync: Schema.Types.Mixed, // this should be Schema.Types.ObjectId, but older inventories may break with that. ActiveLandscapeTraps: [Schema.Types.Mixed], RepVotes: [Schema.Types.Mixed], LeagueTickets: [Schema.Types.Mixed], @@ -914,7 +917,7 @@ const inventorySchema = new Schema( //Grustag three DeathSquadable: Boolean }, - { timestamps: { createdAt: "Created", updatedAt: "LastInventorySync" } } + { timestamps: { createdAt: "Created" } } ); inventorySchema.set("toJSON", { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index d538a7a2..1a201888 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -170,7 +170,7 @@ export interface IInventoryResponse { SpectreLoadouts: ISpectreLoadout[]; SentinelWeapons: IEquipmentDatabase[]; Sentinels: IEquipmentDatabase[]; - EmailItems: ITypeXPItem[]; + EmailItems: ITypeCount[]; CompletedSyndicates: string[]; FocusXP: IFocusXP; Wishlist: string[]; diff --git a/static/webui/script.js b/static/webui/script.js index bc1e8758..0090d427 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -109,10 +109,7 @@ window.itemListPromise = new Promise(resolve => { items.forEach(item => { if (item.uniqueName in data.badItems) { item.name += " (Imposter)"; - } else if ( - item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/" && - item.uniqueName.substr(0, 18) != "/Lotus/StoreItems/" - ) { + } else if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/") { const option = document.createElement("option"); option.setAttribute("data-key", item.uniqueName); option.value = item.name; -- 2.47.2 From f0bb281f550d5ba66bbd4fa5abeedbccb072643e Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 13:05:07 +0200 Subject: [PATCH 197/522] feat: implement incarnon genesis installation, challenges & skill tree (#333) --- src/controllers/api/evolveWeaponController.ts | 42 +++++++++++++++++++ .../api/setWeaponSkillTreeController.ts | 24 +++++++++++ src/controllers/api/upgradesController.ts | 8 ++-- src/models/inventoryModels/inventoryModel.ts | 14 ++++++- src/routes/api.ts | 4 ++ src/services/inventoryService.ts | 16 +++++++ .../inventoryTypes/commonInventoryTypes.ts | 7 ++++ src/types/inventoryTypes/inventoryTypes.ts | 8 +++- src/types/requestTypes.ts | 2 + 9 files changed, 118 insertions(+), 7 deletions(-) create mode 100644 src/controllers/api/evolveWeaponController.ts create mode 100644 src/controllers/api/setWeaponSkillTreeController.ts diff --git a/src/controllers/api/evolveWeaponController.ts b/src/controllers/api/evolveWeaponController.ts new file mode 100644 index 00000000..fea82844 --- /dev/null +++ b/src/controllers/api/evolveWeaponController.ts @@ -0,0 +1,42 @@ +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory } from "@/src/services/inventoryService"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { WeaponTypeInternal } from "@/src/services/itemDataService"; +import { EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const evolveWeaponController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + const payload = getJSONfromString(req.body.toString()) as IEvolveWeaponRequest; + console.assert(payload.Action == "EWA_INSTALL"); + + // TODO: We should remove the Genesis item & its resources, but currently we don't know these "recipes". + + const item = inventory[payload.Category].find(item => item._id.toString() == (req.query.ItemId as string))!; + item.Features ??= 0; + item.Features |= EquipmentFeatures.INCARNON_GENESIS; + + item.SkillTree = "0"; + + inventory.EvolutionProgress ??= []; + if (!inventory.EvolutionProgress.find(entry => entry.ItemType == payload.EvoType)) { + inventory.EvolutionProgress.push({ + Progress: 0, + Rank: 1, + ItemType: payload.EvoType + }); + } + + await inventory.save(); + res.end(); +}; + +interface IEvolveWeaponRequest { + Action: "EWA_INSTALL"; + Category: WeaponTypeInternal; + Recipe: string; // e.g. "/Lotus/Types/Items/MiscItems/IncarnonAdapters/UnlockerBlueprints/DespairIncarnonBlueprint" + UninstallRecipe: ""; + EvoType: string; // e.g. "/Lotus/Weapons/Tenno/ThrowingWeapons/StalkerKunai" +} diff --git a/src/controllers/api/setWeaponSkillTreeController.ts b/src/controllers/api/setWeaponSkillTreeController.ts new file mode 100644 index 00000000..b3b0be6f --- /dev/null +++ b/src/controllers/api/setWeaponSkillTreeController.ts @@ -0,0 +1,24 @@ +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory } from "@/src/services/inventoryService"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { WeaponTypeInternal } from "@/src/services/itemDataService"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const setWeaponSkillTreeController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + const payload = getJSONfromString(req.body.toString()) as ISetWeaponSkillTreeRequest; + + const item = inventory[req.query.Category as WeaponTypeInternal].find( + item => item._id.toString() == (req.query.ItemId as string) + )!; + item.SkillTree = payload.SkillTree; + + await inventory.save(); + res.end(); +}; + +interface ISetWeaponSkillTreeRequest { + SkillTree: string; +} diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index e2f7f052..9d89da70 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; -import { FocusSchool, IEquipmentDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { FocusSchool, IEquipmentDatabase, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IMiscItem, TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; @@ -32,7 +32,7 @@ export const upgradesController: RequestHandler = async (req, res) => { for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; - item.Features |= 1; + item.Features |= EquipmentFeatures.DOUBLE_CAPACITY; break; } } @@ -42,7 +42,7 @@ export const upgradesController: RequestHandler = async (req, res) => { for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; - item.Features |= 2; + item.Features |= EquipmentFeatures.UTILITY_SLOT; break; } } @@ -53,7 +53,7 @@ export const upgradesController: RequestHandler = async (req, res) => { for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; - item.Features |= 32; + item.Features |= EquipmentFeatures.ARCANE_SLOT; break; } } diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index aed24800..4ef0d856 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -35,7 +35,8 @@ import { ITauntHistory, IPeriodicMissionCompletionDatabase, IPeriodicMissionCompletionResponse, - ILoreFragmentScan + ILoreFragmentScan, + IEvolutionProgress } from "../../types/inventoryTypes/inventoryTypes"; import { IOid } from "../../types/commonTypes"; import { @@ -562,6 +563,15 @@ const loreFragmentScansSchema = new Schema( { _id: false } ); +const evolutionProgressSchema = new Schema( + { + Progress: Number, + Rank: Number, + ItemType: String + }, + { _id: false } +); + const inventorySchema = new Schema( { accountOwnerId: Schema.Types.ObjectId, @@ -881,7 +891,7 @@ const inventorySchema = new Schema( //Progress+Rank+ItemType(ZarimanPumpShotgun) //https://warframe.fandom.com/wiki/Incarnon - EvolutionProgress: [Schema.Types.Mixed], + EvolutionProgress: { type: [evolutionProgressSchema], default: undefined }, //Unknown and system DuviriInfo: DuviriInfoSchema, diff --git a/src/routes/api.ts b/src/routes/api.ts index 15192fe8..bf7440de 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -7,6 +7,7 @@ import { createGuildController } from "@/src/controllers/api/createGuildControll import { deleteSessionController } from "@/src/controllers/api/deleteSessionController"; import { dojoController } from "@/src/controllers/api/dojoController"; import { dronesController } from "@/src/controllers/api/dronesController"; +import { evolveWeaponController } from "@/src/controllers/api/evolveWeaponController"; import { findSessionsController } from "@/src/controllers/api/findSessionsController"; import { focusController } from "@/src/controllers/api/focusController"; import { genericUpdateController } from "@/src/controllers/api/genericUpdateController"; @@ -47,6 +48,7 @@ import { setActiveShipController } from "@/src/controllers/api/setActiveShipCont import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController"; +import { setWeaponSkillTreeController } from "../controllers/api/setWeaponSkillTreeController"; import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController"; import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController"; import { startRecipeController } from "@/src/controllers/api/startRecipeController"; @@ -97,6 +99,7 @@ apiRouter.post("/addFriendImage.php", addFriendImageController); apiRouter.post("/artifacts.php", artifactsController); apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController); apiRouter.post("/createGuild.php", createGuildController); +apiRouter.post("/evolveWeapon.php", evolveWeaponController); apiRouter.post("/findSessions.php", findSessionsController); apiRouter.post("/focus.php", focusController); apiRouter.post("/genericUpdate.php", genericUpdateController); @@ -115,6 +118,7 @@ apiRouter.post("/rerollRandomMod.php", rerollRandomModController); apiRouter.post("/saveLoadout.php", saveLoadoutController); apiRouter.post("/sell.php", sellController); apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController); +apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController); apiRouter.post("/shipDecorations.php", shipDecorationsController); apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); apiRouter.post("/startRecipe.php", startRecipeController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 36bda69e..b29a5241 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -629,6 +629,22 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques // Gear XP gearKeys.forEach(key => addGearExpByCategory(inventory, data[key], key)); + // Incarnon Challenges + if (data.EvolutionProgress) { + for (const evoProgress of data.EvolutionProgress) { + const entry = inventory.EvolutionProgress + ? inventory.EvolutionProgress.find(entry => entry.ItemType == evoProgress.ItemType) + : undefined; + if (entry) { + entry.Progress = evoProgress.Progress; + entry.Rank = evoProgress.Rank; + } else { + inventory.EvolutionProgress ??= []; + inventory.EvolutionProgress.push(evoProgress); + } + } + } + // other addMods(inventory, RawUpgrades); addMiscItems(inventory, MiscItems); diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index aadc1b62..2c434311 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -82,6 +82,13 @@ export interface IEquipmentClient extends Omit { ItemId: IOid; } +export enum EquipmentFeatures { + DOUBLE_CAPACITY = 1, + UTILITY_SLOT = 2, + ARCANE_SLOT = 32, + INCARNON_GENESIS = 512 +} + export interface IEquipmentDatabase { ItemType: string; ItemName?: string; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 1a201888..1555799b 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -246,7 +246,7 @@ export interface IInventoryResponse { LastInventorySync: IOid; NextRefill: IMongoDate; ActiveLandscapeTraps: any[]; - EvolutionProgress: any[]; + EvolutionProgress?: IEvolutionProgress[]; RepVotes: any[]; LeagueTickets: any[]; Quests: any[]; @@ -867,3 +867,9 @@ export interface IWebFlags { Anniversary2021: boolean; HitDownloadBtn: IMongoDate; } + +export interface IEvolutionProgress { + Progress: number; + Rank: number; + ItemType: string; +} diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 6dc35b76..ce7ea1e0 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -5,6 +5,7 @@ import { IChallengeProgress, IConsumable, ICrewShipSalvagedWeaponSkin, + IEvolutionProgress, IMiscItem, IMission, IRawUpgrade, @@ -53,6 +54,7 @@ export interface IMissionInventoryUpdateRequest { RewardInfo?: IMissionInventoryUpdateRequestRewardInfo; FusionPoints?: number; Missions?: IMission; + EvolutionProgress?: IEvolutionProgress[]; } export interface IMissionInventoryUpdateRequestRewardInfo { -- 2.47.2 From 7c47c9f1e42cff84156faa92c1aab86e35a7c2e8 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 13:29:48 +0200 Subject: [PATCH 198/522] fix: not being able to talk to Nakak in Cetus (#336) --- .../api/getVendorInfoController.ts | 7 + src/routes/api.ts | 2 + static/fixed_responses/getVendorInfo.json | 301 ++++++++++++++++++ 3 files changed, 310 insertions(+) create mode 100644 src/controllers/api/getVendorInfoController.ts create mode 100644 static/fixed_responses/getVendorInfo.json diff --git a/src/controllers/api/getVendorInfoController.ts b/src/controllers/api/getVendorInfoController.ts new file mode 100644 index 00000000..cd442318 --- /dev/null +++ b/src/controllers/api/getVendorInfoController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; +import getVendorInfoResponse from "@/static/fixed_responses/getVendorInfo.json"; + +export const getVendorInfoController: RequestHandler = (req, res) => { + console.assert(req.query.vendor == "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest"); + res.json(getVendorInfoResponse); +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index bf7440de..8bdddd78 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -21,6 +21,7 @@ import { getGuildLogController } from "../controllers/api/getGuildLogController" import { getIgnoredUsersController } from "@/src/controllers/api/getIgnoredUsersController"; import { getNewRewardSeedController } from "@/src/controllers/api/getNewRewardSeedController"; import { getShipController } from "@/src/controllers/api/getShipController"; +import { getVendorInfoController } from "@/src/controllers/api/getVendorInfoController"; import { guildTechController } from "../controllers/api/guildTechController"; import { hostSessionController } from "@/src/controllers/api/hostSessionController"; import { hubController } from "@/src/controllers/api/hubController"; @@ -77,6 +78,7 @@ apiRouter.get("/getGuildLog.php", getGuildLogController); apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController); apiRouter.get("/getNewRewardSeed.php", getNewRewardSeedController); apiRouter.get("/getShip.php", getShipController); +apiRouter.get("/getVendorInfo.php", getVendorInfoController); apiRouter.get("/hub", hubController); apiRouter.get("/hubInstances", hubInstancesController); apiRouter.get("/inbox.php", inboxController); diff --git a/static/fixed_responses/getVendorInfo.json b/static/fixed_responses/getVendorInfo.json new file mode 100644 index 00000000..85aa7eac --- /dev/null +++ b/static/fixed_responses/getVendorInfo.json @@ -0,0 +1,301 @@ +{ + "VendorInfo": { + "_id": { + "$oid": "598a090d9a4a313746fd1f24" + }, + "TypeName": "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest", + "ItemManifest": [ + { + "StoreItem": "/Lotus/StoreItems/Upgrades/Skins/Ostron/RevenantMask", + "ItemPrices": [ + { + "ItemCount": 1, + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/CetusWispItem", + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "63ed01ef4c37f93d0b797674" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyThumper", + "ItemPrices": [ + { + "ItemCount": 2, + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/CetusWispItem", + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/BothUncommonFishBPartItem", + "ItemCount": 10, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/NistlebrushItem", + "ItemCount": 10, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Gems/Eidolon/CommonOreAAlloyAItem", + "ItemCount": 32, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "63ed01ef4c37f93d0b797675" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyThumperMedium", + "ItemPrices": [ + { + "ItemCount": 4, + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/CetusWispItem", + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Gems/Eidolon/CommonGemBCutAItem", + "ItemCount": 24, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/BothUncommonFishAPartItem", + "ItemCount": 18, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/BothUncommonFishBPartItem", + "ItemCount": 27, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_1", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "63ed01ef4c37f93d0b797676" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/Plushies/PlushyThumperLarge", + "ItemPrices": [ + { + "ItemCount": 6, + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/CetusWispItem", + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Gems/Eidolon/CommonGemACutAItem", + "ItemCount": 35, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/BothCommonFishAPartItem", + "ItemCount": 95, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/NistlebrushItem", + "ItemCount": 60, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "63ed01ef4c37f93d0b797677" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Types/Recipes/SynthicatorRecipes/FlareBlueBlueprint", + "ItemPrices": [ + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/BothUncommonFishBPartItem", + "ItemCount": 10, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/DayCommonFishCPartItem", + "ItemCount": 10, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "6651291214e90115b91b50a1" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Types/Recipes/SynthicatorRecipes/FlareRedBlueprint", + "ItemPrices": [ + { + "ItemType": "/Lotus/Types/Items/Gems/Eidolon/CommonOreAAlloyAItem", + "ItemCount": 37, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/BothUncommonFishAPartItem", + "ItemCount": 7, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "6651291214e90115b91b50a2" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Upgrades/Skins/Ostron/VoltMask", + "ItemPrices": [ + { + "ItemType": "/Lotus/Types/Items/Gems/Eidolon/CommonOreBAlloyBItem", + "ItemCount": 34, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/GrokdrulItem", + "ItemCount": 17, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "6651291214e90115b91b50a3" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Upgrades/Skins/Ostron/MagMask", + "ItemPrices": [ + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/DayCommonFishBPartItem", + "ItemCount": 16, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/ForestRodentPartItem", + "ItemCount": 5, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "6651291214e90115b91b50a4" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Upgrades/Skins/Ostron/ExcaliburMask", + "ItemPrices": [ + { + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/BirdOfPreyPartItem", + "ItemCount": 5, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Gameplay/Eidolon/Resources/GrokdrulItem", + "ItemCount": 20, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_0", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "6651291214e90115b91b50a5" + } + }, + { + "StoreItem": "/Lotus/StoreItems/Upgrades/Skins/Ostron/GrineerMask", + "ItemPrices": [ + { + "ItemType": "/Lotus/Types/Items/Fish/Eidolon/FishParts/DayCommonFishBPartItem", + "ItemCount": 20, + "ProductCategory": "MiscItems" + }, + { + "ItemType": "/Lotus/Types/Items/Gems/Eidolon/CommonOreAAlloyAItem", + "ItemCount": 31, + "ProductCategory": "MiscItems" + } + ], + "Bin": "BIN_1", + "QuantityMultiplier": 1, + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + }, + "AllowMultipurchase": true, + "Id": { + "$oid": "6651291214e90115b91b50a6" + } + } + ], + "PropertyTextHash": "6AACA376DA34B35B5C16F1B40DBC017D", + "Expiry": { + "$date": { + "$numberLong": "9999999000000" + } + } + } +} -- 2.47.2 From 5597db67615e32d2852d70278d42fa34322f4178 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 16:35:24 +0200 Subject: [PATCH 199/522] fix: not being able to buy incarnon bundles (#337) --- src/services/inventoryService.ts | 22 +++++++++-- src/services/purchaseService.ts | 66 +++++++++++++++++++++++++------- src/types/purchaseTypes.ts | 20 +--------- 3 files changed, 72 insertions(+), 36 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index b29a5241..efd291cc 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2,7 +2,7 @@ import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import { config } from "@/src/services/configService"; import { Types } from "mongoose"; -import { SlotNames } from "@/src/types/purchaseTypes"; +import { SlotNames, IInventoryChanges } from "@/src/types/purchaseTypes"; import { IChallengeProgress, IConsumable, @@ -26,7 +26,7 @@ import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal, getWeaponType, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; import { IEquipmentClient } from "../types/inventoryTypes/commonInventoryTypes"; -import { ExportRecipes } from "warframe-public-export-plus"; +import { ExportRecipes, ExportResources } from "warframe-public-export-plus"; export const createInventory = async ( accountOwnerId: Types.ObjectId, @@ -70,7 +70,7 @@ export const addItem = async ( accountId: string, typeName: string, quantity: number = 1 -): Promise<{ InventoryChanges: object }> => { +): Promise<{ InventoryChanges: IInventoryChanges }> => { // Strict typing if (typeName in ExportRecipes) { const inventory = await getInventory(accountId); @@ -88,6 +88,22 @@ export const addItem = async ( } }; } + if (typeName in ExportResources) { + const inventory = await getInventory(accountId); + const miscItemChanges = [ + { + ItemType: typeName, + ItemCount: quantity + } satisfies IMiscItem + ]; + addMiscItems(inventory, miscItemChanges); + await inventory.save(); + return { + InventoryChanges: { + MiscItems: miscItemChanges + } + }; + } // Path-based duck typing switch (typeName.substr(1).split("/")[1]) { diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 0f96055c..9fb4a675 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,7 +1,7 @@ import { parseSlotPurchaseName } from "@/src/helpers/purchaseHelpers"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addItem, addBooster, updateCurrency, updateSlots } from "@/src/services/inventoryService"; -import { IPurchaseRequest, SlotPurchase } from "@/src/types/purchaseTypes"; +import { IPurchaseRequest, SlotPurchase, IInventoryChanges, IBinChanges } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; import { ExportBundles, TRarity } from "warframe-public-export-plus"; @@ -46,12 +46,37 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI return purchaseResponse; }; +const addInventoryChanges = (InventoryChanges: IInventoryChanges, delta: IInventoryChanges): void => { + for (const key in delta) { + if (!(key in InventoryChanges)) { + InventoryChanges[key] = delta[key]; + } else if (Array.isArray(delta[key])) { + const left = InventoryChanges[key] as object[]; + const right = delta[key] as object[]; + for (const item of right) { + left.push(item); + } + } else { + console.assert(key.substring(-3) == "Bin"); + const left = InventoryChanges[key] as IBinChanges; + const right = delta[key] as IBinChanges; + left.count += right.count; + left.platinum += right.platinum; + left.Slots += right.Slots; + if (right.Extra) { + left.Extra ??= 0; + left.Extra += right.Extra; + } + } + } +}; + const handleStoreItemAcquisition = async ( storeItemName: string, accountId: string, quantity: number, durability: TRarity -): Promise<{ InventoryChanges: object }> => { +): Promise<{ InventoryChanges: IInventoryChanges }> => { let purchaseResponse = { InventoryChanges: {} }; @@ -60,15 +85,17 @@ const handleStoreItemAcquisition = async ( const bundle = ExportBundles[storeItemName]; logger.debug("acquiring bundle", bundle); for (const component of bundle.components) { - purchaseResponse = { - ...purchaseResponse, - ...(await handleStoreItemAcquisition( - component.typeName, - accountId, - component.purchaseQuantity, - component.durability - )) - }; + addInventoryChanges( + purchaseResponse.InventoryChanges, + ( + await handleStoreItemAcquisition( + component.typeName, + accountId, + component.purchaseQuantity, + component.durability + ) + ).InventoryChanges + ); } } else { const storeCategory = getStoreItemCategory(storeItemName); @@ -106,7 +133,10 @@ export const slotPurchaseNameToSlotName: SlotPurchase = { // // new slot above base = extra + 1 and slots +1 // // new frame = slots -1 // // number of frames = extra - slots + 2 -const handleSlotPurchase = async (slotPurchaseNameFull: string, accountId: string) => { +const handleSlotPurchase = async ( + slotPurchaseNameFull: string, + accountId: string +): Promise<{ InventoryChanges: IInventoryChanges }> => { logger.debug(`slot name ${slotPurchaseNameFull}`); const slotPurchaseName = parseSlotPurchaseName( slotPurchaseNameFull.substring(slotPurchaseNameFull.lastIndexOf("/") + 1) @@ -133,7 +163,11 @@ const handleSlotPurchase = async (slotPurchaseNameFull: string, accountId: strin }; //TODO: change to getInventory, apply changes then save at the end -const handleTypesPurchase = async (typesName: string, accountId: string, quantity: number) => { +const handleTypesPurchase = async ( + typesName: string, + accountId: string, + quantity: number +): Promise<{ InventoryChanges: IInventoryChanges }> => { const typeCategory = getStoreItemTypesCategory(typesName); logger.debug(`type category ${typeCategory}`); switch (typeCategory) { @@ -158,7 +192,11 @@ const boosterDuration: Record = { LEGENDARY: 90 * 86400 }; -const handleBoostersPurchase = async (boosterStoreName: string, accountId: string, durability: TRarity) => { +const handleBoostersPurchase = async ( + boosterStoreName: string, + accountId: string, + durability: TRarity +): Promise<{ InventoryChanges: IInventoryChanges }> => { const ItemType = boosterStoreName.replace("StoreItem", ""); if (!boosterCollection.find(x => x == ItemType)) { logger.error(`unknown booster type: ${ItemType}`); diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index db143470..0d04114e 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -1,6 +1,3 @@ -import { IFlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; -import { IEquipmentClient } from "./inventoryTypes/commonInventoryTypes"; - export interface IPurchaseRequest { PurchaseParams: IPurchaseParams; buildLabel: string; @@ -17,22 +14,7 @@ export interface IPurchaseParams { ExpectedPrice: number; } -export interface IPurchaseResponse { - InventoryChanges: { - SuitBin?: IBinChanges; - WeaponBin?: IBinChanges; - MechBin?: IBinChanges; - MechSuits?: IEquipmentClient[]; - Suits?: IEquipmentClient[]; - LongGuns?: IEquipmentClient[]; - Pistols?: IEquipmentClient[]; - Melee?: IEquipmentClient[]; - PremiumCredits?: number; - PremiumCreditsFree?: number; - RegularCredits?: number; - FlavourItems?: IFlavourItem[]; - }; -} +export type IInventoryChanges = Record; export type IBinChanges = { count: number; -- 2.47.2 From c415fdd9ffe7d6ed046775aa80f1592fd5258b0c Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 21:22:01 +0200 Subject: [PATCH 200/522] feat(webui): acquiring gear items via "Add Items" (#340) --- .../custom/getItemListsController.ts | 18 +++++++++++++++--- static/webui/script.js | 11 ++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 574ec8d7..1f9417bf 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,7 +1,13 @@ import { RequestHandler } from "express"; import { MinItem, items, getEnglishString } from "@/src/services/itemDataService"; import badItems from "@/static/json/exclude-mods.json"; -import { ExportArcanes, ExportResources, ExportWarframes, ExportWeapons } from "warframe-public-export-plus"; +import { + ExportArcanes, + ExportGear, + ExportResources, + ExportWarframes, + ExportWeapons +} from "warframe-public-export-plus"; interface ListedItem { uniqueName: string; @@ -31,7 +37,7 @@ const getItemListsController: RequestHandler = (_req, res) => { }); } else if (!item.excludeFromCodex) { miscitems.push({ - uniqueName, + uniqueName: "MiscItems:" + uniqueName, name: getEnglishString(item.name) }); } @@ -39,7 +45,13 @@ const getItemListsController: RequestHandler = (_req, res) => { } for (const [uniqueName, item] of Object.entries(ExportResources)) { miscitems.push({ - uniqueName, + uniqueName: "MiscItems:" + uniqueName, + name: getEnglishString(item.name) + }); + } + for (const [uniqueName, item] of Object.entries(ExportGear)) { + miscitems.push({ + uniqueName: "Consumables:" + uniqueName, name: getEnglishString(item.name) }); } diff --git a/static/webui/script.js b/static/webui/script.js index 0090d427..f7d79962 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -512,17 +512,18 @@ function disposeOfItems(category, type, count) { } function doAcquireMiscItems() { - const uniqueName = getKey(document.getElementById("miscitem-type")); - if (!uniqueName) { + const data = getKey(document.getElementById("miscitem-type")); + if (!data) { $("#miscitem-type").addClass("is-invalid").focus(); return; } + const [category, uniqueName] = data.split(":"); revalidateAuthz(() => { $.post({ url: "/api/missionInventoryUpdate.php?" + window.authz, contentType: "text/plain", data: JSON.stringify({ - MiscItems: [ + [category]: [ { ItemType: uniqueName, ItemCount: parseInt($("#miscitem-count").val()) @@ -535,8 +536,8 @@ function doAcquireMiscItems() { }); } -$("#miscitem-name").on("input", () => { - $("#miscitem-name").removeClass("is-invalid"); +$("#miscitem-type").on("input", () => { + $("#miscitem-type").removeClass("is-invalid"); }); function doAcquireRiven() { -- 2.47.2 From 8ee6f1a04b2d54c17fec7262f1e74a1a6ea9c647 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 20 Jun 2024 22:27:32 +0200 Subject: [PATCH 201/522] feat: implement k-drive crafting (#339) --- src/controllers/api/modularWeaponCraftingController.ts | 9 +++++---- src/models/inventoryModels/inventoryModel.ts | 1 + src/services/inventoryService.ts | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/controllers/api/modularWeaponCraftingController.ts b/src/controllers/api/modularWeaponCraftingController.ts index 09244764..91768e3a 100644 --- a/src/controllers/api/modularWeaponCraftingController.ts +++ b/src/controllers/api/modularWeaponCraftingController.ts @@ -4,13 +4,14 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { WeaponTypeInternal } from "@/src/services/itemDataService"; import { getInventory, updateCurrency, addWeapon, addMiscItems } from "@/src/services/inventoryService"; -const modularWeaponTypes: Record = { +const modularWeaponTypes: Record = { "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": "LongGuns", "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": "Pistols", "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": "Pistols", "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": "Pistols", "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": "Melee", - "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": "OperatorAmps" + "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": "OperatorAmps", + "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": "Hoverboards" }; interface IModularCraftRequest { @@ -30,8 +31,8 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res) // Give weapon const weapon = await addWeapon(category, data.WeaponType, accountId, data.Parts); - // Remove 4000 credits - const currencyChanges = await updateCurrency(4000, false, accountId); + // Remove credits + const currencyChanges = await updateCurrency(category == "Hoverboards" ? 5000 : 4000, false, accountId); // Remove parts const miscItemChanges = []; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 4ef0d856..39a45024 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -975,6 +975,7 @@ type InventoryDocumentProps = { SpaceGuns: Types.DocumentArray; SpaceMelee: Types.DocumentArray; SentinelWeapons: Types.DocumentArray; + Hoverboards: Types.DocumentArray; }; // eslint-disable-next-line @typescript-eslint/ban-types diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index efd291cc..12e1fbca 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -425,7 +425,7 @@ export const syndicateSacrifice = async ( }; export const addWeapon = async ( - weaponType: WeaponTypeInternal, + weaponType: WeaponTypeInternal | "Hoverboards", weaponName: string, accountId: string, modularParts: string[] | undefined = undefined -- 2.47.2 From 56f9be9725d09c93aa810182fcfe9556bc7750ab Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 21 Jun 2024 18:24:21 +0200 Subject: [PATCH 202/522] fix: view "Today's Special" (#342) --- static/fixed_responses/modularWeaponSale.json | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/static/fixed_responses/modularWeaponSale.json b/static/fixed_responses/modularWeaponSale.json index d6033439..6d5bd172 100644 --- a/static/fixed_responses/modularWeaponSale.json +++ b/static/fixed_responses/modularWeaponSale.json @@ -2,66 +2,82 @@ "SaleInfos": [ { "Name": "Ostron", - "Expiry": { "$date": { "$numberLong": "1683586800000" } }, - "Revision": 3045, + "Expiry": { + "$date": { + "$numberLong": "9999999900000" + } + }, + "Revision": 3453, "Weapons": [ { "ItemType": "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon", - "PremiumPrice": 171, + "PremiumPrice": 162, "ModularParts": [ "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Handle/HandleFive", - "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Tip/TipSix", - "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Balance/BalanceDamageICritII" + "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Tip/TipFour", + "/Lotus/Weapons/Ostron/Melee/ModularMelee01/Balance/BalanceSpeedICritII" ] } ] }, { "Name": "SolarisUnitedHoverboard", - "Expiry": { "$date": { "$numberLong": "1683586800000" } }, - "Revision": 1650, + "Expiry": { + "$date": { + "$numberLong": "9999999900000" + } + }, + "Revision": 2058, "Weapons": [ { "ItemType": "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit", "PremiumPrice": 51, "ModularParts": [ - "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCDeck", - "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCEngine", - "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusB/HoverboardCorpusBFront", - "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusC/HoverboardCorpusCJet" + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardSolarisA/HoverboardSolarisADeck", + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusA/HoverboardCorpusAEngine", + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardSolarisA/HoverboardSolarisAFront", + "/Lotus/Types/Vehicles/Hoverboard/HoverboardParts/PartComponents/HoverboardCorpusB/HoverboardCorpusBJet" ] } ] }, { "Name": "SolarisUnitedMoaPet", - "Expiry": { "$date": { "$numberLong": "1683586800000" } }, - "Revision": 1650, + "Expiry": { + "$date": { + "$numberLong": "9999999900000" + } + }, + "Revision": 2058, "Weapons": [ { "ItemType": "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit", - "PremiumPrice": 175, + "PremiumPrice": 180, "ModularParts": [ - "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetLegC", - "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetHeadOloro", - "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetEngineKrisys", - "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetPayloadThermocor" + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetLegB", + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetHeadPara", + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetEngineArcotek", + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetParts/MoaPetPayloadMunitron" ] } ] }, { "Name": "SolarisUnitedKitGun", - "Expiry": { "$date": { "$numberLong": "1683586800000" } }, - "Revision": 1650, + "Expiry": { + "$date": { + "$numberLong": "9999999900000" + } + }, + "Revision": 2058, "Weapons": [ { - "ItemType": "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam", - "PremiumPrice": 157, + "ItemType": "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary", + "PremiumPrice": 184, "ModularParts": [ - "/Lotus/Weapons/SolarisUnited/Primary/SUModularPrimarySet1/Handles/SUModularPrimaryHandleAPart", - "/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Barrel/SUModularSecondaryBarrelDPart", - "/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Clip/SUModularCritIReloadIIClipPart" + "/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Handle/SUModularSecondaryHandleCPart", + "/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Barrel/SUModularSecondaryBarrelBPart", + "/Lotus/Weapons/SolarisUnited/Secondary/SUModularSecondarySet1/Clip/SUModularStatIReloadIIClipPart" ] } ] -- 2.47.2 From 079d67807af38634cfc816cb39f17f7c004a4d4c Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 02:39:29 +0200 Subject: [PATCH 203/522] chore: cleanup missionInventoryUpdateService (#349) Co-authored-by: Sainan --- package-lock.json | 8 +- package.json | 2 +- src/services/itemDataService.ts | 20 +- src/services/missionInventoryUpdateService.ts | 199 +- src/types/missionTypes.ts | 6 - src/types/requestTypes.ts | 2 +- static/json/missions-drop-table.json | 4729 ----------------- 7 files changed, 76 insertions(+), 4890 deletions(-) delete mode 100644 static/json/missions-drop-table.json diff --git a/package-lock.json b/package-lock.json index 0725994e..a2385969 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.5", + "warframe-public-export-plus": "^0.3.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3678,9 +3678,9 @@ } }, "node_modules/warframe-public-export-plus": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.2.5.tgz", - "integrity": "sha512-IsS2Z14CeTpGSpfeUxqTi8wAQjQ6qjh2kV8RC9St5hcDmII3NpwEFXmStEqz7r+JPfea72D3cZMMl+4QLHqvXw==" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.0.tgz", + "integrity": "sha512-BYkTkCq9jsA8NzSiWsTW48ezK7kI/op2NrLf+j4j3bJi2cNjoSLf/D4bMEui6yCADjcoV89ramRTFbPjn6UpLA==" }, "node_modules/warframe-riven-info": { "version": "0.1.0", diff --git a/package.json b/package.json index 0acdfc73..3132b1af 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1262.74", - "warframe-public-export-plus": "^0.2.5", + "warframe-public-export-plus": "^0.3.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 890cde2a..7f7a38d0 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -1,7 +1,6 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; -import Items, { Category, MinimalItem, Warframe, Weapon } from "warframe-items"; -import badItems from "@/static/json/exclude-mods.json"; +import Items, { MinimalItem, Warframe, Weapon } from "warframe-items"; import { dict_en, ExportRecipes, @@ -53,23 +52,6 @@ export const getWeaponType = (weaponName: string): WeaponTypeInternal => { return weaponType; }; -const getNamesObj = (category: Category) => - new Items({ category: [category] }).reduce<{ [index: string]: string }>((acc, item) => { - if (!(item.uniqueName! in badItems)) { - acc[item.name!.replace("'S", "'s")] = item.uniqueName!; - } - return acc; - }, {}); - -export const modNames = getNamesObj("Mods"); -export const resourceNames = getNamesObj("Resources"); -export const miscNames = getNamesObj("Misc"); -export const relicNames = getNamesObj("Relics"); -export const skinNames = getNamesObj("Skins"); -export const arcaneNames = getNamesObj("Arcanes"); -export const gearNames = getNamesObj("Gear"); -//logger.debug(`gear names`, { gearNames }); - export const craftNames = Object.fromEntries( ( new Items({ diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index aadcd4ae..f7300837 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -1,14 +1,14 @@ -import { IMissionRewardResponse, IReward, IInventoryFieldType, inventoryFields } from "@/src/types/missionTypes"; +import { IMissionRewardResponse, IInventoryFieldType, inventoryFields } from "@/src/types/missionTypes"; -import missionsDropTable from "@/static/json/missions-drop-table.json"; import { - modNames, - relicNames, - miscNames, - resourceNames, - gearNames, - blueprintNames -} from "@/src/services/itemDataService"; + ExportRegions, + ExportRewards, + ExportUpgrades, + ExportGear, + ExportRecipes, + ExportRelics, + IReward +} from "warframe-public-export-plus"; import { IMissionInventoryUpdateRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; @@ -23,49 +23,25 @@ const getRewards = ({ return { InventoryChanges: {}, MissionRewards: [] }; } - const rewards = (missionsDropTable as { [key: string]: IReward[] })[RewardInfo.node]; - if (!rewards) { + const rewardManifests = ExportRegions[RewardInfo.node]?.rewardManifests ?? []; + if (rewardManifests.length == 0) { return { InventoryChanges: {}, MissionRewards: [] }; } const rotationCount = RewardInfo.rewardQualifications?.length || 0; const rotations = getRotations(rotationCount); const drops: IReward[] = []; - for (const rotation of rotations) { - const rotationRewards = rewards.filter(reward => reward.rotation === rotation); - - // Separate guaranteed and chance drops - const guaranteedDrops: IReward[] = []; - const chanceDrops: IReward[] = []; - for (const reward of rotationRewards) { - if (reward.chance === 100) { - guaranteedDrops.push(reward); - } else { - chanceDrops.push(reward); + rewardManifests + .map(name => ExportRewards[name]) + .forEach(table => { + for (const rotation of rotations) { + const rotationRewards = table[rotation]; + const drop = getRandomRewardByChance(rotationRewards); + if (drop) { + drops.push(drop); + } } - } - - const randomDrop = getRandomRewardByChance(chanceDrops); - if (randomDrop) { - guaranteedDrops.push(randomDrop); - } - - drops.push(...guaranteedDrops); - } - - // const testDrops = [ - // { chance: 7.69, name: "Lith W3 Relic", rotation: "B" }, - // { chance: 7.69, name: "Lith W3 Relic", rotation: "B" }, - // { chance: 10.82, name: "2X Orokin Cell", rotation: "C" }, - // { chance: 10.82, name: "Arrow Mutation", rotation: "C" }, - // { chance: 10.82, name: "200 Endo", rotation: "C" }, - // { chance: 10.82, name: "200 Endo", rotation: "C" }, - // { chance: 10.82, name: "2,000,000 Credits Cache", rotation: "C" }, - // { chance: 7.69, name: "Health Restore (Large)", rotation: "C" }, - // { chance: 7.69, name: "Vapor Specter Blueprint", rotation: "C" } - // ]; - // logger.debug("Mission rewards:", testDrops); - // return formatRewardsToInventoryType(testDrops); + }); logger.debug("Mission rewards:", drops); return formatRewardsToInventoryType(drops); @@ -100,10 +76,10 @@ const combineRewardAndLootInventory = ( }; }; -const getRotations = (rotationCount: number): (string | undefined)[] => { - if (rotationCount === 0) return [undefined]; +const getRotations = (rotationCount: number): number[] => { + if (rotationCount === 0) return [0]; - const rotationPattern = ["A", "A", "B", "C"]; + const rotationPattern = [0, 0, 1, 2]; // A, A, B, C const rotatedValues = []; for (let i = 0; i < rotationCount; i++) { @@ -113,15 +89,15 @@ const getRotations = (rotationCount: number): (string | undefined)[] => { return rotatedValues; }; -const getRandomRewardByChance = (data: IReward[] | undefined): IReward | undefined => { - if (!data || data.length == 0) return; +const getRandomRewardByChance = (data: IReward[]): IReward | undefined => { + if (data.length == 0) return; - const totalChance = data.reduce((sum, item) => sum + item.chance, 0); + const totalChance = data.reduce((sum, item) => sum + item.probability!, 0); const randomValue = Math.random() * totalChance; let cumulativeChance = 0; for (const item of data) { - cumulativeChance += item.chance; + cumulativeChance += item.probability!; if (randomValue <= cumulativeChance) { return item; } @@ -130,68 +106,62 @@ const getRandomRewardByChance = (data: IReward[] | undefined): IReward | undefin return; }; +const creditBundles: Record = { + "/Lotus/StoreItems/Types/PickUps/Credits/1500Credits": 1500, + "/Lotus/StoreItems/Types/PickUps/Credits/2000Credits": 2000, + "/Lotus/StoreItems/Types/PickUps/Credits/2500Credits": 2500, + "/Lotus/StoreItems/Types/PickUps/Credits/3000Credits": 3000, + "/Lotus/StoreItems/Types/PickUps/Credits/4000Credits": 4000, + "/Lotus/StoreItems/Types/PickUps/Credits/5000Credits": 5000, + "/Lotus/StoreItems/Types/PickUps/Credits/7500Credits": 7500, + "/Lotus/StoreItems/Types/PickUps/Credits/10000Credits": 10000, + "/Lotus/StoreItems/Types/StoreItems/CreditBundles/Zariman/TableACreditsCommon": 15000, + "/Lotus/StoreItems/Types/StoreItems/CreditBundles/Zariman/TableACreditsUncommon": 30000, + "/Lotus/StoreItems/Types/PickUps/Credits/CorpusArenaCreditRewards/CorpusArenaRewardOneHard": 105000, + "/Lotus/StoreItems/Types/PickUps/Credits/CorpusArenaCreditRewards/CorpusArenaRewardTwoHard": 175000, + "/Lotus/StoreItems/Types/PickUps/Credits/CorpusArenaCreditRewards/CorpusArenaRewardThreeHard": 25000 +}; + +const fusionBundles: Record = { + "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle": 50, + "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/RareFusionBundle": 80 +}; + const formatRewardsToInventoryType = ( rewards: IReward[] ): { InventoryChanges: IMissionInventoryUpdateRequest; MissionRewards: IMissionRewardResponse[] } => { const InventoryChanges: IMissionInventoryUpdateRequest = {}; const MissionRewards: IMissionRewardResponse[] = []; for (const reward of rewards) { - if (itemCheck(InventoryChanges, MissionRewards, reward.name)) { - continue; - } - - if (reward.name.includes(" Endo")) { - if (!InventoryChanges.FusionPoints) { - InventoryChanges.FusionPoints = 0; + if (reward.type in creditBundles) { + InventoryChanges.RegularCredits ??= 0; + InventoryChanges.RegularCredits += creditBundles[reward.type] * reward.itemCount; + } else if (reward.type in fusionBundles) { + InventoryChanges.FusionPoints ??= 0; + InventoryChanges.FusionPoints += fusionBundles[reward.type] * reward.itemCount; + } else { + const type = reward.type.replace("/Lotus/StoreItems/", "/Lotus/"); + if (type in ExportUpgrades) { + addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "RawUpgrades"); + } else if (type in ExportGear) { + addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "Consumables"); + } else if (type in ExportRecipes) { + addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "Recipes"); + } else if (type in ExportRelics) { + addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "MiscItems"); + } else { + logger.error(`rolled reward ${reward.itemCount}X ${reward.type} but unsure how to give it`); } - InventoryChanges.FusionPoints += getCountFromName(reward.name); - } else if (reward.name.includes(" Credits Cache") || reward.name.includes("Return: ")) { - if (!InventoryChanges.RegularCredits) { - InventoryChanges.RegularCredits = 0; - } - InventoryChanges.RegularCredits += getCountFromName(reward.name); } } return { InventoryChanges, MissionRewards }; }; -const itemCheck = ( - InventoryChanges: IMissionInventoryUpdateRequest, - MissionRewards: IMissionRewardResponse[], - name: string -) => { - const rewardCheck = { - RawUpgrades: modNames[name], - Consumables: gearNames[name], - MiscItems: - miscNames[name] || - miscNames[name.replace(/\d+X\s*/, "")] || - resourceNames[name] || - resourceNames[name.replace(/\d+X\s*/, "")] || - relicNames[name.replace("Relic", "Intact")] || - relicNames[name.replace("Relic (Radiant)", "Radiant")], - Recipes: blueprintNames[name] - }; - for (const key of Object.keys(rewardCheck) as IInventoryFieldType[]) { - if (rewardCheck[key]) { - addRewardResponse(InventoryChanges, MissionRewards, name, rewardCheck[key], key); - return true; - } - } - return false; -}; - -const getCountFromName = (name: string) => { - const regex = /(^(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?)(\s|X))|(\s(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?)$)/; - const countMatches = name.match(regex); - return countMatches ? parseInt(countMatches[0].replace(/,/g, ""), 10) : 1; -}; - const addRewardResponse = ( InventoryChanges: IMissionInventoryUpdateRequest, MissionRewards: IMissionRewardResponse[], - ItemName: string, ItemType: string, + ItemCount: number, InventoryCategory: IInventoryFieldType ) => { if (!ItemType) return; @@ -200,9 +170,6 @@ const addRewardResponse = ( InventoryChanges[InventoryCategory] = []; } - const ItemCount = getCountFromName(ItemName); - const TweetText = `${ItemName}`; - const existReward = InventoryChanges[InventoryCategory]!.find(item => item.ItemType === ItemType); if (existReward) { existReward.ItemCount += ItemCount; @@ -214,7 +181,7 @@ const addRewardResponse = ( InventoryChanges[InventoryCategory]!.push({ ItemType, ItemCount }); MissionRewards.push({ ItemCount, - TweetText, + TweetText: ItemType, // ensure if/how this even still used, or if it's needed at all ProductCategory: InventoryCategory, StoreItem: ItemType.replace("/Lotus/", "/Lotus/StoreItems/"), TypeName: ItemType @@ -222,32 +189,4 @@ const addRewardResponse = ( } }; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const _missionRewardsCheckAllNamings = () => { - let tempRewards: IReward[] = []; - Object.values(missionsDropTable as { [key: string]: IReward[] }).forEach(rewards => { - rewards.forEach(reward => { - tempRewards.push(reward); - }); - }); - tempRewards = tempRewards - .filter(reward => !modNames[reward.name]) - .filter(reward => !miscNames[reward.name]) - .filter(reward => !miscNames[reward.name.replace(/\d+X\s*/, "")]) - .filter(reward => !resourceNames[reward.name]) - .filter(reward => !resourceNames[reward.name.replace(/\d+X\s*/, "")]) - .filter(reward => !gearNames[reward.name]) - .filter(reward => { - return ( - !relicNames[reward.name.replace("Relic", "Intact")] && - !relicNames[reward.name.replace("Relic (Radiant)", "Radiant")] - ); - }) - .filter(reward => !blueprintNames[reward.name]) - .filter(reward => !reward.name.includes(" Endo")) - .filter(reward => !reward.name.includes(" Credits Cache") && !reward.name.includes("Return: ")); - logger.debug(`temp rewards`, { tempRewards }); -}; -// _missionRewardsCheckAllNamings(); - export { getRewards, combineRewardAndLootInventory }; diff --git a/src/types/missionTypes.ts b/src/types/missionTypes.ts index 193534f8..fab170a9 100644 --- a/src/types/missionTypes.ts +++ b/src/types/missionTypes.ts @@ -9,9 +9,3 @@ export interface IMissionRewardResponse { TweetText: string; ProductCategory: string; } - -export interface IReward { - name: string; - chance: number; - rotation?: string; -} diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index ce7ea1e0..7beb7a4e 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -67,7 +67,7 @@ export interface IMissionInventoryUpdateRequestRewardInfo { lostTargetWave?: number; defenseTargetCount?: number; EOM_AFK?: number; - rewardQualifications?: string; + rewardQualifications?: string; // did a Survival for 5 minutes and this was "1" PurgatoryRewardQualifications?: string; rewardSeed?: number; } diff --git a/static/json/missions-drop-table.json b/static/json/missions-drop-table.json deleted file mode 100644 index d7d44eb7..00000000 --- a/static/json/missions-drop-table.json +++ /dev/null @@ -1,4729 +0,0 @@ -{ - "SolNode94": [ - { "chance": 50, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 50, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SolNode130": [ - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, - { "chance": 8.33, "name": "Ravage", "rotation": "C" }, - { "chance": 8.33, "name": "Continuity", "rotation": "C" }, - { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, - { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode119": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } - ], - "SolNode12": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode28": [ - { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "240X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "750X Circuits", "rotation": "B" }, - { "chance": 12.65, "name": "750X Alloy Plate", "rotation": "B" }, - { "chance": 15.1, "name": "80 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "150 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Morphics", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 5.5, "name": "2X Morphics", "rotation": "C" }, - { "chance": 5.5, "name": "2X Gallium", "rotation": "C" }, - { "chance": 5.5, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 5.5, "name": "160 Endo", "rotation": "C" }, - { "chance": 0.67, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 0.67, "name": "Tellurium", "rotation": "C" }, - { "chance": 0.67, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Fuselage Blueprint", "rotation": "C" } - ], - "SolNode108": [ - { "chance": 38.72, "name": "Seer Blueprint" }, - { "chance": 38.72, "name": "Seer Barrel" }, - { "chance": 22.56, "name": "Seer Receiver" } - ], - "SolNode224": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.88, "name": "Rush", "rotation": "B" }, - { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.88, "name": "No Return", "rotation": "B" }, - { "chance": 5.88, "name": "Serration", "rotation": "B" }, - { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.88, "name": "North Wind", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode225": [ - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Reflection", "rotation": "A" }, - { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, - { "chance": 14.29, "name": "Parry", "rotation": "A" }, - { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 10, "name": "Master Key", "rotation": "C" }, - { "chance": 10, "name": "Reflection", "rotation": "C" }, - { "chance": 10, "name": "Parry", "rotation": "C" }, - { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, - { "chance": 10, "name": "Serration", "rotation": "C" }, - { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, - { "chance": 10, "name": "Metal Auger", "rotation": "C" }, - { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, - { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, - { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } - ], - "SolNode123": [ - { "chance": 50, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 50, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SolNode61": [ - { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "240X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "750X Circuits", "rotation": "B" }, - { "chance": 12.65, "name": "750X Alloy Plate", "rotation": "B" }, - { "chance": 15.1, "name": "80 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "150 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Morphics", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 5.5, "name": "2X Morphics", "rotation": "C" }, - { "chance": 5.5, "name": "2X Gallium", "rotation": "C" }, - { "chance": 5.5, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 5.5, "name": "160 Endo", "rotation": "C" }, - { "chance": 0.67, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 0.67, "name": "Tellurium", "rotation": "C" }, - { "chance": 0.67, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Fuselage Blueprint", "rotation": "C" } - ], - "SolNode23": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.88, "name": "Rush", "rotation": "B" }, - { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.88, "name": "No Return", "rotation": "B" }, - { "chance": 5.88, "name": "Serration", "rotation": "B" }, - { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.88, "name": "North Wind", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode109": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } - ], - "SolNode104": [ - { "chance": 38.72, "name": "Rhino Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Rhino Chassis Blueprint" }, - { "chance": 22.56, "name": "Rhino Systems Blueprint" } - ], - "SolNode66": [ - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Reflection", "rotation": "A" }, - { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, - { "chance": 14.29, "name": "Parry", "rotation": "A" }, - { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 10, "name": "Master Key", "rotation": "C" }, - { "chance": 10, "name": "Reflection", "rotation": "C" }, - { "chance": 10, "name": "Parry", "rotation": "C" }, - { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, - { "chance": 10, "name": "Serration", "rotation": "C" }, - { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, - { "chance": 10, "name": "Metal Auger", "rotation": "C" }, - { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, - { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, - { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } - ], - "ClanNode1": [ - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "True Punishment", "rotation": "C" }, - { "chance": 11.28, "name": "Quickening", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SolNode107": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode22": [ - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, - { "chance": 8.33, "name": "Ravage", "rotation": "C" }, - { "chance": 8.33, "name": "Continuity", "rotation": "C" }, - { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, - { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode101": [ - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "ClanNode0": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode902": [ - { "chance": 5.64, "name": "Morphic Transformer" }, - { "chance": 38.72, "name": "Automatic Trigger" }, - { "chance": 5.64, "name": "Phaedra Receiver" }, - { "chance": 38.72, "name": "Extend" }, - { "chance": 5.64, "name": "Shell Rush" }, - { "chance": 5.64, "name": "Shell Rush" } - ], - "SolNode63": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode79": [ - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Reflection", "rotation": "A" }, - { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, - { "chance": 14.29, "name": "Parry", "rotation": "A" }, - { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 10, "name": "Master Key", "rotation": "C" }, - { "chance": 10, "name": "Reflection", "rotation": "C" }, - { "chance": 10, "name": "Parry", "rotation": "C" }, - { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, - { "chance": 10, "name": "Serration", "rotation": "C" }, - { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, - { "chance": 10, "name": "Metal Auger", "rotation": "C" }, - { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, - { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, - { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } - ], - "SolNode39": [ - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SolNode15": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } - ], - "SolNode26": [ - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, - { "chance": 8.33, "name": "Ravage", "rotation": "C" }, - { "chance": 8.33, "name": "Continuity", "rotation": "C" }, - { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, - { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode85": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.88, "name": "Rush", "rotation": "B" }, - { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.88, "name": "No Return", "rotation": "B" }, - { "chance": 5.88, "name": "Serration", "rotation": "B" }, - { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.88, "name": "North Wind", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode75": [ - { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 12.18, "name": "300X Ferrite", "rotation": "B" }, - { "chance": 12.18, "name": "150X Rubedo", "rotation": "B" }, - { "chance": 12.18, "name": "Detonite Ampule", "rotation": "B" }, - { "chance": 12.18, "name": "100 Endo", "rotation": "B" }, - { "chance": 12.18, "name": "100 Endo", "rotation": "B" }, - { "chance": 12.18, "name": "3,000 Credits Cache", "rotation": "B" }, - { "chance": 12.18, "name": "3,000 Credits Cache", "rotation": "B" }, - { "chance": 12.18, "name": "Neurodes", "rotation": "B" }, - { "chance": 2.58, "name": "Kubrow Egg", "rotation": "B" }, - { "chance": 15.1, "name": "Health Restore (Large)", "rotation": "C" }, - { "chance": 15.1, "name": "Health Restore (Large)", "rotation": "C" }, - { "chance": 15.1, "name": "200 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "200 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 3.67, "name": "Bite", "rotation": "C" }, - { "chance": 3.67, "name": "Link Armor", "rotation": "C" }, - { "chance": 3.67, "name": "Link Health", "rotation": "C" }, - { "chance": 3.67, "name": "Link Shields", "rotation": "C" }, - { "chance": 3.67, "name": "Maul", "rotation": "C" }, - { "chance": 3.67, "name": "Hastened Deflection", "rotation": "C" }, - { "chance": 2, "name": "Forma Blueprint", "rotation": "C" }, - { "chance": 0.5, "name": "Forma", "rotation": "C" } - ], - "SolNode24": [ - { "chance": 38.72, "name": "Hydroid Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Hydroid Chassis Blueprint" }, - { "chance": 22.56, "name": "Hydroid Systems Blueprint" } - ], - "ClanNode2": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode903": [ - { "chance": 38.72, "name": "Polar Magazine" }, - { "chance": 38.72, "name": "Superior Defenses" }, - { "chance": 3.76, "name": "Meteor Crash" }, - { "chance": 3.76, "name": "Nebula Bore" }, - { "chance": 3.76, "name": "Astral Slash" }, - { "chance": 3.76, "name": "Comet Blast" }, - { "chance": 3.76, "name": "Quasar Drill" }, - { "chance": 3.76, "name": "Zodiac Shred" } - ], - "ClanNode3": [ - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SolNode30": [ - { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode46": [ - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, - { "chance": 8.33, "name": "Ravage", "rotation": "C" }, - { "chance": 8.33, "name": "Continuity", "rotation": "C" }, - { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, - { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode106": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.88, "name": "Rush", "rotation": "B" }, - { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.88, "name": "No Return", "rotation": "B" }, - { "chance": 5.88, "name": "Serration", "rotation": "B" }, - { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.88, "name": "North Wind", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode41": [ - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Reflection", "rotation": "A" }, - { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, - { "chance": 14.29, "name": "Parry", "rotation": "A" }, - { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 10, "name": "Master Key", "rotation": "C" }, - { "chance": 10, "name": "Reflection", "rotation": "C" }, - { "chance": 10, "name": "Parry", "rotation": "C" }, - { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, - { "chance": 10, "name": "Serration", "rotation": "C" }, - { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, - { "chance": 10, "name": "Metal Auger", "rotation": "C" }, - { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, - { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, - { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } - ], - "SolNode16": [ - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SolNode45": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode36": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } - ], - "ClanNode8": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode99": [ - { "chance": 38.72, "name": "Excalibur Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Excalibur Chassis Blueprint" }, - { "chance": 22.56, "name": "Excalibur Systems Blueprint" } - ], - "SolNode65": [ - { "chance": 100, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "240X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "750X Circuits", "rotation": "B" }, - { "chance": 12.65, "name": "750X Alloy Plate", "rotation": "B" }, - { "chance": 15.1, "name": "80 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "150 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Morphics", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 5.5, "name": "2X Morphics", "rotation": "C" }, - { "chance": 5.5, "name": "2X Gallium", "rotation": "C" }, - { "chance": 5.5, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 5.5, "name": "160 Endo", "rotation": "C" }, - { "chance": 0.67, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 0.67, "name": "Tellurium", "rotation": "C" }, - { "chance": 0.67, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Fuselage Blueprint", "rotation": "C" } - ], - "ClanNode9": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "Quickening", "rotation": "C" }, - { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode904": [ - { "chance": 5.64, "name": "Morphic Transformer" }, - { "chance": 38.72, "name": "Automatic Trigger" }, - { "chance": 5.64, "name": "Phaedra Receiver" }, - { "chance": 38.72, "name": "Extend" }, - { "chance": 5.64, "name": "Shell Rush" }, - { "chance": 5.64, "name": "Shell Rush" } - ], - "SolNode87": [ - { "chance": 27.78, "name": "5X Hexenon", "rotation": "A" }, - { "chance": 5.56, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 5.56, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 5.56, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 5.56, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Proton Pulse", "rotation": "A" }, - { "chance": 11.11, "name": "Motus Signal", "rotation": "A" }, - { "chance": 11.11, "name": "Aero Periphery", "rotation": "A" }, - { "chance": 5.56, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 5.56, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 5.56, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 27.78, "name": "10X Hexenon", "rotation": "B" }, - { "chance": 5.56, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 5.56, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 5.56, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 11.11, "name": "Proton Jet", "rotation": "B" }, - { "chance": 11.11, "name": "Motus Impact", "rotation": "B" }, - { "chance": 11.11, "name": "Aero Vantage", "rotation": "B" }, - { "chance": 5.56, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 5.56, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 5.56, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 5.56, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 30, "name": "15X Hexenon", "rotation": "C" }, - { "chance": 5, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 5, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 5, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 10, "name": "Proton Snap", "rotation": "C" }, - { "chance": 10, "name": "Motus Setup", "rotation": "C" }, - { "chance": 10, "name": "Aero Agility", "rotation": "C" }, - { "chance": 5, "name": "Universal Medallion", "rotation": "C" }, - { "chance": 5, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 5, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 5, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 5, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode88": [ - { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, - { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, - { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } - ], - "SolNode97": [ - { "chance": 9.09, "name": "Vitality", "rotation": "A" }, - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, - { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, - { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, - { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, - { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, - { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, - { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.56, "name": "Rush", "rotation": "B" }, - { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.56, "name": "No Return", "rotation": "B" }, - { "chance": 5.56, "name": "Serration", "rotation": "B" }, - { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.56, "name": "North Wind", "rotation": "B" }, - { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 5.56, "name": "Streamline", "rotation": "B" }, - { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, - { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, - { "chance": 5.56, "name": "Fury", "rotation": "B" }, - { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, - { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, - { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, - { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, - { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode126": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "C" } - ], - "SolNode125": [ - { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 6.25, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.25, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.25, "name": "North Wind", "rotation": "B" }, - { "chance": 6.25, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 6.25, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.25, "name": "Stormbringer", "rotation": "B" }, - { "chance": 6.25, "name": "Point Blank", "rotation": "B" }, - { "chance": 6.25, "name": "Fury", "rotation": "B" }, - { "chance": 6.25, "name": "150 Endo", "rotation": "B" }, - { "chance": 6.25, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 4.51, "name": "Vital Sense", "rotation": "C" }, - { "chance": 4.51, "name": "Metal Auger", "rotation": "C" }, - { "chance": 4.51, "name": "Ravage", "rotation": "C" }, - { "chance": 4.51, "name": "Stretch", "rotation": "C" }, - { "chance": 4.51, "name": "300 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode100": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode25": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, - { "chance": 7.14, "name": "No Return", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 7.14, "name": "North Wind", "rotation": "B" }, - { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode121": [ - { "chance": 33.33, "name": "4,000 Credits Cache", "rotation": "A" }, - { "chance": 33.33, "name": "4,000 Credits Cache", "rotation": "A" }, - { "chance": 33.33, "name": "4,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, - { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, - { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } - ], - "SolNode53": [ - { "chance": 38.72, "name": "Valkyr Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Valkyr Chassis Blueprint" }, - { "chance": 22.56, "name": "Valkyr Systems Blueprint" } - ], - "SolNode740": [ - { "chance": 22.56, "name": "Wisp Blueprint" }, - { "chance": 25.81, "name": "Wisp Chassis Blueprint" }, - { "chance": 25.81, "name": "Wisp Neuroptics Blueprint" }, - { "chance": 25.81, "name": "Wisp Systems Blueprint" } - ], - "ClanNode4": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode73": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode905": [ - { "chance": 25.81, "name": "Glacial Edge" }, - { "chance": 25.81, "name": "Conductive Blade" }, - { "chance": 25.81, "name": "Tempered Blade" }, - { "chance": 3.76, "name": "Meteor Crash" }, - { "chance": 3.76, "name": "Nebula Bore" }, - { "chance": 3.76, "name": "Astral Slash" }, - { "chance": 3.76, "name": "Comet Blast" }, - { "chance": 3.76, "name": "Quasar Drill" }, - { "chance": 3.76, "name": "Zodiac Shred" } - ], - "ClanNode5": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "Quickening", "rotation": "C" }, - { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode42": [ - { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 6.25, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.25, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.25, "name": "North Wind", "rotation": "B" }, - { "chance": 6.25, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 6.25, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.25, "name": "Stormbringer", "rotation": "B" }, - { "chance": 6.25, "name": "Point Blank", "rotation": "B" }, - { "chance": 6.25, "name": "Fury", "rotation": "B" }, - { "chance": 6.25, "name": "150 Endo", "rotation": "B" }, - { "chance": 6.25, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 4.51, "name": "Vital Sense", "rotation": "C" }, - { "chance": 4.51, "name": "Metal Auger", "rotation": "C" }, - { "chance": 4.51, "name": "Ravage", "rotation": "C" }, - { "chance": 4.51, "name": "Stretch", "rotation": "C" }, - { "chance": 4.51, "name": "300 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode96": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode67": [ - { "chance": 9.09, "name": "Vitality", "rotation": "A" }, - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, - { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, - { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, - { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, - { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, - { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, - { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.56, "name": "Rush", "rotation": "B" }, - { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.56, "name": "No Return", "rotation": "B" }, - { "chance": 5.56, "name": "Serration", "rotation": "B" }, - { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.56, "name": "North Wind", "rotation": "B" }, - { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 5.56, "name": "Streamline", "rotation": "B" }, - { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, - { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, - { "chance": 5.56, "name": "Fury", "rotation": "B" }, - { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, - { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, - { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, - { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, - { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode32": [ - { "chance": 38.72, "name": "Ember Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Ember Chassis Blueprint" }, - { "chance": 22.56, "name": "Ember Systems Blueprint" } - ], - "SolNode18": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, - { "chance": 7.14, "name": "No Return", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 7.14, "name": "North Wind", "rotation": "B" }, - { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode70": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode31": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ], - "SolNode50": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "C" } - ], - "SolNode82": [ - { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, - { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, - { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } - ], - "SolNode906": [ - { "chance": 5.06, "name": "400 Endo" }, - { "chance": 3.16, "name": "400 Endo" }, - { "chance": 1.01, "name": "400 Endo" }, - { "chance": 1.01, "name": "400 Endo" }, - { "chance": 5.06, "name": "400 Endo" }, - { "chance": 5.06, "name": "Tempered Blade" }, - { "chance": 5.06, "name": "Sudden Impact" }, - { "chance": 5.06, "name": "Poisonous Sting" }, - { "chance": 5.06, "name": "Glacial Edge" }, - { "chance": 5.06, "name": "Conductive Blade" }, - { "chance": 5.06, "name": "Furor" }, - { "chance": 3.16, "name": "Extend" }, - { "chance": 3.16, "name": "Superior Defenses" }, - { "chance": 3.16, "name": "Cutting Edge" }, - { "chance": 3.16, "name": "System Reroute" }, - { "chance": 3.16, "name": "Efficient Transferral" }, - { "chance": 3.16, "name": "Blazing Steel" }, - { "chance": 5.06, "name": "Meso P11 Relic" }, - { "chance": 5.06, "name": "Meso G5 Relic" }, - { "chance": 5.06, "name": "Meso K6 Relic" }, - { "chance": 5.06, "name": "Meso P13 Relic" }, - { "chance": 5.06, "name": "Meso C8 Relic" }, - { "chance": 5.06, "name": "Meso K4 Relic" }, - { "chance": 5.06, "name": "Meso S12 Relic" } - ], - "ClanNode13": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "Quickening", "rotation": "C" }, - { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "ClanNode12": [ - { "chance": 16.24, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.24, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.24, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.24, "name": "150 Endo", "rotation": "A" }, - { "chance": 16.24, "name": "150 Endo", "rotation": "A" }, - { "chance": 16.24, "name": "150 Endo", "rotation": "A" }, - { "chance": 2.58, "name": "Expel Corrupted", "rotation": "A" }, - { "chance": 6, "name": "Harrow Systems Blueprint", "rotation": "B" }, - { "chance": 8, "name": "Smite Corrupted", "rotation": "B" }, - { "chance": 8, "name": "Cleanse Corrupted", "rotation": "B" }, - { "chance": 8, "name": "Bane Of Corrupted", "rotation": "B" }, - { "chance": 10, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 10, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 10, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 10, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 10, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 10, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 10, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 15, "name": "Harrow Systems Blueprint", "rotation": "C" }, - { "chance": 15, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode33": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode105": [ - { "chance": 11.28, "name": "Equinox Night Aspect Blueprint" }, - { "chance": 12.91, "name": "Equinox Night Chassis Blueprint" }, - { "chance": 12.91, "name": "Equinox Night Neuroptics Blueprint" }, - { "chance": 12.91, "name": "Equinox Night Systems Blueprint" }, - { "chance": 11.28, "name": "Equinox Day Aspect Blueprint" }, - { "chance": 12.91, "name": "Equinox Day Chassis Blueprint" }, - { "chance": 12.91, "name": "Equinox Day Neuroptics Blueprint" }, - { "chance": 12.91, "name": "Equinox Day Systems Blueprint" } - ], - "SolNode64": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, - { "chance": 7.14, "name": "No Return", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 7.14, "name": "North Wind", "rotation": "B" }, - { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode69": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode98": [ - { "chance": 20, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 20, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 20, "name": "300X Polymer Bundle", "rotation": "A" }, - { "chance": 20, "name": "200 Endo", "rotation": "A" }, - { "chance": 20, "name": "200 Endo", "rotation": "A" }, - { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, - { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, - { "chance": 15.49, "name": "200 Endo", "rotation": "B" }, - { "chance": 15.49, "name": "200 Endo", "rotation": "B" }, - { "chance": 15.49, "name": "300X Plastids", "rotation": "B" }, - { "chance": 4.51, "name": "Battering Maneuver", "rotation": "B" }, - { "chance": 4.51, "name": "Mobilize", "rotation": "B" }, - { "chance": 4.51, "name": "Piercing Step", "rotation": "B" }, - { "chance": 4.51, "name": "Rending Turn", "rotation": "B" }, - { "chance": 4.51, "name": "Patagium", "rotation": "B" }, - { "chance": 15.49, "name": "400 Endo", "rotation": "C" }, - { "chance": 4.51, "name": "400 Endo", "rotation": "C" }, - { "chance": 15.49, "name": "2X Gallium", "rotation": "C" }, - { "chance": 15.49, "name": "3X Gallium", "rotation": "C" }, - { "chance": 15.49, "name": "250X Oxium", "rotation": "C" }, - { "chance": 15.49, "name": "Tellurium", "rotation": "C" }, - { "chance": 4.51, "name": "Lightning Dash", "rotation": "C" }, - { "chance": 4.51, "name": "Firewalker", "rotation": "C" }, - { "chance": 4.51, "name": "Ice Spring", "rotation": "C" }, - { "chance": 4.51, "name": "Toxic Flight", "rotation": "C" } - ], - "SolNode9": [ - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, - { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, - { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, - { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, - { "chance": 7.04, "name": "Stretch", "rotation": "C" }, - { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, - { "chance": 7.04, "name": "Scorch", "rotation": "C" }, - { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, - { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, - { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, - { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } - ], - "SolNode60": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ], - "ClanNode16": [ - { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 13.56, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 13.56, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 13.56, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 5.08, "name": "Universal Medallion", "rotation": "C" }, - { "chance": 13.56, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 13.56, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 13.56, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 13.56, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode122": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.67, "name": "North Wind", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Streamline", "rotation": "B" }, - { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, - { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, - { "chance": 2.26, "name": "Ravage", "rotation": "C" }, - { "chance": 2.26, "name": "Stretch", "rotation": "C" }, - { "chance": 2.26, "name": "Handspring", "rotation": "C" }, - { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, - { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, - { "chance": 2.26, "name": "Continuity", "rotation": "C" }, - { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, - { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode907": [ - { "chance": 2.51, "name": "Automatic Trigger", "rotation": "A" }, - { "chance": 2.51, "name": "Combustion Rounds", "rotation": "A" }, - { "chance": 2.51, "name": "Dual Rounds", "rotation": "A" }, - { "chance": 2.51, "name": "Hollowed Bullets", "rotation": "A" }, - { "chance": 2.51, "name": "Magazine Extension", "rotation": "A" }, - { "chance": 2.51, "name": "Modified Munitions", "rotation": "A" }, - { "chance": 2.51, "name": "Parallax Scope", "rotation": "A" }, - { "chance": 2.51, "name": "Rubedo-Lined Barrel", "rotation": "A" }, - { "chance": 2.51, "name": "Venomous Clip", "rotation": "A" }, - { "chance": 38.72, "name": "250 Endo", "rotation": "A" }, - { "chance": 38.72, "name": "250 Endo", "rotation": "A" }, - { "chance": 10, "name": "Superior Defenses", "rotation": "B" }, - { "chance": 10, "name": "Bleeding Edge", "rotation": "B" }, - { "chance": 10, "name": "Superior Defenses", "rotation": "B" }, - { "chance": 10, "name": "Argon Plating", "rotation": "B" }, - { "chance": 10, "name": "Furor", "rotation": "B" }, - { "chance": 10, "name": "Glacial Edge", "rotation": "B" }, - { "chance": 10, "name": "Electrified Barrel", "rotation": "B" }, - { "chance": 10, "name": "Energy Inversion", "rotation": "B" }, - { "chance": 10, "name": "250 Endo", "rotation": "B" }, - { "chance": 10, "name": "250 Endo", "rotation": "B" }, - { "chance": 22.56, "name": "400 Endo", "rotation": "C" }, - { "chance": 9.68, "name": "400 Endo", "rotation": "C" }, - { "chance": 9.68, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Axi H7 Relic", "rotation": "C" } - ], - "ClanNode17": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 11.28, "name": "Life Strike", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode1": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode17": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.67, "name": "North Wind", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Streamline", "rotation": "B" }, - { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, - { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, - { "chance": 2.26, "name": "Ravage", "rotation": "C" }, - { "chance": 2.26, "name": "Stretch", "rotation": "C" }, - { "chance": 2.26, "name": "Handspring", "rotation": "C" }, - { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, - { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, - { "chance": 2.26, "name": "Continuity", "rotation": "C" }, - { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, - { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode78": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ], - "SolNode6": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode127": [ - { "chance": 38.72, "name": "Loki Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Loki Chassis Blueprint" }, - { "chance": 22.56, "name": "Loki Systems Blueprint" } - ], - "SolNode118": [ - { "chance": 100, "name": "2X 10,000 Credits Cache", "rotation": "A" }, - { "chance": 100, "name": "3X 10,000 Credits Cache", "rotation": "B" }, - { "chance": 95, "name": "5X 10,000 Credits Cache", "rotation": "C" }, - { "chance": 5, "name": "Universal Medallion", "rotation": "C" } - ], - "SolNode84": [ - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, - { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, - { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, - { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, - { "chance": 7.04, "name": "Stretch", "rotation": "C" }, - { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, - { "chance": 7.04, "name": "Scorch", "rotation": "C" }, - { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, - { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, - { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, - { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } - ], - "ClanNode20": [ - { "chance": 24.35, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 24.35, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 24.35, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 24.35, "name": "250 Endo", "rotation": "A" }, - { "chance": 2.58, "name": "Expel Corrupted", "rotation": "A" }, - { "chance": 6, "name": "Harrow Systems Blueprint", "rotation": "B" }, - { "chance": 8, "name": "Smite Corrupted", "rotation": "B" }, - { "chance": 8, "name": "Cleanse Corrupted", "rotation": "B" }, - { "chance": 8, "name": "Bane Of Corrupted", "rotation": "B" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 15, "name": "Harrow Systems Blueprint", "rotation": "C" }, - { "chance": 15, "name": "Life Strike", "rotation": "C" }, - { "chance": 10, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 10, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 10, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 10, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 10, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 10, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 10, "name": "Axi H7 Relic", "rotation": "C" } - ], - "ClanNode21": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 11.28, "name": "Life Strike", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode72": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.67, "name": "North Wind", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Streamline", "rotation": "B" }, - { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, - { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, - { "chance": 2.26, "name": "Ravage", "rotation": "C" }, - { "chance": 2.26, "name": "Stretch", "rotation": "C" }, - { "chance": 2.26, "name": "Handspring", "rotation": "C" }, - { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, - { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, - { "chance": 2.26, "name": "Continuity", "rotation": "C" }, - { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, - { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode48": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ], - "SolNode76": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode51": [ - { "chance": 38.72, "name": "Trinity Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Trinity Chassis Blueprint" }, - { "chance": 22.56, "name": "Trinity Systems Blueprint" } - ], - "SolNode56": [ - { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, - { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, - { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, - { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, - { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, - { "chance": 12.58, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 12.58, "name": "Gallium", "rotation": "C" }, - { "chance": 12.58, "name": "Neurodes", "rotation": "C" }, - { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, - { "chance": 3.67, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 3.67, "name": "Tellurium", "rotation": "C" }, - { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } - ], - "SolNode43": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode81": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "ClanNode24": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode102": [ - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, - { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, - { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, - { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, - { "chance": 7.04, "name": "Stretch", "rotation": "C" }, - { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, - { "chance": 7.04, "name": "Scorch", "rotation": "C" }, - { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, - { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, - { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, - { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } - ], - "ClanNode25": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode135": [ - { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, - { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, - { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } - ], - "SolNode132": [ - { "chance": 9.09, "name": "Vitality", "rotation": "A" }, - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, - { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, - { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, - { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, - { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, - { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, - { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.56, "name": "Rush", "rotation": "B" }, - { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.56, "name": "No Return", "rotation": "B" }, - { "chance": 5.56, "name": "Serration", "rotation": "B" }, - { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.56, "name": "North Wind", "rotation": "B" }, - { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 5.56, "name": "Streamline", "rotation": "B" }, - { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, - { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, - { "chance": 5.56, "name": "Fury", "rotation": "B" }, - { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, - { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, - { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, - { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, - { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode139": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode141": [ - { "chance": 100, "name": "5,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Polymer Bundle", "rotation": "B" }, - { "chance": 12.65, "name": "350X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "600 Endo", "rotation": "C" }, - { "chance": 4.4, "name": "600 Endo", "rotation": "C" }, - { "chance": 15.1, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 15.1, "name": "Gallium", "rotation": "C" }, - { "chance": 15.1, "name": "Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 4.4, "name": "2X Gallium", "rotation": "C" }, - { "chance": 4.4, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 4.4, "name": "Tellurium", "rotation": "C" }, - { "chance": 1, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 1, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Engines Blueprint", "rotation": "C" } - ], - "SolNode137": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } - ], - "SolNode144": [ - { "chance": 38.72, "name": "Frost Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Frost Chassis Blueprint" }, - { "chance": 22.56, "name": "Frost Systems Blueprint" } - ], - "SolNode149": [ - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, - { "chance": 8.33, "name": "Ravage", "rotation": "C" }, - { "chance": 8.33, "name": "Continuity", "rotation": "C" }, - { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, - { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode147": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 10, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 5.88, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.88, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.88, "name": "Rush", "rotation": "B" }, - { "chance": 5.88, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.88, "name": "No Return", "rotation": "B" }, - { "chance": 5.88, "name": "Serration", "rotation": "B" }, - { "chance": 5.88, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.88, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.88, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.88, "name": "North Wind", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 5.88, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 2.58, "name": "Natural Talent", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 13.92, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode146": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "ClanNode23": [ - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "True Punishment", "rotation": "C" }, - { "chance": 11.28, "name": "Quickening", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "ClanNode22": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode153": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ], - "SolNode162": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode167": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.67, "name": "North Wind", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Streamline", "rotation": "B" }, - { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 6.67, "name": "150 Endo", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Nidus Systems Blueprint", "rotation": "C" }, - { "chance": 14.29, "name": "Nidus Neuroptics Blueprint", "rotation": "C" }, - { "chance": 14.29, "name": "Nidus Chassis Blueprint", "rotation": "C" }, - { "chance": 14.29, "name": "Vital Sense", "rotation": "C" }, - { "chance": 14.29, "name": "Metal Auger", "rotation": "C" }, - { "chance": 14.29, "name": "Stretch", "rotation": "C" }, - { "chance": 14.29, "name": "300 Endo", "rotation": "C" } - ], - "SolNode166": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "ClanNode18": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode172": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "C" } - ], - "ClanNode19": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Life Strike", "rotation": "C" }, - { "chance": 12.5, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 12.5, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 12.5, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 12.5, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 12.5, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 12.5, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 12.5, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode175": [ - { "chance": 16.67, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "200 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "200 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "1000X Nano Spores", "rotation": "A" }, - { "chance": 16.67, "name": "Thief's Wit", "rotation": "A" }, - { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, - { "chance": 15.49, "name": "5,000 Credits Cache", "rotation": "B" }, - { "chance": 15.49, "name": "300 Endo", "rotation": "B" }, - { "chance": 15.49, "name": "350X Plastids", "rotation": "B" }, - { "chance": 15.49, "name": "3X Mutagen Sample", "rotation": "B" }, - { "chance": 5.64, "name": "Contagious Spread", "rotation": "B" }, - { "chance": 5.64, "name": "Pathogen Rounds", "rotation": "B" }, - { "chance": 5.64, "name": "Infected Clip", "rotation": "B" }, - { "chance": 5.64, "name": "Fever Strike", "rotation": "B" }, - { "chance": 15.49, "name": "Neurodes", "rotation": "C" }, - { "chance": 15.49, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 15.49, "name": "400 Endo", "rotation": "C" }, - { "chance": 15.49, "name": "400 Endo", "rotation": "C" }, - { "chance": 4.51, "name": "400 Endo", "rotation": "C" }, - { "chance": 15.49, "name": "Enemy Sense", "rotation": "C" }, - { "chance": 4.51, "name": "Mutalist Alad V Nav Coordinate", "rotation": "C" }, - { "chance": 4.51, "name": "High Voltage", "rotation": "C" }, - { "chance": 4.51, "name": "Shell Shock", "rotation": "C" }, - { "chance": 4.51, "name": "Firestorm", "rotation": "C" } - ], - "SolNode177": [ - { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 10.2, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 10.2, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 10.2, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 7.84, "name": "Gauss Chassis Blueprint", "rotation": "C" }, - { "chance": 7.84, "name": "Gauss Neuroptics Blueprint", "rotation": "C" }, - { "chance": 7.84, "name": "Gauss Systems Blueprint", "rotation": "C" }, - { "chance": 5.1, "name": "Universal Medallion", "rotation": "C" }, - { "chance": 10.2, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 10.2, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 10.2, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 10.2, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode184": [ - { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, - { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, - { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, - { "chance": 12.58, "name": "600 Endo", "rotation": "C" }, - { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, - { "chance": 12.58, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 12.58, "name": "Gallium", "rotation": "C" }, - { "chance": 12.58, "name": "Neurodes", "rotation": "C" }, - { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, - { "chance": 3.67, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 3.67, "name": "Tellurium", "rotation": "C" }, - { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } - ], - "SolNode183": [ - { "chance": 75.5, "name": "5,000 Credits Cache" }, - { "chance": 22, "name": "250 Endo" }, - { "chance": 0.5, "name": "Forma Blueprint" }, - { "chance": 0.5, "name": "Crimson Dervish" }, - { "chance": 0.5, "name": "Astral Twilight" }, - { "chance": 0.5, "name": "Blind Justice" }, - { "chance": 0.25, "name": "Tempo Royale" }, - { "chance": 0.25, "name": "Vengeful Revenant" } - ], - "SolNode190": [ - { "chance": 75.88, "name": "4,000 Credits Cache" }, - { "chance": 22.11, "name": "250 Endo" }, - { "chance": 0.34, "name": "Forma Blueprint" }, - { "chance": 0.34, "name": "Crushing Ruin" }, - { "chance": 0.34, "name": "Final Harbinger" }, - { "chance": 0.34, "name": "Vermillion Storm" }, - { "chance": 0.34, "name": "Stalking Fan" }, - { "chance": 0.34, "name": "Decisive Judgement" } - ], - "SolNode185": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode187": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode188": [ - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Steady Hands", "rotation": "A" }, - { "chance": 14.29, "name": "Stabilizer", "rotation": "A" }, - { "chance": 14.29, "name": "Power Throw", "rotation": "A" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 7.04, "name": "Auto Breach", "rotation": "C" }, - { "chance": 7.04, "name": "Power Throw", "rotation": "C" }, - { "chance": 7.04, "name": "Stretch", "rotation": "C" }, - { "chance": 7.04, "name": "Hell's Chamber", "rotation": "C" }, - { "chance": 7.04, "name": "Scorch", "rotation": "C" }, - { "chance": 7.04, "name": "Thermite Rounds", "rotation": "C" }, - { "chance": 7.52, "name": "Frostbite", "rotation": "C" }, - { "chance": 7.04, "name": "Frigid Blast", "rotation": "C" }, - { "chance": 7.04, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 7.04, "name": "Covert Lethality", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Neuroptics Blueprint", "rotation": "C" }, - { "chance": 7.52, "name": "Ivara Blueprint", "rotation": "C" } - ], - "SolNode189": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ], - "SolNode199": [ - { "chance": 75.5, "name": "5,000 Credits Cache" }, - { "chance": 22, "name": "250 Endo" }, - { "chance": 0.5, "name": "Forma Blueprint" }, - { "chance": 0.5, "name": "Crimson Dervish" }, - { "chance": 0.5, "name": "Astral Twilight" }, - { "chance": 0.5, "name": "Blind Justice" }, - { "chance": 0.25, "name": "Tempo Royale" }, - { "chance": 0.25, "name": "Vengeful Revenant" } - ], - "SolNode193": [ - { "chance": 38.72, "name": "Saryn Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Saryn Chassis Blueprint" }, - { "chance": 22.56, "name": "Saryn Systems Blueprint" } - ], - "SolNode195": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.67, "name": "North Wind", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Streamline", "rotation": "B" }, - { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, - { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, - { "chance": 2.26, "name": "Ravage", "rotation": "C" }, - { "chance": 2.26, "name": "Stretch", "rotation": "C" }, - { "chance": 2.26, "name": "Handspring", "rotation": "C" }, - { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, - { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, - { "chance": 2.26, "name": "Continuity", "rotation": "C" }, - { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, - { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "ClanNode14": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 11.28, "name": "Life Strike", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "ClanNode15": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode203": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode210": [ - { "chance": 38.72, "name": "Nova Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Nova Chassis Blueprint" }, - { "chance": 22.56, "name": "Nova Systems Blueprint" } - ], - "SolNode216": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Corpus", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode211": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 7.14, "name": "Target Cracker", "rotation": "B" }, - { "chance": 7.14, "name": "No Return", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 7.14, "name": "North Wind", "rotation": "B" }, - { "chance": 7.14, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 7.14, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode215": [ - { "chance": 9.09, "name": "Vitality", "rotation": "A" }, - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Fast Hands", "rotation": "A" }, - { "chance": 9.09, "name": "Point Strike", "rotation": "A" }, - { "chance": 9.09, "name": "Piercing Hit", "rotation": "A" }, - { "chance": 9.09, "name": "Pistol Gambit", "rotation": "A" }, - { "chance": 9.09, "name": "Blunderbuss", "rotation": "A" }, - { "chance": 9.09, "name": "Live Wire", "rotation": "A" }, - { "chance": 5.56, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 5.56, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 5.56, "name": "Rush", "rotation": "B" }, - { "chance": 5.56, "name": "Target Cracker", "rotation": "B" }, - { "chance": 5.56, "name": "No Return", "rotation": "B" }, - { "chance": 5.56, "name": "Serration", "rotation": "B" }, - { "chance": 5.56, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 5.56, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 5.56, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 5.56, "name": "North Wind", "rotation": "B" }, - { "chance": 5.56, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 5.56, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 5.56, "name": "Streamline", "rotation": "B" }, - { "chance": 5.56, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 5.56, "name": "Stormbringer", "rotation": "B" }, - { "chance": 5.56, "name": "Point Blank", "rotation": "B" }, - { "chance": 5.56, "name": "Fury", "rotation": "B" }, - { "chance": 5.56, "name": "50 Endo", "rotation": "B" }, - { "chance": 5.64, "name": "Metal Auger", "rotation": "C" }, - { "chance": 5.64, "name": "Rime Rounds", "rotation": "C" }, - { "chance": 5.64, "name": "Scattering Inferno", "rotation": "C" }, - { "chance": 5.64, "name": "Ivara Chassis Blueprint", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode212": [ - { "chance": 14.29, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 6.25, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.25, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.25, "name": "North Wind", "rotation": "B" }, - { "chance": 6.25, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 6.25, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.25, "name": "Stormbringer", "rotation": "B" }, - { "chance": 6.25, "name": "Point Blank", "rotation": "B" }, - { "chance": 6.25, "name": "Fury", "rotation": "B" }, - { "chance": 6.25, "name": "150 Endo", "rotation": "B" }, - { "chance": 6.25, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.25, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 4.51, "name": "Vital Sense", "rotation": "C" }, - { "chance": 4.51, "name": "Metal Auger", "rotation": "C" }, - { "chance": 4.51, "name": "Ravage", "rotation": "C" }, - { "chance": 4.51, "name": "Stretch", "rotation": "C" }, - { "chance": 4.51, "name": "300 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode217": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "C" } - ], - "ClanNode6": [ - { "chance": 6.9, "name": "Vitality", "rotation": "A" }, - { "chance": 6.9, "name": "Fast Deflection", "rotation": "A" }, - { "chance": 7.37, "name": "Rush", "rotation": "A" }, - { "chance": 6.9, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 6.9, "name": "Trick Mag", "rotation": "A" }, - { "chance": 1.01, "name": "Pressure Point", "rotation": "A" }, - { "chance": 7.37, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 7.37, "name": "Fast Hands", "rotation": "A" }, - { "chance": 1.01, "name": "True Punishment", "rotation": "A" }, - { "chance": 6.9, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.9, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.43, "name": "Speed Trigger", "rotation": "B" }, - { "chance": 1.58, "name": "Fast Hands", "rotation": "B" }, - { "chance": 8.43, "name": "Point Strike", "rotation": "B" }, - { "chance": 8.43, "name": "Vital Sense", "rotation": "B" }, - { "chance": 1.58, "name": "Piercing Hit", "rotation": "B" }, - { "chance": 1.58, "name": "Metal Auger", "rotation": "B" }, - { "chance": 8.43, "name": "Pistol Gambit", "rotation": "B" }, - { "chance": 8.43, "name": "Target Cracker", "rotation": "B" }, - { "chance": 8.43, "name": "No Return", "rotation": "B" }, - { "chance": 8.43, "name": "Ravage", "rotation": "B" }, - { "chance": 8.43, "name": "Blunderbuss", "rotation": "B" }, - { "chance": 1.58, "name": "Point Blank", "rotation": "B" }, - { "chance": 1.58, "name": "Serration", "rotation": "B" }, - { "chance": 1.58, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 0.67, "name": "Fury", "rotation": "B" }, - { "chance": 1.58, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.43, "name": "Pressure Point", "rotation": "B" }, - { "chance": 0.67, "name": "True Punishment", "rotation": "B" }, - { "chance": 0.67, "name": "Quickening", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 1.58, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 7.59, "name": "Hellfire", "rotation": "C" }, - { "chance": 7.59, "name": "Heated Charge", "rotation": "C" }, - { "chance": 1.84, "name": "Molten Impact", "rotation": "C" }, - { "chance": 1.84, "name": "Barrel Diffusion", "rotation": "C" }, - { "chance": 1.84, "name": "Streamline", "rotation": "C" }, - { "chance": 1.84, "name": "Intensify", "rotation": "C" }, - { "chance": 0.4, "name": "Thunderbolt", "rotation": "C" }, - { "chance": 7.59, "name": "80 Endo", "rotation": "C" }, - { "chance": 1.84, "name": "80 Endo", "rotation": "C" }, - { "chance": 0.4, "name": "True Punishment", "rotation": "C" }, - { "chance": 0.4, "name": "Quickening", "rotation": "C" }, - { "chance": 0.4, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 0.4, "name": "Life Strike", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 7.59, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 1.84, "name": "Neo N23 Relic", "rotation": "C" } - ], - "ClanNode7": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode400": [ - { "chance": 6.67, "name": "Lith G6 Relic" }, - { "chance": 6.67, "name": "Lith G6 Relic" }, - { "chance": 6.67, "name": "Lith W3 Relic" }, - { "chance": 6.67, "name": "Lith W3 Relic" }, - { "chance": 6.67, "name": "Lith S15 Relic" }, - { "chance": 6.67, "name": "Lith S15 Relic" }, - { "chance": 6.67, "name": "Lith S14 Relic" }, - { "chance": 6.67, "name": "Lith S14 Relic" }, - { "chance": 6.67, "name": "Lith B11 Relic" }, - { "chance": 6.67, "name": "Lith B11 Relic" }, - { "chance": 6.67, "name": "Lith H9 Relic" }, - { "chance": 6.67, "name": "Lith H9 Relic" }, - { "chance": 6.67, "name": "Lith R3 Relic" }, - { "chance": 6.67, "name": "Lith R3 Relic" }, - { "chance": 6.67, "name": "Aya" } - ], - "SolNode401": [ - { "chance": 6.67, "name": "Lith G6 Relic" }, - { "chance": 6.67, "name": "Lith G6 Relic" }, - { "chance": 6.67, "name": "Lith W3 Relic" }, - { "chance": 6.67, "name": "Lith W3 Relic" }, - { "chance": 6.67, "name": "Lith S15 Relic" }, - { "chance": 6.67, "name": "Lith S15 Relic" }, - { "chance": 6.67, "name": "Lith S14 Relic" }, - { "chance": 6.67, "name": "Lith S14 Relic" }, - { "chance": 6.67, "name": "Lith B11 Relic" }, - { "chance": 6.67, "name": "Lith B11 Relic" }, - { "chance": 6.67, "name": "Lith H9 Relic" }, - { "chance": 6.67, "name": "Lith H9 Relic" }, - { "chance": 6.67, "name": "Lith R3 Relic" }, - { "chance": 6.67, "name": "Lith R3 Relic" }, - { "chance": 6.67, "name": "Aya" } - ], - "SolNode402": [ - { "chance": 6.67, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Aya", "rotation": "A" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Aya", "rotation": "B" }, - { "chance": 2.05, "name": "Aya", "rotation": "B" }, - { "chance": 2.05, "name": "Aya", "rotation": "B" }, - { "chance": 6.67, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Lith R3 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 6.67, "name": "Aya", "rotation": "C" } - ], - "SolNode403": [ - { "chance": 6.67, "name": "Lith G6 Relic" }, - { "chance": 6.67, "name": "Lith W3 Relic" }, - { "chance": 6.67, "name": "Lith S15 Relic" }, - { "chance": 6.67, "name": "Lith S14 Relic" }, - { "chance": 6.67, "name": "Lith B11 Relic" }, - { "chance": 6.67, "name": "Lith W3 Relic" }, - { "chance": 6.67, "name": "Lith R3 Relic" }, - { "chance": 6.67, "name": "Meso P11 Relic" }, - { "chance": 6.67, "name": "Meso G5 Relic" }, - { "chance": 6.67, "name": "Meso K6 Relic" }, - { "chance": 6.67, "name": "Meso P13 Relic" }, - { "chance": 6.67, "name": "Meso C8 Relic" }, - { "chance": 6.67, "name": "Meso K4 Relic" }, - { "chance": 6.67, "name": "Meso S12 Relic" }, - { "chance": 6.67, "name": "Aya" } - ], - "SolNode404": [ - { "chance": 33.33, "name": "5,000 Credits Cache", "rotation": "A" }, - { "chance": 33.33, "name": "5,000 Credits Cache", "rotation": "A" }, - { "chance": 33.33, "name": "5,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, - { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 18.88, "name": "600 Endo", "rotation": "C" }, - { "chance": 18.88, "name": "600 Endo", "rotation": "C" }, - { "chance": 18.88, "name": "600 Endo", "rotation": "C" }, - { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, - { "chance": 18.88, "name": "Neurodes", "rotation": "C" }, - { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, - { "chance": 3.67, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 3.67, "name": "Bullet Dance", "rotation": "C" }, - { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } - ], - "SolNode405": [ - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 2.05, "name": "Aya", "rotation": "A" }, - { "chance": 2.05, "name": "Aya", "rotation": "A" }, - { "chance": 2.05, "name": "Aya", "rotation": "A" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 2.05, "name": "Aya", "rotation": "B" }, - { "chance": 2.05, "name": "Aya", "rotation": "B" }, - { "chance": 2.05, "name": "Aya", "rotation": "B" }, - { "chance": 6.49, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 1.29, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Neo N23 Relic", "rotation": "C" }, - { "chance": 6.49, "name": "Aya", "rotation": "C" }, - { "chance": 1.29, "name": "Aya", "rotation": "C" } - ], - "SolNode406": [ - { "chance": 6.67, "name": "Meso P11 Relic" }, - { "chance": 6.67, "name": "Meso G5 Relic" }, - { "chance": 6.67, "name": "Meso K6 Relic" }, - { "chance": 6.67, "name": "Meso P13 Relic" }, - { "chance": 6.67, "name": "Meso C8 Relic" }, - { "chance": 6.67, "name": "Meso K4 Relic" }, - { "chance": 6.67, "name": "Meso S12 Relic" }, - { "chance": 6.67, "name": "Neo F2 Relic" }, - { "chance": 6.67, "name": "Neo T7 Relic" }, - { "chance": 6.67, "name": "Neo K5 Relic" }, - { "chance": 6.67, "name": "Neo D7 Relic" }, - { "chance": 6.67, "name": "Neo C4 Relic" }, - { "chance": 6.67, "name": "Neo L3 Relic" }, - { "chance": 6.67, "name": "Neo N23 Relic" }, - { "chance": 6.67, "name": "Aya" } - ], - "SolNode407": [ - { "chance": 6.67, "name": "Meso P11 Relic" }, - { "chance": 6.67, "name": "Meso G5 Relic" }, - { "chance": 6.67, "name": "Meso K6 Relic" }, - { "chance": 6.67, "name": "Meso P13 Relic" }, - { "chance": 6.67, "name": "Meso C8 Relic" }, - { "chance": 6.67, "name": "Meso K4 Relic" }, - { "chance": 6.67, "name": "Meso S12 Relic" }, - { "chance": 6.67, "name": "Neo F2 Relic" }, - { "chance": 6.67, "name": "Neo T7 Relic" }, - { "chance": 6.67, "name": "Neo K5 Relic" }, - { "chance": 6.67, "name": "Neo D7 Relic" }, - { "chance": 6.67, "name": "Neo C4 Relic" }, - { "chance": 6.67, "name": "Neo L3 Relic" }, - { "chance": 6.67, "name": "Neo N23 Relic" }, - { "chance": 6.67, "name": "Aya" } - ], - "SolNode408": [ - { "chance": 6.96, "name": "Meso P11 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Meso G5 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Meso K6 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Meso P13 Relic", "rotation": "A" }, - { "chance": 1.29, "name": "Meso C8 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Meso K4 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Meso S12 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Aya", "rotation": "A" }, - { "chance": 6.96, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 6.96, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 1.29, "name": "Aya", "rotation": "A" }, - { "chance": 9.09, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 9.09, "name": "Aya", "rotation": "B" }, - { "chance": 9.68, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Neo N23 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Aya", "rotation": "C" }, - { "chance": 2.82, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 2.82, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 2.82, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 2.82, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 2.82, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 2.82, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 2.82, "name": "Axi H7 Relic", "rotation": "C" }, - { "chance": 2.82, "name": "Aya", "rotation": "C" } - ], - "SolNode409": [ - { "chance": 9.09, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Aya", "rotation": "A" }, - { "chance": 12.5, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Aya", "rotation": "B" }, - { "chance": 10.84, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi H7 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi H7 Relic", "rotation": "C" }, - { "chance": 22.11, "name": "Aya", "rotation": "C" } - ], - "SolNode410": [ - { "chance": 6.25, "name": "Neo F2 Relic" }, - { "chance": 6.25, "name": "Neo T7 Relic" }, - { "chance": 6.25, "name": "Neo K5 Relic" }, - { "chance": 6.25, "name": "Neo D7 Relic" }, - { "chance": 6.25, "name": "Neo C4 Relic" }, - { "chance": 6.25, "name": "Neo C4 Relic" }, - { "chance": 6.25, "name": "Neo L3 Relic" }, - { "chance": 6.25, "name": "Axi H6 Relic" }, - { "chance": 6.25, "name": "Axi A16 Relic" }, - { "chance": 6.25, "name": "Axi G10 Relic" }, - { "chance": 6.25, "name": "Axi B6 Relic" }, - { "chance": 6.25, "name": "Axi K11 Relic" }, - { "chance": 6.25, "name": "Axi W3 Relic" }, - { "chance": 6.25, "name": "Axi H7 Relic" }, - { "chance": 6.25, "name": "Aya" }, - { "chance": 6.25, "name": "Aya" } - ], - "SolNode411": [ - { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, - { "chance": 15.18, "name": "400 Endo", "rotation": "B" }, - { "chance": 15.18, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 15.18, "name": "400X Circuits", "rotation": "B" }, - { "chance": 15.18, "name": "400X Rubedo", "rotation": "B" }, - { "chance": 15.18, "name": "300X Plastids", "rotation": "B" }, - { "chance": 25.29, "name": "600 Endo", "rotation": "C" }, - { "chance": 25.29, "name": "600 Endo", "rotation": "C" }, - { "chance": 4.42, "name": "600 Endo", "rotation": "C" }, - { "chance": 25.29, "name": "Neurodes", "rotation": "C" }, - { "chance": 4.42, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 4.42, "name": "2X Gallium", "rotation": "C" }, - { "chance": 4.42, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 4.42, "name": "Bullet Dance", "rotation": "C" }, - { "chance": 1.01, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 1.01, "name": "Xiphos Avionics Blueprint", "rotation": "C" } - ], - "SolNode412": [ - { "chance": 9.09, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Aya", "rotation": "A" }, - { "chance": 12.5, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Aya", "rotation": "B" }, - { "chance": 10.84, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 10.84, "name": "Axi H7 Relic", "rotation": "C" }, - { "chance": 0.29, "name": "Axi H7 Relic", "rotation": "C" }, - { "chance": 22.11, "name": "Aya", "rotation": "C" } - ], - "SettlementNode3": [ - { "chance": 50, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 50, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.69, "name": "Parry", "rotation": "B" }, - { "chance": 7.69, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.69, "name": "Serration", "rotation": "B" }, - { "chance": 7.69, "name": "Incendiary Coat", "rotation": "B" }, - { "chance": 7.69, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.69, "name": "Intensify", "rotation": "B" }, - { "chance": 7.69, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 7.69, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Cleanse Grineer", "rotation": "C" }, - { "chance": 11.06, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SettlementNode2": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SettlementNode12": [ - { "chance": 100, "name": "Vapor Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "C" } - ], - "SettlementNode10": [ - { "chance": 16.67, "name": "Tempered Blade", "rotation": "A" }, - { "chance": 16.67, "name": "Sudden Impact", "rotation": "A" }, - { "chance": 16.67, "name": "Poisonous Sting", "rotation": "A" }, - { "chance": 16.67, "name": "Glacial Edge", "rotation": "A" }, - { "chance": 16.67, "name": "Conductive Blade", "rotation": "A" }, - { "chance": 16.67, "name": "Furor", "rotation": "A" }, - { "chance": 3.76, "name": "Extend", "rotation": "B" }, - { "chance": 3.76, "name": "Superior Defenses", "rotation": "B" }, - { "chance": 3.76, "name": "Cutting Edge", "rotation": "B" }, - { "chance": 3.76, "name": "System Reroute", "rotation": "B" }, - { "chance": 3.76, "name": "Efficient Transferral", "rotation": "B" }, - { "chance": 3.76, "name": "Blazing Steel", "rotation": "B" }, - { "chance": 77.44, "name": "150 Endo", "rotation": "B" }, - { "chance": 7.52, "name": "Meteor Crash", "rotation": "C" }, - { "chance": 7.52, "name": "Nebula Bore", "rotation": "C" }, - { "chance": 7.52, "name": "Astral Slash", "rotation": "C" }, - { "chance": 9.68, "name": "400 Endo", "rotation": "C" }, - { "chance": 9.68, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 9.68, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SettlementNode11": [ - { "chance": 9.09, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 9.09, "name": "Trick Mag", "rotation": "A" }, - { "chance": 9.09, "name": "Pressure Point", "rotation": "A" }, - { "chance": 9.09, "name": "Ammo Drum", "rotation": "A" }, - { "chance": 9.09, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 9.09, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 8.33, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 8.33, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 8.33, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 8.33, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 8.33, "name": "100 Endo", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 8.33, "name": "Metal Auger", "rotation": "C" }, - { "chance": 8.33, "name": "Ravage", "rotation": "C" }, - { "chance": 8.33, "name": "Continuity", "rotation": "C" }, - { "chance": 8.33, "name": "Master Thief", "rotation": "C" }, - { "chance": 8.33, "name": "200 Endo", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 8.33, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SettlementNode14": [ - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "1,500 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "100 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "Reflection", "rotation": "A" }, - { "chance": 14.29, "name": "Reflex Guard", "rotation": "A" }, - { "chance": 14.29, "name": "Parry", "rotation": "A" }, - { "chance": 14.29, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 10, "name": "Master Key", "rotation": "C" }, - { "chance": 10, "name": "Reflection", "rotation": "C" }, - { "chance": 10, "name": "Parry", "rotation": "C" }, - { "chance": 10, "name": "Heavy Impact", "rotation": "C" }, - { "chance": 10, "name": "Serration", "rotation": "C" }, - { "chance": 10, "name": "Hornet Strike", "rotation": "C" }, - { "chance": 10, "name": "Metal Auger", "rotation": "C" }, - { "chance": 10, "name": "Volcanic Edge", "rotation": "C" }, - { "chance": 10, "name": "Vicious Frost", "rotation": "C" }, - { "chance": 10, "name": "Ivara Systems Blueprint", "rotation": "C" } - ], - "ClanNode10": [ - { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 13.92, "name": "2,000 Credits Cache", "rotation": "A" }, - { "chance": 13.92, "name": "100 Endo", "rotation": "A" }, - { "chance": 13.92, "name": "100 Endo", "rotation": "A" }, - { "chance": 13.92, "name": "100 Endo", "rotation": "A" }, - { "chance": 2.58, "name": "Smite Corrupted", "rotation": "A" }, - { "chance": 6, "name": "Harrow Systems Blueprint", "rotation": "B" }, - { "chance": 8, "name": "Expel Corrupted", "rotation": "B" }, - { "chance": 8, "name": "Cleanse Corrupted", "rotation": "B" }, - { "chance": 8, "name": "Bane Of Corrupted", "rotation": "B" }, - { "chance": 10, "name": "Lith G6 Relic", "rotation": "B" }, - { "chance": 10, "name": "Lith W3 Relic", "rotation": "B" }, - { "chance": 10, "name": "Lith S15 Relic", "rotation": "B" }, - { "chance": 10, "name": "Lith S14 Relic", "rotation": "B" }, - { "chance": 10, "name": "Lith B11 Relic", "rotation": "B" }, - { "chance": 10, "name": "Lith H9 Relic", "rotation": "B" }, - { "chance": 10, "name": "Lith R3 Relic", "rotation": "B" }, - { "chance": 15, "name": "Harrow Systems Blueprint", "rotation": "C" }, - { "chance": 15, "name": "Quickening", "rotation": "C" }, - { "chance": 10, "name": "Lith G6 Relic", "rotation": "C" }, - { "chance": 10, "name": "Lith W3 Relic", "rotation": "C" }, - { "chance": 10, "name": "Lith S15 Relic", "rotation": "C" }, - { "chance": 10, "name": "Lith S14 Relic", "rotation": "C" }, - { "chance": 10, "name": "Lith B11 Relic", "rotation": "C" }, - { "chance": 10, "name": "Lith H9 Relic", "rotation": "C" }, - { "chance": 10, "name": "Lith R3 Relic", "rotation": "C" } - ], - "SettlementNode20": [ - { "chance": 38.72, "name": "Mag Neuroptics Blueprint" }, - { "chance": 38.72, "name": "Mag Chassis Blueprint" }, - { "chance": 22.56, "name": "Mag Systems Blueprint" } - ], - "ClanNode11": [ - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 16.67, "name": "100 Endo", "rotation": "A" }, - { "chance": 7.14, "name": "Provoked", "rotation": "B" }, - { "chance": 7.14, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 7.14, "name": "Serration", "rotation": "B" }, - { "chance": 7.14, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.14, "name": "Fast Deflection", "rotation": "B" }, - { "chance": 7.14, "name": "Charged Shell", "rotation": "B" }, - { "chance": 7.14, "name": "Vital Sense", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P11 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso G5 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K6 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso P13 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso C8 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso K4 Relic", "rotation": "B" }, - { "chance": 7.14, "name": "Meso S12 Relic", "rotation": "B" }, - { "chance": 11.28, "name": "Quickening", "rotation": "C" }, - { "chance": 11.28, "name": "Enduring Strike", "rotation": "C" }, - { "chance": 11.06, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode707": [ - { "chance": 11.11, "name": "250 Endo", "rotation": "A" }, - { "chance": 11.11, "name": "250 Endo", "rotation": "A" }, - { "chance": 11.11, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 38.72, "name": "250 Endo", "rotation": "B" }, - { "chance": 38.72, "name": "250 Endo", "rotation": "B" }, - { "chance": 22.56, "name": "Mutalist Alad V Nav Coordinate", "rotation": "B" }, - { "chance": 22.56, "name": "Forma Blueprint", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" } - ], - "SolNode710": [ - { "chance": 14.29, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 14.29, "name": "200 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "200 Endo", "rotation": "A" }, - { "chance": 14.29, "name": "1000X Nano Spores", "rotation": "A" }, - { "chance": 14.29, "name": "Thief's Wit", "rotation": "A" }, - { "chance": 14.29, "name": "3X Mutagen Sample", "rotation": "A" }, - { "chance": 15.18, "name": "5,000 Credits Cache", "rotation": "B" }, - { "chance": 15.18, "name": "5,000 Credits Cache", "rotation": "B" }, - { "chance": 15.18, "name": "200 Endo", "rotation": "B" }, - { "chance": 15.18, "name": "200 Endo", "rotation": "B" }, - { "chance": 15.18, "name": "Neurodes", "rotation": "B" }, - { "chance": 4.42, "name": "2X Neurodes", "rotation": "B" }, - { "chance": 2.01, "name": "Mutalist Alad V Nav Coordinate", "rotation": "B" }, - { "chance": 4.42, "name": "Cleanse Infested", "rotation": "B" }, - { "chance": 4.42, "name": "Bane Of Infested", "rotation": "B" }, - { "chance": 4.42, "name": "Smite Infested", "rotation": "B" }, - { "chance": 4.42, "name": "Expel Infested", "rotation": "B" }, - { "chance": 19.36, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 3.76, "name": "2X Argon Crystal", "rotation": "C" }, - { "chance": 19.36, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 3.76, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 19.36, "name": "Neural Sensors", "rotation": "C" }, - { "chance": 3.76, "name": "2X Neural Sensors", "rotation": "C" }, - { "chance": 19.36, "name": "400 Endo", "rotation": "C" }, - { "chance": 3.76, "name": "400 Endo", "rotation": "C" }, - { "chance": 3.76, "name": "Enemy Sense", "rotation": "C" }, - { "chance": 3.76, "name": "Master Thief", "rotation": "C" } - ], - "SolNode711": [ - { "chance": 11.11, "name": "400 Endo", "rotation": "A" }, - { "chance": 11.11, "name": "400 Endo", "rotation": "A" }, - { "chance": 11.11, "name": "Lith G6 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith W3 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith S15 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith S14 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith B11 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith H9 Relic", "rotation": "A" }, - { "chance": 11.11, "name": "Lith R3 Relic", "rotation": "A" }, - { "chance": 12.5, "name": "Mutalist Alad V Nav Coordinate", "rotation": "B" }, - { "chance": 12.5, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 12.5, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 22.56, "name": "Octavia Neuroptics Blueprint", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode712": [ - { "chance": 33.33, "name": "Nekros Chassis Blueprint" }, - { "chance": 33.33, "name": "Nekros Neuroptics Blueprint" }, - { "chance": 33.33, "name": "Nekros Systems Blueprint" } - ], - "SolNode300": [ - { "chance": 12.91, "name": "400 Endo", "rotation": "A" }, - { "chance": 12.91, "name": "400 Endo", "rotation": "A" }, - { "chance": 12.91, "name": "400 Endo", "rotation": "A" }, - { "chance": 12.91, "name": "300X Polymer Bundle", "rotation": "A" }, - { "chance": 12.91, "name": "350X Rubedo", "rotation": "A" }, - { "chance": 12.91, "name": "300X Plastids", "rotation": "A" }, - { "chance": 22.56, "name": "Octavia Systems Blueprint", "rotation": "A" }, - { "chance": 25.29, "name": "2,500 Credits Cache", "rotation": "B" }, - { "chance": 25.29, "name": "3,000 Credits Cache", "rotation": "B" }, - { "chance": 25.29, "name": "4,000 Credits Cache", "rotation": "B" }, - { "chance": 22.11, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 1.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 10.82, "name": "600 Endo", "rotation": "C" }, - { "chance": 10.82, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 10.82, "name": "Gallium", "rotation": "C" }, - { "chance": 10.82, "name": "Neurodes", "rotation": "C" }, - { "chance": 10.82, "name": "2X Gallium", "rotation": "C" }, - { "chance": 10.82, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 10.82, "name": "2X Neurodes", "rotation": "C" }, - { "chance": 10.82, "name": "Tellurium", "rotation": "C" }, - { "chance": 10.82, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 1.29, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 1.29, "name": "Xiphos Engines Blueprint", "rotation": "C" } - ], - "SolNode306": [ - { "chance": 12.18, "name": "Blood Rush", "rotation": "A" }, - { "chance": 12.18, "name": "Hydraulic Crosshairs", "rotation": "A" }, - { "chance": 12.18, "name": "Shrapnel Shot", "rotation": "A" }, - { "chance": 12.18, "name": "100 Endo", "rotation": "A" }, - { "chance": 12.18, "name": "Fast Hands", "rotation": "A" }, - { "chance": 12.18, "name": "Point Strike", "rotation": "A" }, - { "chance": 12.18, "name": "Piercing Hit", "rotation": "A" }, - { "chance": 12.18, "name": "Pistol Gambit", "rotation": "A" }, - { "chance": 1.29, "name": "Gnashing Payara", "rotation": "A" }, - { "chance": 1.29, "name": "Astral Twilight", "rotation": "A" }, - { "chance": 7.49, "name": "Focused Defense", "rotation": "B" }, - { "chance": 7.49, "name": "Catalyzer Link", "rotation": "B" }, - { "chance": 7.49, "name": "Target Cracker", "rotation": "B" }, - { "chance": 7.49, "name": "No Return", "rotation": "B" }, - { "chance": 7.49, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 7.49, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 7.49, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 7.49, "name": "North Wind", "rotation": "B" }, - { "chance": 7.49, "name": "Cryo Rounds", "rotation": "B" }, - { "chance": 7.49, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 7.49, "name": "Streamline", "rotation": "B" }, - { "chance": 7.49, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 7.49, "name": "Stormbringer", "rotation": "B" }, - { "chance": 1.29, "name": "High Noon", "rotation": "B" }, - { "chance": 1.29, "name": "Crushing Ruin", "rotation": "B" }, - { "chance": 7.37, "name": "Rime Rounds", "rotation": "C" }, - { "chance": 7.37, "name": "Scattering Inferno", "rotation": "C" }, - { "chance": 37.94, "name": "Failsafe", "rotation": "C" }, - { "chance": 37.94, "name": "Coiling Viper", "rotation": "C" }, - { "chance": 2.01, "name": "Cleaving Whirlwind", "rotation": "C" }, - { "chance": 7.37, "name": "Ivara Chassis Blueprint", "rotation": "C" } - ], - "SolNode302": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 3.76, "name": "Cleanse Infested", "rotation": "C" }, - { "chance": 3.76, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 3.76, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode304": [ - { "chance": 10.84, "name": "Vitality" }, - { "chance": 10.84, "name": "Fast Deflection" }, - { "chance": 11.06, "name": "Rush" }, - { "chance": 10.84, "name": "Magazine Warp" }, - { "chance": 10.84, "name": "Trick Mag" }, - { "chance": 0.34, "name": "Pressure Point" }, - { "chance": 11.06, "name": "Ammo Drum" }, - { "chance": 10.84, "name": "Fast Hands" }, - { "chance": 10.84, "name": "Quickdraw" }, - { "chance": 10.84, "name": "Health Restore (Large)" }, - { "chance": 0.34, "name": "Omni Ammo Box" }, - { "chance": 0.34, "name": "North Wind" }, - { "chance": 0.34, "name": "Shocking Touch" }, - { "chance": 0.34, "name": "Molten Impact" }, - { "chance": 0.34, "name": "Stretch" } - ], - "SolNode307": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ], - "SolNode308": [ - { "chance": 14.29, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 14.29, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 14.29, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 12.42, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 12.42, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 12.42, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 8.05, "name": "Lua Lens Blueprint", "rotation": "C" }, - { "chance": 5.03, "name": "Universal Medallion", "rotation": "C" }, - { "chance": 12.42, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 12.42, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 12.42, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 12.42, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode742": [ - { "chance": 10, "name": "Vitality", "rotation": "A" }, - { "chance": 10, "name": "Magazine Warp", "rotation": "A" }, - { "chance": 10, "name": "Trick Mag", "rotation": "A" }, - { "chance": 10, "name": "Neo F2 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo T7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo K5 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo D7 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo C4 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo L3 Relic", "rotation": "A" }, - { "chance": 10, "name": "Neo N23 Relic", "rotation": "A" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Reflex Coil", "rotation": "B" }, - { "chance": 6.67, "name": "Deep Freeze", "rotation": "B" }, - { "chance": 6.67, "name": "North Wind", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Streamline", "rotation": "B" }, - { "chance": 6.67, "name": "Shocking Touch", "rotation": "B" }, - { "chance": 6.67, "name": "200 Endo", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi A16 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi G10 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi B6 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi K11 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi W3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Axi H7 Relic", "rotation": "B" }, - { "chance": 2.26, "name": "Vital Sense", "rotation": "C" }, - { "chance": 2.26, "name": "Metal Auger", "rotation": "C" }, - { "chance": 2.26, "name": "Ravage", "rotation": "C" }, - { "chance": 2.26, "name": "Stretch", "rotation": "C" }, - { "chance": 2.26, "name": "Handspring", "rotation": "C" }, - { "chance": 2.26, "name": "Convulsion", "rotation": "C" }, - { "chance": 2.26, "name": "Split Chamber", "rotation": "C" }, - { "chance": 2.26, "name": "Continuity", "rotation": "C" }, - { "chance": 2.26, "name": "Master Thief", "rotation": "C" }, - { "chance": 2.26, "name": "400 Endo", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Axi H7 Relic", "rotation": "C" } - ], - "SolNode744": [ - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "3,000 Credits Cache", "rotation": "A" }, - { "chance": 25, "name": "400 Endo", "rotation": "A" }, - { "chance": 6.67, "name": "Steel Fiber", "rotation": "B" }, - { "chance": 6.67, "name": "Stretch", "rotation": "B" }, - { "chance": 6.67, "name": "Serration", "rotation": "B" }, - { "chance": 6.67, "name": "Hell's Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Hornet Strike", "rotation": "B" }, - { "chance": 6.67, "name": "Flow", "rotation": "B" }, - { "chance": 6.67, "name": "Split Chamber", "rotation": "B" }, - { "chance": 6.67, "name": "Stabilizer", "rotation": "B" }, - { "chance": 6.67, "name": "Neo F2 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo T7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo K5 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo D7 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo C4 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo L3 Relic", "rotation": "B" }, - { "chance": 6.67, "name": "Neo N23 Relic", "rotation": "B" }, - { "chance": 4, "name": "Pistol Ammo Mutation", "rotation": "C" }, - { "chance": 4, "name": "Arrow Mutation", "rotation": "C" }, - { "chance": 4, "name": "Rifle Ammo Mutation", "rotation": "C" }, - { "chance": 4, "name": "Sniper Ammo Mutation", "rotation": "C" }, - { "chance": 4, "name": "Shotgun Ammo Mutation", "rotation": "C" }, - { "chance": 8, "name": "Axi H6 Relic", "rotation": "C" }, - { "chance": 8, "name": "Axi A16 Relic", "rotation": "C" }, - { "chance": 8, "name": "Axi G10 Relic", "rotation": "C" }, - { "chance": 8, "name": "Axi B6 Relic", "rotation": "C" }, - { "chance": 8, "name": "Axi K11 Relic", "rotation": "C" }, - { "chance": 8, "name": "Axi W3 Relic", "rotation": "C" }, - { "chance": 8, "name": "Axi H7 Relic", "rotation": "C" }, - { "chance": 12, "name": "Harrow Neuroptics Blueprint", "rotation": "C" }, - { "chance": 12, "name": "Harrow Systems Blueprint", "rotation": "C" } - ], - "SolNode745": [ - { "chance": 100, "name": "100X Kuva", "rotation": "A" }, - { "chance": 100, "name": "200X Kuva", "rotation": "B" }, - { "chance": 95, "name": "350X Kuva", "rotation": "C" }, - { "chance": 5, "name": "Universal Medallion", "rotation": "C" } - ], - "SolNode746": [ - { "chance": 100, "name": "10,000 Credits Cache", "rotation": "A" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 11.06, "name": "400 Endo", "rotation": "B" }, - { "chance": 2.01, "name": "400 Endo", "rotation": "B" }, - { "chance": 12.65, "name": "400X Circuits", "rotation": "B" }, - { "chance": 12.65, "name": "400X Rubedo", "rotation": "B" }, - { "chance": 12.65, "name": "300X Plastids", "rotation": "B" }, - { "chance": 10.79, "name": "600 Endo", "rotation": "C" }, - { "chance": 10.79, "name": "600 Endo", "rotation": "C" }, - { "chance": 10.79, "name": "600 Endo", "rotation": "C" }, - { "chance": 3.67, "name": "600 Endo", "rotation": "C" }, - { "chance": 10.79, "name": "Orokin Cell", "rotation": "C" }, - { "chance": 10.79, "name": "Gallium", "rotation": "C" }, - { "chance": 10.79, "name": "Neurodes", "rotation": "C" }, - { "chance": 10.79, "name": "Cyclone Kraken", "rotation": "C" }, - { "chance": 3.67, "name": "2X Orokin Cell", "rotation": "C" }, - { "chance": 3.67, "name": "2X Gallium", "rotation": "C" }, - { "chance": 3.67, "name": "2X Neural Sensors", "rotation": "C" }, - { "chance": 3.67, "name": "Argon Crystal", "rotation": "C" }, - { "chance": 3.67, "name": "Tellurium", "rotation": "C" }, - { "chance": 2, "name": "Nitain Extract", "rotation": "C" }, - { "chance": 0.5, "name": "Xiphos Avionics Blueprint", "rotation": "C" } - ], - "SolNode747": [ - { "chance": 20, "name": "2,500 Credits Cache", "rotation": "A" }, - { "chance": 16.67, "name": "Harrow Neuroptics Blueprint", "rotation": "A" }, - { "chance": 13.33, "name": "Steady Hands", "rotation": "A" }, - { "chance": 13.33, "name": "Stabilizer", "rotation": "A" }, - { "chance": 13.33, "name": "Power Throw", "rotation": "A" }, - { "chance": 13.33, "name": "Stretch", "rotation": "A" }, - { "chance": 10, "name": "200 Endo", "rotation": "A" }, - { "chance": 10, "name": "Untraceable", "rotation": "B" }, - { "chance": 10, "name": "Runtime", "rotation": "B" }, - { "chance": 10, "name": "Scorch", "rotation": "B" }, - { "chance": 10, "name": "Thermite Rounds", "rotation": "B" }, - { "chance": 10, "name": "Frostbite", "rotation": "B" }, - { "chance": 10, "name": "Frigid Blast", "rotation": "B" }, - { "chance": 10, "name": "Arrow Mutation", "rotation": "B" }, - { "chance": 10, "name": "Sniper Ammo Mutation", "rotation": "B" }, - { "chance": 10, "name": "Shotgun Ammo Mutation", "rotation": "B" }, - { "chance": 10, "name": "Covert Lethality", "rotation": "B" }, - { "chance": 11.06, "name": "Meso P11 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso G5 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K6 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso P13 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso C8 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso K4 Relic", "rotation": "C" }, - { "chance": 11.06, "name": "Meso S12 Relic", "rotation": "C" }, - { "chance": 3.22, "name": "Neo F2 Relic", "rotation": "C" }, - { "chance": 3.22, "name": "Neo T7 Relic", "rotation": "C" }, - { "chance": 3.22, "name": "Neo K5 Relic", "rotation": "C" }, - { "chance": 3.22, "name": "Neo D7 Relic", "rotation": "C" }, - { "chance": 3.22, "name": "Neo C4 Relic", "rotation": "C" }, - { "chance": 3.22, "name": "Neo L3 Relic", "rotation": "C" }, - { "chance": 3.22, "name": "Neo N23 Relic", "rotation": "C" } - ], - "SolNode748": [ - { "chance": 100, "name": "Phase Specter Blueprint", "rotation": "A" }, - { "chance": 100, "name": "Force Specter Blueprint", "rotation": "B" }, - { "chance": 100, "name": "Cosmic Specter Blueprint", "rotation": "C" } - ] -} -- 2.47.2 From ae3fe49d9528ad4a4ce95440376ececfa39ce371 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 02:39:51 +0200 Subject: [PATCH 204/522] cleanup: remove baseFocusPointCosts.json (#350) --- src/controllers/api/focusController.ts | 4 +- static/json/baseFocusPointCosts.json | 82 -------------------------- 2 files changed, 2 insertions(+), 84 deletions(-) delete mode 100644 static/json/baseFocusPointCosts.json diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index e13b6057..e625827f 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -3,7 +3,7 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory, addMiscItems } from "@/src/services/inventoryService"; import { IMiscItem, TFocusPolarity } from "@/src/types/inventoryTypes/inventoryTypes"; import { logger } from "@/src/utils/logger"; -import baseFocusPointCosts from "@/static/json/baseFocusPointCosts.json"; +import { ExportFocusUpgrades } from "warframe-public-export-plus"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const focusController: RequestHandler = async (req, res) => { @@ -45,7 +45,7 @@ export const focusController: RequestHandler = async (req, res) => { const inventory = await getInventory(accountId); let cost = 0; for (const focusType of request.FocusTypes) { - cost += baseFocusPointCosts[focusType as keyof typeof baseFocusPointCosts]; + cost += ExportFocusUpgrades[focusType].baseFocusPointCost; inventory.FocusUpgrades.push({ ItemType: focusType, Level: 0 }); } inventory.FocusXP[focusPolarity] -= cost; diff --git a/static/json/baseFocusPointCosts.json b/static/json/baseFocusPointCosts.json deleted file mode 100644 index 5f69e30b..00000000 --- a/static/json/baseFocusPointCosts.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "/Lotus/Upgrades/Focus/Attack/Active/AttackEfficiencyFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Attack/Active/BlastChargeFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Attack/Active/BlastFireballFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Attack/Active/CloakAttackChargeFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Attack/Active/CloakBlindFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Attack/Active/ConsecutiveEfficienyUpgrade": 60000, - "/Lotus/Upgrades/Focus/Attack/Active/ConsecutivePowerUpgrade": 95000, - "/Lotus/Upgrades/Focus/Attack/Active/DashDamageFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Attack/Active/DashFireFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Attack/Active/GhostWaveUpgrade": 60000, - "/Lotus/Upgrades/Focus/Attack/Active/GhostlyTouchUpgrade": 95000, - "/Lotus/Upgrades/Focus/Attack/Residual/ElementalDamageFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Attack/Residual/PhysicalDamageFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Attack/Residual/PowerSnapFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Attack/Stats/MoreAmmoFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Attack/Stats/RegenAmmoFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Defense/Active/BlastAllyShieldFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Defense/Active/BlastSelfShieldFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Defense/Active/CloakHealFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Defense/Active/CloakHealOthersFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Defense/Active/CloakShieldFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Defense/Active/DashImmunityFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Defense/Active/DashShockwaveFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Defense/Active/DefenseShieldBreakFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Defense/Active/DefenseShieldFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Defense/Active/SonicDissipationUpgrade": 60000, - "/Lotus/Upgrades/Focus/Defense/Residual/InstantReviveFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Defense/Residual/RadialXpFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Defense/Stats/HealthMaxFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Defense/Stats/HealthRegenFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Power/Active/BlastBurstFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Power/Active/BlastSlowFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Power/Active/CloakPullFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Power/Active/CloakStaticFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Power/Active/DashBubbleFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Power/Active/DashElectricityFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Power/Active/DisarmedEnergyUpgrade": 95000, - "/Lotus/Upgrades/Focus/Power/Active/DisarmingProjectionUpgrade": 60000, - "/Lotus/Upgrades/Focus/Power/Active/PowerFieldFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Power/Residual/EnergyOverTimeFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Power/Residual/FreeAbilityCastsFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Power/Residual/SlowHeadshotDamageFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Power/Stats/EnergyPoolFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Power/Stats/EnergyRestoreFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Tactic/Active/BlastConfuseFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Tactic/Active/BlastDisarmFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Tactic/Active/CloakMeleeCritFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Tactic/Active/CloakRevealFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Tactic/Active/ComboAmpDamageFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Tactic/Active/DashFinisherFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Tactic/Active/DashWaveFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Tactic/Active/FinisherTransferenceUpgrade": 95000, - "/Lotus/Upgrades/Focus/Tactic/Active/LiftHitDamageUpgrade": 95000, - "/Lotus/Upgrades/Focus/Tactic/Active/LiftHitWaveUpgrade": 60000, - "/Lotus/Upgrades/Focus/Tactic/Active/ProjectionExecutionUpgrade": 60000, - "/Lotus/Upgrades/Focus/Tactic/Active/ProjectionStretchUpgrade": 95000, - "/Lotus/Upgrades/Focus/Tactic/Active/SlamComboFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Tactic/Residual/MeleeComboFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Tactic/Residual/MeleeXpFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Tactic/Stats/DashSpeedFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Tactic/Stats/MoveSpeedFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Ward/Active/BlastBulletAttractorFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Ward/Active/BlastDamagePickupFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Ward/Active/ClearStaticOnKillFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Ward/Active/CloakAllyCloakFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Ward/Active/CloakReduceDamageFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Ward/Active/DashReduceArmourFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Ward/Active/DashReduceDamageFocusUpgrade": 80000, - "/Lotus/Upgrades/Focus/Ward/Active/InvulnerableReturnFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Ward/Active/KnockdownImmunityFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Ward/Active/MagneticExtensionUpgrade": 95000, - "/Lotus/Upgrades/Focus/Ward/Active/MagneticFieldFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Ward/Active/SunderingDissipationUpgrade": 60000, - "/Lotus/Upgrades/Focus/Ward/Active/UnairuWispFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Ward/Residual/ArmourBuffFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Ward/Residual/ReflectDamageFocusUpgrade": 25000, - "/Lotus/Upgrades/Focus/Ward/Residual/SecondChanceDamageBuffFocusUpgrade": 95000, - "/Lotus/Upgrades/Focus/Ward/Residual/SecondChanceFocusUpgrade": 60000, - "/Lotus/Upgrades/Focus/Ward/Stats/ArmourIncreaseFocusUpgrade": 50000, - "/Lotus/Upgrades/Focus/Ward/Stats/BlastRadiusFocusUpgrade": 50000 -} -- 2.47.2 From 53dab125551d78b7c97a7c5f39a09611630b9295 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 03:01:05 +0200 Subject: [PATCH 205/522] feat: implement unbinding of focus upgrades (#352) --- src/controllers/api/focusController.ts | 39 ++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index e625827f..0c7a7a3e 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -65,9 +65,6 @@ export const focusController: RequestHandler = async (req, res) => { cost += focusUpgrade.FocusXpCost; const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!; focusUpgradeDb.Level = focusUpgrade.Level; - if (focusUpgrade.IsUniversal) { - focusUpgradeDb.IsUniversal = true; - } } inventory.FocusXP[focusPolarity] -= cost; await inventory.save(); @@ -77,6 +74,36 @@ export const focusController: RequestHandler = async (req, res) => { }); break; } + case FocusOperation.UnbindUpgrade: { + const request = JSON.parse(req.body.toString()) as IUnbindUpgradeRequest; + const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]); + const inventory = await getInventory(accountId); + inventory.FocusXP[focusPolarity] -= 750_000; + addMiscItems(inventory, [ + { + ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem", + ItemCount: request.FocusTypes.length * -1 + } + ]); + request.FocusTypes.forEach(type => { + const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == type)!; + focusUpgradeDb.IsUniversal = true; + }); + await inventory.save(); + res.json({ + FocusTypes: request.FocusTypes, + FocusPointCosts: { + [focusPolarity]: 750_000 + }, + MiscItemCosts: [ + { + ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem", + ItemCount: request.FocusTypes.length + } + ] + }); + break; + } case FocusOperation.ConvertShard: { const request = JSON.parse(req.body.toString()) as IConvertShardRequest; // Tally XP @@ -110,6 +137,7 @@ enum FocusOperation { UnlockUpgrade = "3", LevelUpUpgrade = "4", ActivateWay = "5", + UnbindUpgrade = "8", ConvertShard = "9" } @@ -132,6 +160,11 @@ interface ILevelUpUpgradeRequest { }[]; } +interface IUnbindUpgradeRequest { + ShardTypes: string[]; + FocusTypes: string[]; +} + interface IConvertShardRequest { Shards: IMiscItem[]; Polarity: TFocusPolarity; -- 2.47.2 From 16b5b62518e90fa38014fecd708d34f7acf3498f Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 03:01:37 +0200 Subject: [PATCH 206/522] cleanup: remove exclude-mods.json (#351) --- .../custom/getItemListsController.ts | 9 +- static/json/exclude-mods.json | 253 ------------------ 2 files changed, 8 insertions(+), 254 deletions(-) delete mode 100644 static/json/exclude-mods.json diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 1f9417bf..d4b0ffc7 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,10 +1,10 @@ import { RequestHandler } from "express"; import { MinItem, items, getEnglishString } from "@/src/services/itemDataService"; -import badItems from "@/static/json/exclude-mods.json"; import { ExportArcanes, ExportGear, ExportResources, + ExportUpgrades, ExportWarframes, ExportWeapons } from "warframe-public-export-plus"; @@ -64,6 +64,13 @@ const getItemListsController: RequestHandler = (_req, res) => { }); } + const badItems: Record = {}; + for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) { + if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) { + badItems[uniqueName] = true; + } + } + res.json({ warframes: Object.entries(ExportWarframes) .filter(([_uniqueName, warframe]) => warframe.productCategory == "Suits") diff --git a/static/json/exclude-mods.json b/static/json/exclude-mods.json deleted file mode 100644 index 9134cb49..00000000 --- a/static/json/exclude-mods.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "/Lotus/Powersuits/Banshee/SonarPvPAugmentCard": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Archwing/Rifle/ArchwingEventRadiationFireIterationRifleMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Archwing/Rifle/PrimedArchwingDamageOnReloadMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Archwing/Rifle/PrimedArchwingRifleFireIterationsMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Hoverboard/HBFireWorksMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponCritChanceModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponCritFireRateBonusModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponFireDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponGlaivePowerthrowModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponGlaiveSpeedModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeChannelingEfficiencyModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeFactionDamageCorpusBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeFactionDamageGrineerBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponMeleeFactionDamageInfestedBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponStunChanceModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponCritChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponCritDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponCritFireRateBonusModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponElectricityDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponFireDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponFreezeDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponGlaivePowerthrowModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponGlaiveSpeedModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponMeleeChannelingEfficiencyModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponMeleeFinisherDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponPowerDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Expert/WeaponStunChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponMeleeChannelingEfficiencyeModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponMeleeFinisherDamageModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponMeleeRangeIncModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponPowerDamageModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/Intermediate/WeaponStunChanceModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Melee/WeaponMeleeDamageOnHeavyKillMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Necromech/NecromechSprintEfficiencyMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Nemesis/AvatarSentientArmourMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponAmmoMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponClipMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponDamageAmountModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFireDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFireIterationsModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPistolFactionDamageCorpusBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPistolFactionDamageGrineerBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPistolFactionDamageInfestedBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponPunctureDepthModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponReloadSpeedModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponStatusChanceModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Expert/PrimedWeaponElectricityDamageMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponAmmoMaxModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponCritDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponElectricityDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponFireIterationsModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponFireRateModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponFreezeDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponImpactDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponPistolZoomFovModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponPunctureDepthModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponRecoilReductionModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponStatusChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Expert/WeaponToxinDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponDamageAmountModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponPistolConvertAmmoModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponPistolZoomFovModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponRecoilReductionModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/Intermediate/WeaponStatusChanceModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Pistol/ProjectileExplosionChanceMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/PvPMods/Melee/AirborneMeleeAutoTargetBonus": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/PvPMods/Melee/GroundingMeleeMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/PvPMods/Rifle/MarkTargetAddDamageMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Randomized/LotusArchgunRandomModRare": "unveiled-riven", - "/Lotus/Upgrades/Mods/Randomized/LotusModularMeleeRandomModRare": "unveiled-riven", - "/Lotus/Upgrades/Mods/Randomized/LotusModularPistolRandomModRare": "unveiled-riven", - "/Lotus/Upgrades/Mods/Randomized/LotusPistolRandomModRare": "unveiled-riven", - "/Lotus/Upgrades/Mods/Randomized/LotusRifleRandomModRare": "unveiled-riven", - "/Lotus/Upgrades/Mods/Randomized/LotusShotgunRandomModRare": "unveiled-riven", - "/Lotus/Upgrades/Mods/Randomized/PlayerMeleeWeaponRandomModRare": "unveiled-riven", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponAmmoMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponCritChanceModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponDamageAmountModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFactionDamageCorpusBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFactionDamageGrineerBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFactionDamageInfestedBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFireIterationsModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponPunctureDepthModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponReloadSpeedModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponStatusChanceModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Expert/BowExplosionChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/SniperReloadDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponAmmoMaxModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponBowConvertAmmoModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponCritChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponCritDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponElectricityDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFactionDamageCorpusExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFactionDamageGrineerExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFactionDamageInfestedExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFireDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFireIterationsModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponFireRateModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponImpactDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponPunctureDepthModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponRecoilReductionModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponStatusChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponToxinDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Expert/WeaponZoomFovModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/BowExplosionChanceModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/SniperReloadDamageModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponBowConvertAmmoModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponDamageAmountModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponRecoilReductionModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponRifleConvertAmmoModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponSnipersConvertAmmoModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponStatusChanceModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Rifle/Intermediate/WeaponZoomFovModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Sentinel/Kubrow/ChargerFinisherMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponAmmoMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponArmorPiercingDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponClipMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponCritChanceModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponCritDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponDamageAmountModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponElectricityDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFireDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFireIterationsModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFireRateModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponFreezeDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponImpactDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponPunctureDepthModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponReloadSpeedModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponShotgunFactionDamageCorpusBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponShotgunFactionDamageGrineerBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponShotgunFactionDamageInfestedBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponSlashDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponStunChanceModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Beginner/WeaponToxinDamageModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponAmmoMaxModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponArmorPiercingDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponCritChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponFireDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponFireIterationsModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponFireRateModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponImpactDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponPunctureDepthModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponSlashDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponStunChanceModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Expert/WeaponToxinDamageModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Shotgun/Intermediate/WeaponShotgunConvertAmmoModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Syndicate/BallisticaMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityDurationModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityEfficiencyModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityRangeModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarAbilityStrengthModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarArmourModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceElectricityBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceFireBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceIceBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistanceLaserBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarDamageResistancePoisonBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarEnemyRadarModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarFallingImpactModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarGroundFireDmgModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarHealthMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarLootRadarModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarParryMeleeModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarParryReflectModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarPickupBonusModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarPowerMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarPowerToHealthOnDeathModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarShieldMaxModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarShieldRechargeRateModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarSlideBoostModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarSprintSpeedModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarTimeLimitIncreaseModBeginner": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarAbilityEfficiencyModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarAbilityRangeModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarAbilityStrengthModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarChanceToLootExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageReductionInAirExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceElectricityExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceFireExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceIceExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistanceLaserExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageResistancePoisonExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarDamageToEnergyModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarEnemyRadarModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarFallingImpactModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarKnockdownRecoveryModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarLootRadarModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarMissionSpecificResistanceIceExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarParryMeleeModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarParryReflectModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarRevengeDamageMeleeExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarShieldRechargeRateModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Expert/AvatarSprintSpeedModExpert": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarArmourModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarChanceToLootIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarDamageReductionInAirIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarDamageResistanceKnockdownIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarDamageToEnergyModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarGroundFireDmgModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarHealthMaxModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarKnockdownRecoveryModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarKnockdownResistanceModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarMissionSpecificResistanceIceIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarParryMeleeModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarRevengeDamageMeleeIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Intermediate/AvatarShieldMaxModIntermediate": "broken (beginner/intermediate)", - "/Lotus/Upgrades/Mods/Warframe/Kahl/KahlAvatarAbilityRangeSubMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Kahl/KahlAvatarAbilityStrengthSubMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/Kahl/KahlAvatarDropEnergySubMod": "unreleased/unobtainable", - "/Lotus/Upgrades/Mods/Warframe/AvatarDamageResistanceStun": "unreleased/unobtainable", - "/Lotus/Weapons/CrewShip/ElectricTether/ElectricTetherInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/Laser/Beam/RailJackBeamInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/Laser/Blaster/BlasterInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/Laser/Blaster/BlasterShotgunInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/Laser/PulseLaser/PulseLaserInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/MassDriver/AutoCannon/AutoCannonInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/ShrapnelShotgun/ShrapnelShotgunInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/CrewShipInnateDamageRandomMod": "innate-damage", - "/Lotus/Weapons/CrewShip/CrewShipInnateFireRateRandomMod": "innate-damage", - "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod": "innate-damage" -} -- 2.47.2 From 015619110c0f0f38462792e5bfec7dafcb571763 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 17:55:30 +0200 Subject: [PATCH 207/522] fix: unbinding both focus upgrades costs 750k focus instead of 1.5M (#360) --- src/controllers/api/focusController.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index 0c7a7a3e..ff0a9616 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -78,7 +78,7 @@ export const focusController: RequestHandler = async (req, res) => { const request = JSON.parse(req.body.toString()) as IUnbindUpgradeRequest; const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]); const inventory = await getInventory(accountId); - inventory.FocusXP[focusPolarity] -= 750_000; + inventory.FocusXP[focusPolarity] -= 750_000 * request.FocusTypes.length; addMiscItems(inventory, [ { ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem", @@ -93,7 +93,7 @@ export const focusController: RequestHandler = async (req, res) => { res.json({ FocusTypes: request.FocusTypes, FocusPointCosts: { - [focusPolarity]: 750_000 + [focusPolarity]: 750_000 * request.FocusTypes.length }, MiscItemCosts: [ { -- 2.47.2 From d0b8c8a1d3c98afb94bce4bc2ad7fb442d06da92 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 17:56:36 +0200 Subject: [PATCH 208/522] fix: endo pickups (#359) --- .../api/missionInventoryUpdateController.ts | 5 ++- src/services/missionInventoryUpdateService.ts | 33 ++++++++++++------- src/types/requestTypes.ts | 5 ++- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 46acdd34..e2723a51 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -4,6 +4,7 @@ import { combineRewardAndLootInventory, getRewards } from "@/src/services/missio import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes"; +import { logger } from "@/src/utils/logger"; /* **** INPUT **** - [ ] crossPlaySetting @@ -52,6 +53,8 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call const lootInventory = getJSONfromString(req.body.toString()) as IMissionInventoryUpdateRequest; + logger.debug("missionInventoryUpdate with lootInventory =", lootInventory); + const { InventoryChanges, MissionRewards } = getRewards(lootInventory); const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } = @@ -66,7 +69,7 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi TotalCredits, CreditsBonus, MissionCredits, - ...(FusionPoints !== undefined && { FusionPoints }) + FusionPoints }); } catch (err) { console.error("Error parsing JSON data:", err); diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index f7300837..ba8ec93c 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -54,12 +54,22 @@ const combineRewardAndLootInventory = ( const missionCredits = lootInventory.RegularCredits || 0; const creditsBonus = rewardInventory.RegularCredits || 0; const totalCredits = missionCredits + creditsBonus; - const FusionPoints = (lootInventory.FusionPoints || 0) + (rewardInventory.FusionPoints || 0) || undefined; + let FusionPoints = rewardInventory.FusionPoints || 0; + + // Discharge Endo picked up during the mission + if (lootInventory.FusionBundles) { + for (const fusionBundle of lootInventory.FusionBundles) { + if (fusionBundle.ItemType in fusionBundles) { + FusionPoints += fusionBundles[fusionBundle.ItemType] * fusionBundle.ItemCount; + } else { + logger.error(`unknown fusion bundle: ${fusionBundle.ItemType}`); + } + } + lootInventory.FusionBundles = undefined; + } lootInventory.RegularCredits = totalCredits; - if (FusionPoints) { - lootInventory.FusionPoints = FusionPoints; - } + lootInventory.FusionPoints = FusionPoints; inventoryFields.forEach((field: IInventoryFieldType) => { if (rewardInventory[field] && !lootInventory[field]) { lootInventory[field] = []; @@ -72,7 +82,7 @@ const combineRewardAndLootInventory = ( TotalCredits: [totalCredits, totalCredits], CreditsBonus: [creditsBonus, creditsBonus], MissionCredits: [missionCredits, missionCredits], - ...(FusionPoints !== undefined && { FusionPoints }) + FusionPoints: FusionPoints }; }; @@ -123,8 +133,9 @@ const creditBundles: Record = { }; const fusionBundles: Record = { - "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle": 50, - "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/RareFusionBundle": 80 + "/Lotus/Upgrades/Mods/FusionBundles/CommonFusionBundle": 15, + "/Lotus/Upgrades/Mods/FusionBundles/UncommonFusionBundle": 50, + "/Lotus/Upgrades/Mods/FusionBundles/RareFusionBundle": 80 }; const formatRewardsToInventoryType = ( @@ -136,12 +147,12 @@ const formatRewardsToInventoryType = ( if (reward.type in creditBundles) { InventoryChanges.RegularCredits ??= 0; InventoryChanges.RegularCredits += creditBundles[reward.type] * reward.itemCount; - } else if (reward.type in fusionBundles) { - InventoryChanges.FusionPoints ??= 0; - InventoryChanges.FusionPoints += fusionBundles[reward.type] * reward.itemCount; } else { const type = reward.type.replace("/Lotus/StoreItems/", "/Lotus/"); - if (type in ExportUpgrades) { + if (type in fusionBundles) { + InventoryChanges.FusionPoints ??= 0; + InventoryChanges.FusionPoints += fusionBundles[type] * reward.itemCount; + } else if (type in ExportUpgrades) { addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "RawUpgrades"); } else if (type in ExportGear) { addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "Consumables"); diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 7beb7a4e..c63052c0 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -7,6 +7,7 @@ import { ICrewShipSalvagedWeaponSkin, IEvolutionProgress, IMiscItem, + ITypeCount, IMission, IRawUpgrade, ISeasonChallenge @@ -45,6 +46,7 @@ export interface IMissionInventoryUpdateRequest { Pistols?: IEquipmentClient[]; Suits?: IEquipmentClient[]; Melee?: IEquipmentClient[]; + FusionBundles?: ITypeCount[]; RawUpgrades?: IRawUpgrade[]; MiscItems?: IMiscItem[]; Consumables?: IConsumable[]; @@ -52,9 +54,10 @@ export interface IMissionInventoryUpdateRequest { RegularCredits?: number; ChallengeProgress?: IChallengeProgress[]; RewardInfo?: IMissionInventoryUpdateRequestRewardInfo; - FusionPoints?: number; Missions?: IMission; EvolutionProgress?: IEvolutionProgress[]; + + FusionPoints?: number; // Not a part of the request, but we put it in this struct as an intermediate storage. } export interface IMissionInventoryUpdateRequestRewardInfo { -- 2.47.2 From e34cb305ada3b593aed99398179a12b3033f130f Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 18:40:51 +0200 Subject: [PATCH 209/522] feat: gravimag installation (#366) --- src/controllers/api/upgradesController.ts | 26 +++++++++++++------ .../inventoryTypes/commonInventoryTypes.ts | 1 + src/types/inventoryTypes/inventoryTypes.ts | 3 ++- src/types/requestTypes.ts | 5 ++-- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 9d89da70..d2f44558 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; import { FocusSchool, IEquipmentDatabase, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { IMiscItem, TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; @@ -29,7 +29,7 @@ export const upgradesController: RequestHandler = async (req, res) => { switch (operation.UpgradeRequirement) { case "/Lotus/Types/Items/MiscItems/OrokinReactor": case "/Lotus/Types/Items/MiscItems/OrokinCatalyst": - for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= EquipmentFeatures.DOUBLE_CAPACITY; @@ -39,7 +39,7 @@ export const upgradesController: RequestHandler = async (req, res) => { break; case "/Lotus/Types/Items/MiscItems/UtilityUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker": - for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= EquipmentFeatures.UTILITY_SLOT; @@ -47,10 +47,20 @@ export const upgradesController: RequestHandler = async (req, res) => { } } break; + case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst": + console.assert(payload.ItemCategory == "SpaceGuns"); + for (const item of inventory[payload.ItemCategory]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.Features ??= 0; + item.Features |= EquipmentFeatures.GRAVIMAG_INSTALLED; + break; + } + } + break; case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker": - for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory]) { if (item._id.toString() == payload.ItemId.$oid) { item.Features ??= 0; item.Features |= EquipmentFeatures.ARCANE_SLOT; @@ -62,7 +72,7 @@ export const upgradesController: RequestHandler = async (req, res) => { case "/Lotus/Types/Items/MiscItems/FormaUmbra": case "/Lotus/Types/Items/MiscItems/FormaAura": case "/Lotus/Types/Items/MiscItems/FormaStance": - for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory]) { if (item._id.toString() == payload.ItemId.$oid) { item.XP = 0; setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue); @@ -73,7 +83,7 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker": - for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory]) { if (item._id.toString() == payload.ItemId.$oid) { item.ModSlotPurchases ??= 0; item.ModSlotPurchases += 1; @@ -88,7 +98,7 @@ export const upgradesController: RequestHandler = async (req, res) => { } break; case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": - for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory]) { if (item._id.toString() == payload.ItemId.$oid) { item.CustomizationSlotPurchases ??= 0; item.CustomizationSlotPurchases += 1; @@ -104,7 +114,7 @@ export const upgradesController: RequestHandler = async (req, res) => { break; case "": console.assert(operation.OperationType == "UOT_SWAP_POLARITY"); - for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { + for (const item of inventory[payload.ItemCategory]) { if (item._id.toString() == payload.ItemId.$oid) { for (let i = 0; i != operation.PolarityRemap.length; ++i) { if (operation.PolarityRemap[i].Slot != i) { diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index 2c434311..758038c6 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -85,6 +85,7 @@ export interface IEquipmentClient extends Omit { export enum EquipmentFeatures { DOUBLE_CAPACITY = 1, UTILITY_SLOT = 2, + GRAVIMAG_INSTALLED = 4, ARCANE_SLOT = 32, INCARNON_GENESIS = 512 } diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 1555799b..b6570acd 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -66,7 +66,8 @@ export type TEquipmentKey = | "Melee" | "SpecialItems" | "Sentinels" - | "SentinelWeapons"; + | "SentinelWeapons" + | "SpaceGuns"; export interface IDuviriInfo { Seed: number; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index c63052c0..3da74724 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -10,7 +10,8 @@ import { ITypeCount, IMission, IRawUpgrade, - ISeasonChallenge + ISeasonChallenge, + TEquipmentKey } from "./inventoryTypes/inventoryTypes"; export interface IArtifactsRequest { @@ -85,7 +86,7 @@ export interface IUpdateGlyphRequest { } export interface IUpgradesRequest { - ItemCategory: string; + ItemCategory: TEquipmentKey; ItemId: IOid; ItemFeatures: number; UpgradeVersion: number; -- 2.47.2 From 8e8c77a3d59afbb45abdd573cf0b3278f27e68be Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 23:19:07 +0200 Subject: [PATCH 210/522] feat: implement purchasing of skins (#353) Co-authored-by: Sainan Co-authored-by: Ordis <134585663+OrdisPrime@users.noreply.github.com> --- src/models/inventoryModels/inventoryModel.ts | 13 ++++++++++--- src/services/inventoryService.ts | 20 +++++++++++++++++--- src/types/inventoryTypes/inventoryTypes.ts | 9 +++++++-- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 39a45024..bf2dffc5 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -31,7 +31,7 @@ import { IQuestKeyResponse, IFusionTreasure, ISpectreLoadout, - IWeaponSkin, + IWeaponSkinDatabase, ITauntHistory, IPeriodicMissionCompletionDatabase, IPeriodicMissionCompletionResponse, @@ -514,7 +514,7 @@ const spectreLoadoutsSchema = new Schema( { _id: false } ); -const weaponSkinsSchema = new Schema( +const weaponSkinsSchema = new Schema( { ItemType: String }, @@ -525,7 +525,13 @@ weaponSkinsSchema.virtual("ItemId").get(function () { return { $oid: this._id.toString() }; }); -weaponSkinsSchema.set("toJSON", { virtuals: true }); +weaponSkinsSchema.set("toJSON", { + virtuals: true, + transform(_doc, ret, _options) { + delete ret._id; + delete ret.__v; + } +}); const tauntHistorySchema = new Schema( { @@ -976,6 +982,7 @@ type InventoryDocumentProps = { SpaceMelee: Types.DocumentArray; SentinelWeapons: Types.DocumentArray; Hoverboards: Types.DocumentArray; + WeaponSkins: Types.DocumentArray; }; // eslint-disable-next-line @typescript-eslint/ban-types diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 12e1fbca..1b2a4ed2 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -13,7 +13,8 @@ import { IRawUpgrade, ISeasonChallenge, ITypeCount, - InventorySlot + InventorySlot, + IWeaponSkinClient } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate } from "../types/genericUpdate"; import { @@ -26,7 +27,7 @@ import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal, getWeaponType, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; import { IEquipmentClient } from "../types/inventoryTypes/commonInventoryTypes"; -import { ExportRecipes, ExportResources } from "warframe-public-export-plus"; +import { ExportCustoms, ExportRecipes, ExportResources } from "warframe-public-export-plus"; export const createInventory = async ( accountOwnerId: Types.ObjectId, @@ -104,6 +105,13 @@ export const addItem = async ( } }; } + if (typeName in ExportCustoms) { + return { + InventoryChanges: { + WeaponSkins: [await addSkin(typeName, accountId)] + } + }; + } // Path-based duck typing switch (typeName.substr(1).split("/")[1]) { @@ -445,12 +453,18 @@ export const addWeapon = async ( export const addCustomization = async (customizatonName: string, accountId: string): Promise => { const inventory = await getInventory(accountId); - const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; const changedInventory = await inventory.save(); return changedInventory.FlavourItems[flavourItemIndex].toJSON(); }; +export const addSkin = async (typeName: string, accountId: string): Promise => { + const inventory = await getInventory(accountId); + const index = inventory.WeaponSkins.push({ ItemType: typeName }) - 1; + const changedInventory = await inventory.save(); + return changedInventory.WeaponSkins[index].toJSON(); +}; + const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, gearArray: IEquipmentClient[] | undefined, diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index b6570acd..38c2decb 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -24,6 +24,7 @@ export interface IInventoryDatabase | "QuestKeys" | "BlessingCooldown" | "Ships" + | "WeaponSkins" > { accountOwnerId: Types.ObjectId; Created: Date; @@ -35,6 +36,7 @@ export interface IInventoryDatabase QuestKeys: IQuestKeyDatabase[]; BlessingCooldown: Date; Ships: Types.ObjectId[]; + WeaponSkins: IWeaponSkinDatabase[]; } export interface IInventoryResponseDocument extends IInventoryResponse, Document {} @@ -137,7 +139,7 @@ export interface IInventoryResponse { LastRegionPlayed: string; XPInfo: ITypeXPItem[]; Recipes: ITypeCount[]; - WeaponSkins: IWeaponSkin[]; + WeaponSkins: IWeaponSkinClient[]; PendingRecipes: IPendingRecipeResponse[]; TrainingDate: IMongoDate; PlayerLevel: number; @@ -847,8 +849,11 @@ export interface ITauntHistory { state: string; } -export interface IWeaponSkin { +export interface IWeaponSkinDatabase { ItemType: string; +} + +export interface IWeaponSkinClient extends IWeaponSkinDatabase { ItemId: IOid; } -- 2.47.2 From b4fedb7fff4ca80c43dee2842f694703450aa840 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 23:19:42 +0200 Subject: [PATCH 211/522] fix: spy mission rewards (#370) --- src/services/missionInventoryUpdateService.ts | 12 ++++++++++-- src/types/requestTypes.ts | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index ba8ec93c..b87b786a 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -28,8 +28,16 @@ const getRewards = ({ return { InventoryChanges: {}, MissionRewards: [] }; } - const rotationCount = RewardInfo.rewardQualifications?.length || 0; - const rotations = getRotations(rotationCount); + let rotations: number[] = []; + if (RewardInfo.VaultsCracked) { + // For Spy missions, e.g. 3 vaults cracked = A, B, C + for (let i = 0; i != RewardInfo.VaultsCracked; ++i) { + rotations.push(i); + } + } else { + const rotationCount = RewardInfo.rewardQualifications?.length || 0; + rotations = getRotations(rotationCount); + } const drops: IReward[] = []; rewardManifests .map(name => ExportRewards[name]) diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 3da74724..49917e9a 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -63,6 +63,7 @@ export interface IMissionInventoryUpdateRequest { export interface IMissionInventoryUpdateRequestRewardInfo { node: string; + VaultsCracked?: number; // for Spy missions rewardTier?: number; nightmareMode?: boolean; useVaultManifest?: boolean; -- 2.47.2 From fda7b5f816dc00c5da76c848a5b8cc9a551a9449 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 23:22:38 +0200 Subject: [PATCH 212/522] feat: add universalPolarityEverywhere (#368) --- config.json.example | 1 + src/controllers/api/inventoryController.ts | 20 ++++++++++- src/controllers/api/upgradesController.ts | 8 +++-- src/services/configService.ts | 1 + .../inventoryTypes/commonInventoryTypes.ts | 22 ++++++------ src/types/inventoryTypes/inventoryTypes.ts | 36 +++++++++++++------ src/types/requestTypes.ts | 4 +-- static/webui/index.html | 30 ++++++++++------ 8 files changed, 84 insertions(+), 38 deletions(-) diff --git a/config.json.example b/config.json.example index e874d450..12843a76 100644 --- a/config.json.example +++ b/config.json.example @@ -20,5 +20,6 @@ "unlockAllShipDecorations": true, "unlockAllFlavourItems": true, "unlockAllSkins": true, + "universalPolarityEverywhere": true, "spoofMasteryRank": -1 } diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 03383df8..021a7558 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -5,7 +5,8 @@ import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { config } from "@/src/services/configService"; import allMissions from "@/static/fixed_responses/allMissions.json"; import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes"; -import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IShipInventory, equipmentKeys } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IPolarity, ArtifactPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ExportCustoms, ExportFlavour, ExportKeys, ExportResources } from "warframe-public-export-plus"; // eslint-disable-next-line @typescript-eslint/no-misused-promises @@ -118,6 +119,23 @@ const inventoryController: RequestHandler = async (request, response) => { } } + if (config.universalPolarityEverywhere) { + const Polarity: IPolarity[] = []; + for (let i = 0; i != 10; ++i) { + Polarity.push({ + Slot: i, + Value: ArtifactPolarity.Any + }); + } + for (const key of equipmentKeys) { + if (key in inventoryResponse) { + for (const equipment of inventoryResponse[key]) { + equipment.Polarity = Polarity; + } + } + } + } + response.json(inventoryResponse); }; diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index d2f44558..e3a06d2d 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,6 +1,10 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; -import { FocusSchool, IEquipmentDatabase, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { + ArtifactPolarity, + IEquipmentDatabase, + EquipmentFeatures +} from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; @@ -133,7 +137,7 @@ export const upgradesController: RequestHandler = async (req, res) => { res.json({ InventoryChanges }); }; -const setSlotPolarity = (item: IEquipmentDatabase, slot: number, polarity: FocusSchool): void => { +const setSlotPolarity = (item: IEquipmentDatabase, slot: number, polarity: ArtifactPolarity): void => { item.Polarity ??= []; const entry = item.Polarity.find(entry => entry.Slot == slot); if (entry) { diff --git a/src/services/configService.ts b/src/services/configService.ts index 785c0f0b..272f50ac 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -37,6 +37,7 @@ interface IConfig { unlockAllShipDecorations?: boolean; unlockAllFlavourItems?: boolean; unlockAllSkins?: boolean; + universalPolarityEverywhere?: boolean; spoofMasteryRank?: number; } diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index 758038c6..b1debf7a 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -3,19 +3,19 @@ import { Types } from "mongoose"; export interface IPolarity { Slot: number; - Value: FocusSchool; + Value: ArtifactPolarity; } -export enum FocusSchool { - ApAny = "AP_ANY", - ApAttack = "AP_ATTACK", - ApDefense = "AP_DEFENSE", - ApPower = "AP_POWER", - ApPrecept = "AP_PRECEPT", - ApTactic = "AP_TACTIC", - ApUmbra = "AP_UMBRA", - ApUniversal = "AP_UNIVERSAL", - ApWard = "AP_WARD" +export enum ArtifactPolarity { + Any = "AP_ANY", + Attack = "AP_ATTACK", + Defense = "AP_DEFENSE", + Power = "AP_POWER", + Precept = "AP_PRECEPT", + Tactic = "AP_TACTIC", + Umbra = "AP_UMBRA", + Universal = "AP_UNIVERSAL", + Ward = "AP_WARD" } export interface IColor { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 38c2decb..5e897f2a 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -2,8 +2,8 @@ import { Document, Types } from "mongoose"; import { IOid, IMongoDate } from "../commonTypes"; import { + ArtifactPolarity, IColor, - FocusSchool, IItemConfig, IOperatorConfigClient, IEquipmentSelection, @@ -61,15 +61,21 @@ export interface ITypeCount { ItemCount: number; } -export type TEquipmentKey = - | "Suits" - | "LongGuns" - | "Pistols" - | "Melee" - | "SpecialItems" - | "Sentinels" - | "SentinelWeapons" - | "SpaceGuns"; +export const equipmentKeys = [ + "Suits", + "LongGuns", + "Pistols", + "Melee", + "SpecialItems", + "Sentinels", + "SentinelWeapons", + "SpaceSuits", + "SpaceGuns", + "SpaceMelee", + "Hoverboards" +] as const; + +export type TEquipmentKey = (typeof equipmentKeys)[number]; export interface IDuviriInfo { Seed: number; @@ -599,6 +605,14 @@ export interface ILoadOutPresets { OPERATOR_ADULT: ILoadoutConfigClient[]; } +export enum FocusSchool { + Attack = "AP_ATTACK", + Defense = "AP_DEFENSE", + Power = "AP_POWER", + Tactic = "AP_TACTIC", + Ward = "AP_WARD" +} + export interface ILoadoutConfigClient { FocusSchool?: FocusSchool; PresetIcon?: string; @@ -707,7 +721,7 @@ export interface IUpgradeFingerprint { compat: string; lim: number; lvlReq: number; - pol: FocusSchool; + pol: ArtifactPolarity; buffs: IBuff[]; curses: IBuff[]; } diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 49917e9a..3fc4c0f6 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -1,5 +1,5 @@ import { IOid } from "./commonTypes"; -import { IPolarity, FocusSchool, IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { ArtifactPolarity, IPolarity, IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IBooster, IChallengeProgress, @@ -98,6 +98,6 @@ export interface IUpgradeOperation { OperationType: string; UpgradeRequirement: string; // uniqueName of item being consumed PolarizeSlot: number; - PolarizeValue: FocusSchool; + PolarizeValue: ArtifactPolarity; PolarityRemap: IPolarity[]; } diff --git a/static/webui/index.html b/static/webui/index.html index d19f125a..4db8f2ef 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -231,9 +231,9 @@
- +
@@ -241,22 +241,30 @@
- +
- +
-
- +
+ + +
+
+
-- 2.47.2 From 93dce670376eaa7157b8e65ed107cbaaee0d13f8 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 23:25:17 +0200 Subject: [PATCH 213/522] cleanup: fully switch to Public-Export+(#354) Co-authored-by: Sainan --- package-lock.json | 18 ------- package.json | 1 - .../custom/getItemListsController.ts | 32 +++++-------- src/services/itemDataService.ts | 48 ------------------- 4 files changed, 13 insertions(+), 86 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2385969..d561c746 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-items": "^1.1262.74", "warframe-public-export-plus": "^0.3.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", @@ -3669,14 +3668,6 @@ "node": ">= 0.8" } }, - "node_modules/warframe-items": { - "version": "1.1262.74", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1262.74.tgz", - "integrity": "sha512-piS27vLxULdeXv1GZrac5Da18DavYnj99w5Pdmvlbyt/vPImq4SWq21PQwaLle1mkyEeqNjbcd3H7zh1I7eA1g==", - "peerDependencies": { - "warframe-worldstate-data": "^2" - } - }, "node_modules/warframe-public-export-plus": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.0.tgz", @@ -3687,15 +3678,6 @@ "resolved": "https://registry.npmjs.org/warframe-riven-info/-/warframe-riven-info-0.1.0.tgz", "integrity": "sha512-99e1HsGZomE1vHXat97V/eseccEnnQ1rv9vC0bdV9mig1wPdWiixHqCIpvIOBVUGKSEKuw2DJEErPD5Nxg+EsQ==" }, - "node_modules/warframe-worldstate-data": { - "version": "2.5.14", - "resolved": "https://registry.npmjs.org/warframe-worldstate-data/-/warframe-worldstate-data-2.5.14.tgz", - "integrity": "sha512-85UFs+kW0+rBW+fWcf8vCiLOIsTcH6ZkO8ANz7fiDTQfWdA5Y33jT2Z21RiVvtNDHDFXNrpZfpZtibJfhffdqA==", - "peer": true, - "engines": { - "node": ">=18.19.0" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index 3132b1af..b9dbf98f 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-items": "^1.1262.74", "warframe-public-export-plus": "^0.3.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index d4b0ffc7..a3e794a0 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { MinItem, items, getEnglishString } from "@/src/services/itemDataService"; +import { getEnglishString } from "@/src/services/itemDataService"; import { ExportArcanes, ExportGear, @@ -15,16 +15,6 @@ interface ListedItem { fusionLimit?: number; } -function reduceItems(items: MinItem[]): ListedItem[] { - return items.map((item: MinItem): ListedItem => { - return { - uniqueName: item.uniqueName, - name: item.name, - fusionLimit: (item as any).fusionLimit - }; - }); -} - const getItemListsController: RequestHandler = (_req, res) => { const weapons = []; const miscitems = []; @@ -56,20 +46,24 @@ const getItemListsController: RequestHandler = (_req, res) => { }); } - const mods = reduceItems(items.filter(item => item.category == "Mods")); - for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) { - mods.push({ - uniqueName: uniqueName, - name: getEnglishString(arcane.name) - }); - } - + const mods: ListedItem[] = []; const badItems: Record = {}; for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) { + mods.push({ + uniqueName, + name: getEnglishString(upgrade.name), + fusionLimit: upgrade.fusionLimit + }); if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) { badItems[uniqueName] = true; } } + for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) { + mods.push({ + uniqueName, + name: getEnglishString(arcane.name) + }); + } res.json({ warframes: Object.entries(ExportWarframes) diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 7f7a38d0..3bf039dd 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -1,6 +1,5 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; -import Items, { MinimalItem, Warframe, Weapon } from "warframe-items"; import { dict_en, ExportRecipes, @@ -10,10 +9,6 @@ import { IRecipe } from "warframe-public-export-plus"; -export type MinWarframe = Omit; -export type MinWeapon = Omit; -export type MinItem = Omit; - export type WeaponTypeInternal = | "LongGuns" | "Pistols" @@ -24,12 +19,6 @@ export type WeaponTypeInternal = | "OperatorAmps" | "SpecialItems"; -export const items: MinItem[] = Array.from(new Items({ category: ["All"] }) as MinimalItem[]).map(item => { - const next = { ...item }; - delete next.patchlogs; - return next; -}); - export const getWeaponType = (weaponName: string): WeaponTypeInternal => { const weaponInfo = ExportWeapons[weaponName]; @@ -52,33 +41,6 @@ export const getWeaponType = (weaponName: string): WeaponTypeInternal => { return weaponType; }; -export const craftNames = Object.fromEntries( - ( - new Items({ - category: [ - "Warframes", - "Gear", - "Melee", - "Primary", - "Secondary", - "Sentinels", - "Misc", - "Arch-Gun", - "Arch-Melee" - ] - }) as Warframe[] - ) - .flatMap(item => item.components || []) - .filter(item => item.drops && item.drops[0]) - .map(item => [item.drops![0].type, item.uniqueName]) -); - -export const blueprintNames = Object.fromEntries( - Object.keys(craftNames) - .filter(name => name.includes("Blueprint")) - .map(name => [name, craftNames[name]]) -); - export const getRecipe = (uniqueName: string): IRecipe | undefined => { return ExportRecipes[uniqueName]; }; @@ -113,16 +75,6 @@ export const getSuitByUniqueName = (uniqueName: string): IPowersuit | undefined return ExportWarframes[uniqueName]; }; -export const getItemByUniqueName = (uniqueName: string) => { - const item = items.find(item => item.uniqueName === uniqueName); - return item; -}; - -export const getItemByName = (name: string) => { - const item = items.find(item => item.name === name); - return item; -}; - export const getEnglishString = (key: string): string => { return dict_en[key] ?? key; }; -- 2.47.2 From 8aae246b48275a9327a71e4e3de04a347ea0b21a Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 23 Jun 2024 14:58:35 +0200 Subject: [PATCH 214/522] fix: purchasing multiples of a bundle (#379) --- src/services/purchaseService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 9fb4a675..6f55bad0 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -91,7 +91,7 @@ const handleStoreItemAcquisition = async ( await handleStoreItemAcquisition( component.typeName, accountId, - component.purchaseQuantity, + component.purchaseQuantity * quantity, component.durability ) ).InventoryChanges -- 2.47.2 From f106f6a1d7ffbe4e97fdf74fbdb4960da2a321e4 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 23 Jun 2024 15:12:32 +0200 Subject: [PATCH 215/522] feat: rewards for enemy caches & rathuum (#384) --- package-lock.json | 8 +-- package.json | 2 +- src/services/missionInventoryUpdateService.ts | 57 ++++++++++++------- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index d561c746..a69058da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-public-export-plus": "^0.3.0", + "warframe-public-export-plus": "^0.3.2", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3669,9 +3669,9 @@ } }, "node_modules/warframe-public-export-plus": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.0.tgz", - "integrity": "sha512-BYkTkCq9jsA8NzSiWsTW48ezK7kI/op2NrLf+j4j3bJi2cNjoSLf/D4bMEui6yCADjcoV89ramRTFbPjn6UpLA==" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.2.tgz", + "integrity": "sha512-0jAStLLrMaz0zm7wfY1/3SWLPmMJcYNNErVTPo8YqBZlot1aikVuDNu+crVmN+LWDDLrn01T7f83EYaw7TYo6w==" }, "node_modules/warframe-riven-info": { "version": "0.1.0", diff --git a/package.json b/package.json index b9dbf98f..3436b14a 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-public-export-plus": "^0.3.0", + "warframe-public-export-plus": "^0.3.2", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index b87b786a..afcabd36 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -23,33 +23,46 @@ const getRewards = ({ return { InventoryChanges: {}, MissionRewards: [] }; } - const rewardManifests = ExportRegions[RewardInfo.node]?.rewardManifests ?? []; - if (rewardManifests.length == 0) { - return { InventoryChanges: {}, MissionRewards: [] }; - } - - let rotations: number[] = []; - if (RewardInfo.VaultsCracked) { - // For Spy missions, e.g. 3 vaults cracked = A, B, C - for (let i = 0; i != RewardInfo.VaultsCracked; ++i) { - rotations.push(i); - } - } else { - const rotationCount = RewardInfo.rewardQualifications?.length || 0; - rotations = getRotations(rotationCount); - } const drops: IReward[] = []; - rewardManifests - .map(name => ExportRewards[name]) - .forEach(table => { - for (const rotation of rotations) { - const rotationRewards = table[rotation]; - const drop = getRandomRewardByChance(rotationRewards); + if (RewardInfo.node in ExportRegions) { + const region = ExportRegions[RewardInfo.node]; + const rewardManifests = region.rewardManifests ?? []; + if (rewardManifests.length == 0) { + return { InventoryChanges: {}, MissionRewards: [] }; + } + + let rotations: number[] = []; + if (RewardInfo.VaultsCracked) { + // For Spy missions, e.g. 3 vaults cracked = A, B, C + for (let i = 0; i != RewardInfo.VaultsCracked; ++i) { + rotations.push(i); + } + } else { + const rotationCount = RewardInfo.rewardQualifications?.length || 0; + rotations = getRotations(rotationCount); + } + rewardManifests + .map(name => ExportRewards[name]) + .forEach(table => { + for (const rotation of rotations) { + const rotationRewards = table[rotation]; + const drop = getRandomRewardByChance(rotationRewards); + if (drop) { + drops.push(drop); + } + } + }); + + if (region.cacheRewardManifest && RewardInfo.EnemyCachesFound) { + const deck = ExportRewards[region.cacheRewardManifest]; + for (let rotation = 0; rotation != RewardInfo.EnemyCachesFound; ++rotation) { + const drop = getRandomRewardByChance(deck[rotation]); if (drop) { drops.push(drop); } } - }); + } + } logger.debug("Mission rewards:", drops); return formatRewardsToInventoryType(drops); -- 2.47.2 From 8433e750725e0cd18c073b2a464bad6ef27e6799 Mon Sep 17 00:00:00 2001 From: Vampire Kitten <95658710+VampireKitten@users.noreply.github.com> Date: Mon, 24 Jun 2024 12:24:04 +0200 Subject: [PATCH 216/522] improve(webui): Reorder Item List and Add Item Button (#369) --- static/webui/index.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/static/webui/index.html b/static/webui/index.html index 4db8f2ef..8d296f2a 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -112,9 +112,6 @@
Warframes
- - -
+ + +
@@ -130,13 +130,13 @@
Weapons
- - -
+ + +
@@ -191,13 +191,13 @@
Mods
- - -
+ + +
-- 2.47.2 From 1a3b3b975078fe171cbd55825d51c8f5ca5973ac Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 24 Jun 2024 12:29:32 +0200 Subject: [PATCH 217/522] fix: foundry keeps refreshing, thinking argon crystals are expired (#393) --- src/controllers/api/inventoryController.ts | 3 +++ src/types/inventoryTypes/inventoryTypes.ts | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 021a7558..a37a8a90 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -136,6 +136,9 @@ const inventoryController: RequestHandler = async (request, response) => { } } + // Fix for #380 + inventoryResponse.NextRefill = { $date: { $numberLong: "9999999999999" } }; + response.json(inventoryResponse); }; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 5e897f2a..f963d819 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -253,7 +253,8 @@ export interface IInventoryResponse { NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; LastInventorySync: IOid; - NextRefill: IMongoDate; + NextRefill: IMongoDate; // Next time argon crystals will have a decay tick + FoundToday?: IMiscItem[]; // for Argon Crystals ActiveLandscapeTraps: any[]; EvolutionProgress?: IEvolutionProgress[]; RepVotes: any[]; -- 2.47.2 From 887d4eb95282a0b1f5b85180c5ec7f5120fc750a Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 24 Jun 2024 12:30:32 +0200 Subject: [PATCH 218/522] improve: purchasing of animation sets, colour plattes, etc. (#394) --- src/services/inventoryService.ts | 22 ++++++++-------------- static/webui/index.html | 2 +- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 1b2a4ed2..d5a4edb9 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -27,7 +27,7 @@ import { logger } from "@/src/utils/logger"; import { WeaponTypeInternal, getWeaponType, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; import { IEquipmentClient } from "../types/inventoryTypes/commonInventoryTypes"; -import { ExportCustoms, ExportRecipes, ExportResources } from "warframe-public-export-plus"; +import { ExportCustoms, ExportFlavour, ExportRecipes, ExportResources } from "warframe-public-export-plus"; export const createInventory = async ( accountOwnerId: Types.ObjectId, @@ -112,6 +112,13 @@ export const addItem = async ( } }; } + if (typeName in ExportFlavour) { + return { + InventoryChanges: { + FlavourItems: [await addCustomization(typeName, accountId)] + } + }; + } // Path-based duck typing switch (typeName.substr(1).split("/")[1]) { @@ -171,12 +178,6 @@ export const addItem = async ( [weaponType]: [weapon] } }; - case "Interface": - return { - InventoryChanges: { - FlavourItems: [await addCustomization(typeName, accountId)] - } - }; case "Objects": { // /Lotus/Objects/Tenno/Props/TnoLisetTextProjector (Note Beacon) const inventory = await getInventory(accountId); @@ -196,13 +197,6 @@ export const addItem = async ( } case "Types": switch (typeName.substr(1).split("/")[2]) { - case "AvatarImages": - case "SuitCustomizations": - return { - InventoryChanges: { - FlavourItems: [await addCustomization(typeName, accountId)] - } - }; case "Sentinels": // TOOD: Sentinels should also grant their DefaultUpgrades & SentinelWeapon. const sentinel = await addSentinel(typeName, accountId); diff --git a/static/webui/index.html b/static/webui/index.html index 8d296f2a..037c5280 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -248,7 +248,7 @@
-- 2.47.2 From d3004b19dda194a0de942825fb6c3348169eb261 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 24 Jun 2024 12:31:29 +0200 Subject: [PATCH 219/522] improve: handle purchase quantity of gear items (#389) Co-authored-by: Sainan --- package-lock.json | 8 ++++---- package.json | 2 +- src/services/purchaseService.ts | 15 +++++++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index a69058da..d2ca4c16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-public-export-plus": "^0.3.2", + "warframe-public-export-plus": "^0.3.3", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3669,9 +3669,9 @@ } }, "node_modules/warframe-public-export-plus": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.2.tgz", - "integrity": "sha512-0jAStLLrMaz0zm7wfY1/3SWLPmMJcYNNErVTPo8YqBZlot1aikVuDNu+crVmN+LWDDLrn01T7f83EYaw7TYo6w==" + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.3.tgz", + "integrity": "sha512-35pSMqXxe9vG4kdA+SnCyZyWO8zRGuPQbNeOPgZm5886kiujR+Qd6iY7TH0fdQYgKCk1M+q8lXonATT9VB9bbQ==" }, "node_modules/warframe-riven-info": { "version": "0.1.0", diff --git a/package.json b/package.json index 3436b14a..f5b472df 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "copyfiles": "^2.4.1", "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", - "warframe-public-export-plus": "^0.3.2", + "warframe-public-export-plus": "^0.3.3", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 6f55bad0..add4032c 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -3,7 +3,7 @@ import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addItem, addBooster, updateCurrency, updateSlots } from "@/src/services/inventoryService"; import { IPurchaseRequest, SlotPurchase, IInventoryChanges, IBinChanges } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; -import { ExportBundles, TRarity } from "warframe-public-export-plus"; +import { ExportBundles, ExportGear, TRarity } from "warframe-public-export-plus"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -75,7 +75,8 @@ const handleStoreItemAcquisition = async ( storeItemName: string, accountId: string, quantity: number, - durability: TRarity + durability: TRarity, + ignorePurchaseQuantity: boolean = false ): Promise<{ InventoryChanges: IInventoryChanges }> => { let purchaseResponse = { InventoryChanges: {} @@ -92,7 +93,8 @@ const handleStoreItemAcquisition = async ( component.typeName, accountId, component.purchaseQuantity * quantity, - component.durability + component.durability, + true ) ).InventoryChanges ); @@ -101,9 +103,14 @@ const handleStoreItemAcquisition = async ( const storeCategory = getStoreItemCategory(storeItemName); const internalName = storeItemName.replace("/StoreItems", ""); logger.debug(`store category ${storeCategory}`); + if (!ignorePurchaseQuantity) { + if (internalName in ExportGear) { + quantity *= ExportGear[internalName].purchaseQuantity || 1; + } + } switch (storeCategory) { default: - purchaseResponse = await addItem(accountId, internalName); + purchaseResponse = await addItem(accountId, internalName, quantity); break; case "Types": purchaseResponse = await handleTypesPurchase(internalName, accountId, quantity); -- 2.47.2 From ac6eaa2f4efa696c8b5aec4859f0f5c3989e9965 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 24 Jun 2024 12:37:28 +0200 Subject: [PATCH 220/522] fix: Convert all Body to String Before Use (#382) --- .eslintrc | 2 +- src/controllers/api/addFriendImageController.ts | 2 +- .../api/claimCompletedRecipeController.ts | 2 +- src/controllers/api/createGuildController.ts | 2 +- src/controllers/api/evolveWeaponController.ts | 2 +- src/controllers/api/findSessionsController.ts | 10 +++++----- src/controllers/api/focusController.ts | 12 ++++++------ src/controllers/api/genericUpdateController.ts | 3 ++- src/controllers/api/infestedFoundryController.ts | 10 +++++++--- src/controllers/api/joinSessionController.ts | 6 +++--- .../api/modularWeaponCraftingController.ts | 2 +- src/controllers/api/nameWeaponController.ts | 2 +- src/controllers/api/sellController.ts | 2 +- src/controllers/api/setWeaponSkillTreeController.ts | 2 +- src/controllers/api/startDojoRecipeController.ts | 2 +- src/controllers/api/startRecipeController.ts | 2 +- src/controllers/api/stepSequencersController.ts | 2 +- src/controllers/api/syndicateSacrificeController.ts | 3 +-- src/controllers/api/trainingResultController.ts | 2 +- .../api/updateChallengeProgressController.ts | 2 +- src/controllers/api/updateSessionController.ts | 4 ++-- src/controllers/api/upgradesController.ts | 2 +- src/controllers/custom/updateConfigDataController.ts | 2 +- 23 files changed, 42 insertions(+), 38 deletions(-) diff --git a/.eslintrc b/.eslintrc index 3b7c142a..70cbe0f1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -19,7 +19,7 @@ "@typescript-eslint/no-unsafe-member-access": "warn", "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], "@typescript-eslint/no-misused-promises": "warn", - "@typescript-eslint/no-unsafe-argument": "warn", + "@typescript-eslint/no-unsafe-argument": "error", "@typescript-eslint/no-unsafe-call": "warn", "@typescript-eslint/no-unsafe-assignment": "warn", "@typescript-eslint/no-explicit-any": "warn", diff --git a/src/controllers/api/addFriendImageController.ts b/src/controllers/api/addFriendImageController.ts index 6c9a2370..3ca2e1bd 100644 --- a/src/controllers/api/addFriendImageController.ts +++ b/src/controllers/api/addFriendImageController.ts @@ -7,7 +7,7 @@ import { getInventory } from "@/src/services/inventoryService"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const addFriendImageController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const json = getJSONfromString(req.body.toString()) as IUpdateGlyphRequest; + const json = getJSONfromString(String(req.body)) as IUpdateGlyphRequest; const inventory = await getInventory(accountId); inventory.ActiveAvatarImageType = json.AvatarImageType; await inventory.save(); diff --git a/src/controllers/api/claimCompletedRecipeController.ts b/src/controllers/api/claimCompletedRecipeController.ts index cd8aa3c4..27267953 100644 --- a/src/controllers/api/claimCompletedRecipeController.ts +++ b/src/controllers/api/claimCompletedRecipeController.ts @@ -15,7 +15,7 @@ export interface IClaimCompletedRecipeRequest { // eslint-disable-next-line @typescript-eslint/no-misused-promises export const claimCompletedRecipeController: RequestHandler = async (req, res) => { - const claimCompletedRecipeRequest = getJSONfromString(req.body.toString()) as IClaimCompletedRecipeRequest; + const claimCompletedRecipeRequest = getJSONfromString(String(req.body)) as IClaimCompletedRecipeRequest; const accountId = await getAccountIdForRequest(req); if (!accountId) throw new Error("no account id"); diff --git a/src/controllers/api/createGuildController.ts b/src/controllers/api/createGuildController.ts index 9499e308..73597db2 100644 --- a/src/controllers/api/createGuildController.ts +++ b/src/controllers/api/createGuildController.ts @@ -8,7 +8,7 @@ import { ICreateGuildRequest } from "@/src/types/guildTypes"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const createGuildController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const payload: ICreateGuildRequest = getJSONfromString(req.body.toString()); + const payload = getJSONfromString(String(req.body)) as ICreateGuildRequest; // Create guild on database const guild = new Guild({ diff --git a/src/controllers/api/evolveWeaponController.ts b/src/controllers/api/evolveWeaponController.ts index fea82844..77e33239 100644 --- a/src/controllers/api/evolveWeaponController.ts +++ b/src/controllers/api/evolveWeaponController.ts @@ -9,7 +9,7 @@ import { EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTyp export const evolveWeaponController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); - const payload = getJSONfromString(req.body.toString()) as IEvolveWeaponRequest; + const payload = getJSONfromString(String(req.body)) as IEvolveWeaponRequest; console.assert(payload.Action == "EWA_INSTALL"); // TODO: We should remove the Genesis item & its resources, but currently we don't know these "recipes". diff --git a/src/controllers/api/findSessionsController.ts b/src/controllers/api/findSessionsController.ts index c35b9607..7b7d126a 100644 --- a/src/controllers/api/findSessionsController.ts +++ b/src/controllers/api/findSessionsController.ts @@ -4,25 +4,25 @@ import { logger } from "@/src/utils/logger"; //TODO: cleanup const findSessionsController: RequestHandler = (_req, res) => { - const reqBody = JSON.parse(_req.body); + const reqBody = JSON.parse(String(_req.body)); logger.debug("FindSession Request ", { reqBody }); - const req = JSON.parse(_req.body); + const req = JSON.parse(String(_req.body)); if (req.id != undefined) { logger.debug("Found ID"); - const session = getSession(req.id); + const session = getSession(req.id as string); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } else if (req.originalSessionId != undefined) { logger.debug("Found OriginalSessionID"); - const session = getSession(req.originalSessionId); + const session = getSession(req.originalSessionId as string); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } else { logger.debug("Found SessionRequest"); - const session = getSession(_req.body); + const session = getSession(String(_req.body)); if (session) res.json({ queryId: req.queryId, Sessions: session }); else res.json({}); } diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index ff0a9616..2558e3c2 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -15,7 +15,7 @@ export const focusController: RequestHandler = async (req, res) => { res.end(); break; case FocusOperation.UnlockWay: { - const focusType = (JSON.parse(req.body.toString()) as IWayRequest).FocusType; + const focusType = (JSON.parse(String(req.body)) as IWayRequest).FocusType; const focusPolarity = focusTypeToPolarity(focusType); const inventory = await getInventory(accountId); const cost = inventory.FocusAbility ? 50_000 : 0; @@ -32,7 +32,7 @@ export const focusController: RequestHandler = async (req, res) => { break; } case FocusOperation.ActivateWay: { - const focusType = (JSON.parse(req.body.toString()) as IWayRequest).FocusType; + const focusType = (JSON.parse(String(req.body)) as IWayRequest).FocusType; const inventory = await getInventory(accountId); inventory.FocusAbility = focusType; await inventory.save(); @@ -40,7 +40,7 @@ export const focusController: RequestHandler = async (req, res) => { break; } case FocusOperation.UnlockUpgrade: { - const request = JSON.parse(req.body.toString()) as IUnlockUpgradeRequest; + const request = JSON.parse(String(req.body)) as IUnlockUpgradeRequest; const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]); const inventory = await getInventory(accountId); let cost = 0; @@ -57,7 +57,7 @@ export const focusController: RequestHandler = async (req, res) => { break; } case FocusOperation.LevelUpUpgrade: { - const request = JSON.parse(req.body.toString()) as ILevelUpUpgradeRequest; + const request = JSON.parse(String(req.body)) as ILevelUpUpgradeRequest; const focusPolarity = focusTypeToPolarity(request.FocusInfos[0].ItemType); const inventory = await getInventory(accountId); let cost = 0; @@ -75,7 +75,7 @@ export const focusController: RequestHandler = async (req, res) => { break; } case FocusOperation.UnbindUpgrade: { - const request = JSON.parse(req.body.toString()) as IUnbindUpgradeRequest; + const request = JSON.parse(String(req.body)) as IUnbindUpgradeRequest; const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]); const inventory = await getInventory(accountId); inventory.FocusXP[focusPolarity] -= 750_000 * request.FocusTypes.length; @@ -105,7 +105,7 @@ export const focusController: RequestHandler = async (req, res) => { break; } case FocusOperation.ConvertShard: { - const request = JSON.parse(req.body.toString()) as IConvertShardRequest; + const request = JSON.parse(String(req.body)) as IConvertShardRequest; // Tally XP let xp = 0; for (const shard of request.Shards) { diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index f2d29fc1..cf769f3f 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -2,11 +2,12 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { updateGeneric } from "@/src/services/inventoryService"; import { RequestHandler } from "express"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { IGenericUpdate } from "@/src/types/genericUpdate"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const genericUpdateController: RequestHandler = async (request, response) => { const accountId = await getAccountIdForRequest(request); - const update = getJSONfromString(request.body.toString()); + const update = getJSONfromString(String(request.body)) as IGenericUpdate; response.json(await updateGeneric(update, accountId)); }; diff --git a/src/controllers/api/infestedFoundryController.ts b/src/controllers/api/infestedFoundryController.ts index 85c50921..ddf6925d 100644 --- a/src/controllers/api/infestedFoundryController.ts +++ b/src/controllers/api/infestedFoundryController.ts @@ -7,11 +7,10 @@ import { IOid } from "@/src/types/commonTypes"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const infestedFoundryController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const payload = getJSONfromString(req.body.toString()); switch (req.query.mode) { case "s": { // shard installation - const request = payload as IShardInstallRequest; + const request = getJSONfromString(String(req.body)) as IShardInstallRequest; const inventory = await getInventory(accountId); const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$oid)!; if ( @@ -42,9 +41,10 @@ export const infestedFoundryController: RequestHandler = async (req, res) => { case "n": { // name the beast + const request = getJSONfromString(String(req.body)) as IHelminthNameRequest; const inventory = await getInventory(accountId); inventory.InfestedFoundry ??= {}; - inventory.InfestedFoundry.Name = payload.newName as string; + inventory.InfestedFoundry.Name = request.newName; await inventory.save(); res.json({ InventoryChanges: { @@ -73,6 +73,10 @@ interface IShardInstallRequest { Color: string; } +interface IHelminthNameRequest { + newName: string; +} + const colorToShard: Record = { ACC_RED: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalAmar", ACC_RED_MYTHIC: "/Lotus/Types/Gameplay/NarmerSorties/ArchonCrystalAmarMythic", diff --git a/src/controllers/api/joinSessionController.ts b/src/controllers/api/joinSessionController.ts index 84837692..4212c90f 100644 --- a/src/controllers/api/joinSessionController.ts +++ b/src/controllers/api/joinSessionController.ts @@ -3,10 +3,10 @@ import { getSessionByID } from "@/src/managers/sessionManager"; import { logger } from "@/src/utils/logger"; const joinSessionController: RequestHandler = (_req, res) => { - const reqBody = JSON.parse(_req.body); + const reqBody = JSON.parse(String(_req.body)); logger.debug(`JoinSession Request`, { reqBody }); - const req = JSON.parse(_req.body); - const session = getSessionByID(req.sessionIds[0]); + const req = JSON.parse(String(_req.body)); + const session = getSessionByID(req.sessionIds[0] as string); res.json({ rewardSeed: session?.rewardSeed, sessionId: { $oid: session?.sessionId } }); }; diff --git a/src/controllers/api/modularWeaponCraftingController.ts b/src/controllers/api/modularWeaponCraftingController.ts index 91768e3a..00a776d8 100644 --- a/src/controllers/api/modularWeaponCraftingController.ts +++ b/src/controllers/api/modularWeaponCraftingController.ts @@ -22,7 +22,7 @@ interface IModularCraftRequest { // eslint-disable-next-line @typescript-eslint/no-misused-promises export const modularWeaponCraftingController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const data: IModularCraftRequest = getJSONfromString(req.body.toString()); + const data = getJSONfromString(String(req.body)) as IModularCraftRequest; if (!(data.WeaponType in modularWeaponTypes)) { throw new Error(`unknown modular weapon type: ${data.WeaponType}`); } diff --git a/src/controllers/api/nameWeaponController.ts b/src/controllers/api/nameWeaponController.ts index c32f0fe8..26876766 100644 --- a/src/controllers/api/nameWeaponController.ts +++ b/src/controllers/api/nameWeaponController.ts @@ -12,7 +12,7 @@ interface INameWeaponRequest { export const nameWeaponController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); - const body = getJSONfromString(req.body.toString()) as INameWeaponRequest; + const body = getJSONfromString(String(req.body)) as INameWeaponRequest; const item = inventory[req.query.Category as string as TEquipmentKey].find( item => item._id.toString() == (req.query.ItemId as string) )!; diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts index f242ccba..ff2ce6e0 100644 --- a/src/controllers/api/sellController.ts +++ b/src/controllers/api/sellController.ts @@ -5,7 +5,7 @@ import { getInventory, addMods, addRecipes } from "@/src/services/inventoryServi // eslint-disable-next-line @typescript-eslint/no-misused-promises export const sellController: RequestHandler = async (req, res) => { - const payload: ISellRequest = JSON.parse(req.body.toString()); + const payload = JSON.parse(String(req.body)) as ISellRequest; const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); diff --git a/src/controllers/api/setWeaponSkillTreeController.ts b/src/controllers/api/setWeaponSkillTreeController.ts index b3b0be6f..dae03f03 100644 --- a/src/controllers/api/setWeaponSkillTreeController.ts +++ b/src/controllers/api/setWeaponSkillTreeController.ts @@ -8,7 +8,7 @@ import { WeaponTypeInternal } from "@/src/services/itemDataService"; export const setWeaponSkillTreeController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); - const payload = getJSONfromString(req.body.toString()) as ISetWeaponSkillTreeRequest; + const payload = getJSONfromString(String(req.body)) as ISetWeaponSkillTreeRequest; const item = inventory[req.query.Category as WeaponTypeInternal].find( item => item._id.toString() == (req.query.ItemId as string) diff --git a/src/controllers/api/startDojoRecipeController.ts b/src/controllers/api/startDojoRecipeController.ts index a278f31c..4ae4dd7d 100644 --- a/src/controllers/api/startDojoRecipeController.ts +++ b/src/controllers/api/startDojoRecipeController.ts @@ -12,7 +12,7 @@ interface IStartDojoRecipeRequest { export const startDojoRecipeController: RequestHandler = async (req, res) => { const guild = await getGuildForRequest(req); // At this point, we know that a member of the guild is making this request. Assuming they are allowed to start a build. - const request = JSON.parse(req.body.toString()) as IStartDojoRecipeRequest; + const request = JSON.parse(String(req.body)) as IStartDojoRecipeRequest; guild.DojoComponents!.push({ _id: new Types.ObjectId(), pf: request.PlacedComponent.pf, diff --git a/src/controllers/api/startRecipeController.ts b/src/controllers/api/startRecipeController.ts index 5f770476..0c516365 100644 --- a/src/controllers/api/startRecipeController.ts +++ b/src/controllers/api/startRecipeController.ts @@ -11,7 +11,7 @@ interface IStartRecipeRequest { // eslint-disable-next-line @typescript-eslint/no-misused-promises export const startRecipeController: RequestHandler = async (req, res) => { - const startRecipeRequest = getJSONfromString(req.body.toString()) as IStartRecipeRequest; + const startRecipeRequest = getJSONfromString(String(req.body)) as IStartRecipeRequest; logger.debug("StartRecipe Request", { startRecipeRequest }); const accountId = await getAccountIdForRequest(req); diff --git a/src/controllers/api/stepSequencersController.ts b/src/controllers/api/stepSequencersController.ts index bb963b92..06d72d5f 100644 --- a/src/controllers/api/stepSequencersController.ts +++ b/src/controllers/api/stepSequencersController.ts @@ -7,7 +7,7 @@ import { IStepSequencer } from "@/src/types/inventoryTypes/inventoryTypes"; export const stepSequencersController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); - const stepSequencer = JSON.parse(req.body.toString()) as IStepSequencer; + const stepSequencer = JSON.parse(String(req.body)) as IStepSequencer; delete stepSequencer.ItemId; const stepSequencerIndex = inventory.StepSequencers.push(stepSequencer); const changedInventory = await inventory.save(); diff --git a/src/controllers/api/syndicateSacrificeController.ts b/src/controllers/api/syndicateSacrificeController.ts index d67f68b5..9c7fff17 100644 --- a/src/controllers/api/syndicateSacrificeController.ts +++ b/src/controllers/api/syndicateSacrificeController.ts @@ -7,10 +7,9 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const syndicateSacrificeController: RequestHandler = async (request, response) => { const accountId = await getAccountIdForRequest(request); - const body = getJSONfromString(request.body); + const update = getJSONfromString(String(request.body)) as ISyndicateSacrifice; let reply = {}; try { - const update = JSON.parse(body) as ISyndicateSacrifice; if (typeof update !== "object") { throw new Error("Invalid data format"); } diff --git a/src/controllers/api/trainingResultController.ts b/src/controllers/api/trainingResultController.ts index fcfe6734..59ab9c4d 100644 --- a/src/controllers/api/trainingResultController.ts +++ b/src/controllers/api/trainingResultController.ts @@ -19,7 +19,7 @@ interface ITrainingResultsResponse { const trainingResultController: RequestHandler = async (req, res): Promise => { const accountId = await getAccountIdForRequest(req); - const trainingResults = getJSONfromString(req.body.toString()) as ITrainingResultsRequest; + const trainingResults = getJSONfromString(String(req.body)) as ITrainingResultsRequest; const inventory = await getInventory(accountId); diff --git a/src/controllers/api/updateChallengeProgressController.ts b/src/controllers/api/updateChallengeProgressController.ts index bc91f9d3..f6e496e8 100644 --- a/src/controllers/api/updateChallengeProgressController.ts +++ b/src/controllers/api/updateChallengeProgressController.ts @@ -6,7 +6,7 @@ import { IUpdateChallengeProgressRequest } from "@/src/types/requestTypes"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const updateChallengeProgressController: RequestHandler = async (req, res) => { - const payload: IUpdateChallengeProgressRequest = getJSONfromString(req.body.toString()); + const payload = getJSONfromString(String(req.body)) as IUpdateChallengeProgressRequest; const accountId = await getAccountIdForRequest(req); await updateChallengeProgress(payload, accountId); diff --git a/src/controllers/api/updateSessionController.ts b/src/controllers/api/updateSessionController.ts index e949d83e..b203a486 100644 --- a/src/controllers/api/updateSessionController.ts +++ b/src/controllers/api/updateSessionController.ts @@ -5,9 +5,9 @@ const updateSessionGetController: RequestHandler = (_req, res) => { res.json({}); }; const updateSessionPostController: RequestHandler = (_req, res) => { - console.log("UpdateSessions POST Request:", JSON.parse(_req.body)); + console.log("UpdateSessions POST Request:", JSON.parse(String(_req.body))); console.log("ReqID:", _req.query.sessionId as string); - updateSession(_req.query.sessionId as string, _req.body); + updateSession(_req.query.sessionId as string, String(_req.body)); res.json({}); }; export { updateSessionGetController, updateSessionPostController }; diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index e3a06d2d..8fdec7e7 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -12,7 +12,7 @@ import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inven // eslint-disable-next-line @typescript-eslint/no-misused-promises export const upgradesController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const payload = JSON.parse(req.body.toString()) as IUpgradesRequest; + const payload = JSON.parse(String(req.body)) as IUpgradesRequest; const inventory = await getInventory(accountId); const InventoryChanges: any = {}; for (const operation of payload.Operations) { diff --git a/src/controllers/custom/updateConfigDataController.ts b/src/controllers/custom/updateConfigDataController.ts index 8a23cd1b..6037cdce 100644 --- a/src/controllers/custom/updateConfigDataController.ts +++ b/src/controllers/custom/updateConfigDataController.ts @@ -3,7 +3,7 @@ import { updateConfig } from "@/src/services/configService"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const updateConfigDataController: RequestHandler = async (req, res) => { - await updateConfig(req.body.toString()); + await updateConfig(String(req.body)); res.end(); }; -- 2.47.2 From ae6ccb981aa977ce27f06510be7ddb1d7acb2e7e Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 25 Jun 2024 02:06:05 +0200 Subject: [PATCH 221/522] fix: affiliationsSchema not matching IAffiliation (#399) --- src/models/inventoryModels/inventoryModel.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index bf2dffc5..3e2c48a6 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -398,9 +398,9 @@ const affiliationsSchema = new Schema( { Initiated: Boolean, Standing: Number, - Title: String, - FreeFavorsEarned: [Number], - FreeFavorsUsed: [Number], + Title: Number, + FreeFavorsEarned: { type: [Number], default: undefined }, + FreeFavorsUsed: { type: [Number], default: undefined }, Tag: String }, { _id: false } -- 2.47.2 From 9b7127972d5fd691ab522873432f7a9d2a3ef9f9 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:11:19 +0200 Subject: [PATCH 222/522] improve: add DailyAffiliationCavia (#402) --- src/models/inventoryModels/inventoryModel.ts | 1 + src/types/inventoryTypes/inventoryTypes.ts | 1 + static/fixed_responses/new_inventory.json | 1 + static/fixed_responses/postTutorialInventory.json | 1 + 4 files changed, 4 insertions(+) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 3e2c48a6..e3573eb8 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -634,6 +634,7 @@ const inventorySchema = new Schema( DailyAffiliationNecraloid: Number, DailyAffiliationZariman: Number, DailyAffiliationKahl: Number, + DailyAffiliationCavia: Number, //Daily Focus limit DailyFocus: Number, diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index f963d819..707e0673 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -252,6 +252,7 @@ export interface IInventoryResponse { DailyAffiliationZariman: number; NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; + DailyAffiliationCavia: number; LastInventorySync: IOid; NextRefill: IMongoDate; // Next time argon crystals will have a decay tick FoundToday?: IMiscItem[]; // for Argon Crystals diff --git a/static/fixed_responses/new_inventory.json b/static/fixed_responses/new_inventory.json index 8c112a7a..fb2e616e 100644 --- a/static/fixed_responses/new_inventory.json +++ b/static/fixed_responses/new_inventory.json @@ -101,6 +101,7 @@ "DailyAffiliationNecraloid": 16000, "DailyAffiliationZariman": 16000, "DailyAffiliationKahl": 16000, + "DailyAffiliationCavia": 16000, "DailyFocus": 250000, "GiftsRemaining": 8, "LibraryAvailableDailyTaskInfo": { diff --git a/static/fixed_responses/postTutorialInventory.json b/static/fixed_responses/postTutorialInventory.json index 53af6393..31160132 100644 --- a/static/fixed_responses/postTutorialInventory.json +++ b/static/fixed_responses/postTutorialInventory.json @@ -29,6 +29,7 @@ "DailyAffiliationVentkids": 16000, "DailyAffiliationVox": 16000, "DailyAffiliationZariman": 16000, + "DailyAffiliationCavia": 16000, "DailyFocus": 250000, "DuviriInfo": { "Seed": 5898912197983600352, "NumCompletions": 0 }, "GiftsRemaining": 8, -- 2.47.2 From 2178b7523ef83bd25459d0b4d89af0e91856071a Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 26 Jun 2024 16:23:52 +0200 Subject: [PATCH 223/522] improve: loadout config save FocusSchool (#408) --- src/models/inventoryModels/loadoutModel.ts | 13 ++++++++----- src/types/inventoryTypes/inventoryTypes.ts | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/models/inventoryModels/loadoutModel.ts b/src/models/inventoryModels/loadoutModel.ts index a0cd68e1..30a22c90 100644 --- a/src/models/inventoryModels/loadoutModel.ts +++ b/src/models/inventoryModels/loadoutModel.ts @@ -27,13 +27,16 @@ const EquipmentSelectionSchema = new Schema( const loadoutConfigSchema = new Schema( { + FocusSchool: String, PresetIcon: String, Favorite: Boolean, - n: String, - s: EquipmentSelectionSchema, - p: EquipmentSelectionSchema, - l: EquipmentSelectionSchema, - m: EquipmentSelectionSchema + n: String, // Loadout name + s: EquipmentSelectionSchema, // Suit + l: EquipmentSelectionSchema, // Primary weapon + p: EquipmentSelectionSchema, // Secondary weapon + m: EquipmentSelectionSchema, // Melee weapon + h: EquipmentSelectionSchema, // Gravimag weapon + a: EquipmentSelectionSchema // Necromech exalted weapon }, { id: false diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 707e0673..f0ad1ec9 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -621,11 +621,11 @@ export interface ILoadoutConfigClient { Favorite?: boolean; n?: string; // Loadout name s?: IEquipmentSelection; // Suit - p?: IEquipmentSelection; + p?: IEquipmentSelection; // Secondary weapon l?: IEquipmentSelection; // Primary weapon m?: IEquipmentSelection; // Melee weapon h?: IEquipmentSelection; // Gravimag weapon - a?: IEquipmentSelection; + a?: IEquipmentSelection; // Necromech exalted weapon ItemId: IOid; Remove?: boolean; // when client wants to remove a config, it only includes ItemId & Remove. } -- 2.47.2 From 34c0011abf326f44d0b3fce2d904be96e8a27c6c Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 26 Jun 2024 16:29:14 +0200 Subject: [PATCH 224/522] chore: remove unused files (#409) --- src/controllers/stats/viewController.ts | 3 +- static/fixed_responses/login.json | 1 - static/fixed_responses/purchase.json | 13 - static/fixed_responses/upload.json | 1 - static/fixed_responses/view.json | 1 - .../scripts/missions-drop-table-get-script.js | 273 ------------------ 6 files changed, 1 insertion(+), 291 deletions(-) delete mode 100644 static/fixed_responses/login.json delete mode 100644 static/fixed_responses/purchase.json delete mode 100644 static/fixed_responses/upload.json delete mode 100644 static/fixed_responses/view.json delete mode 100644 static/json/scripts/missions-drop-table-get-script.js diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts index 3d6b9e20..cae180ce 100644 --- a/src/controllers/stats/viewController.ts +++ b/src/controllers/stats/viewController.ts @@ -3,7 +3,6 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { IStatsView } from "@/src/types/statTypes"; import { config } from "@/src/services/configService"; -import view from "@/static/fixed_responses/view.json"; import allScans from "@/static/fixed_responses/allScans.json"; // eslint-disable-next-line @typescript-eslint/no-misused-promises @@ -15,7 +14,7 @@ const viewController: RequestHandler = async (req, res) => { return; } - const responseJson: IStatsView = view; + const responseJson: IStatsView = {}; responseJson.Weapons = []; for (const item of inventory.XPInfo) { responseJson.Weapons.push({ diff --git a/static/fixed_responses/login.json b/static/fixed_responses/login.json deleted file mode 100644 index 0967ef42..00000000 --- a/static/fixed_responses/login.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/static/fixed_responses/purchase.json b/static/fixed_responses/purchase.json deleted file mode 100644 index e9c27715..00000000 --- a/static/fixed_responses/purchase.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "InventoryChanges": { - "WeaponBin": { "count": 1, "platinum": 0, "Slots": -1 }, - "Suits": [ - { - "ItemType": "/Lotus/Powersuits/Ninja/Ninja", - "Configs": [], - "ItemId": { "$oid": "123123123123" } - } - ], - "RegularCredits": -25000 - } -} diff --git a/static/fixed_responses/upload.json b/static/fixed_responses/upload.json deleted file mode 100644 index 0967ef42..00000000 --- a/static/fixed_responses/upload.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/static/fixed_responses/view.json b/static/fixed_responses/view.json deleted file mode 100644 index 0967ef42..00000000 --- a/static/fixed_responses/view.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/static/json/scripts/missions-drop-table-get-script.js b/static/json/scripts/missions-drop-table-get-script.js deleted file mode 100644 index e80d6020..00000000 --- a/static/json/scripts/missions-drop-table-get-script.js +++ /dev/null @@ -1,273 +0,0 @@ -// for https://www.warframe.com/ru/droptables -/* eslint-disable */ -(() => { - const missionNames = { - "Mercury/Larunda Relay": "MercuryHUB", - "Venus/Vesper Relay": "VenusHUB", - "Earth/Strata Relay": "EarthHUB", - "Mars/Maroo's Bazaar": "TradeHUB1", - "Saturn/Kronia Relay": "SaturnHUB", - "Eris/Kuiper Relay": "ErisHUB", - "Europa/Leonov Relay": "EuropaHUB", - "Pluto/Orcus Relay": "PlutoHUB", - "Venus/Romula": "ClanNode0", - "Venus/Malva": "ClanNode1", - "Earth/Coba": "ClanNode2", - "Earth/Tikal": "ClanNode3", - "Jupiter/Sinai": "ClanNode4", - "Jupiter/Cameria": "ClanNode5", - "Europa/Larzac": "ClanNode6", - "Europa/Cholistan": "ClanNode7", - "Mars/Kadesh": "ClanNode8", - "Mars/Wahiba": "ClanNode9", - "Phobos/Memphis": "ClanNode10", - "Phobos/Zeugma": "ClanNode11", - "Saturn/Caracol": "ClanNode12", - "Saturn/Piscinas": "ClanNode13", - "Sedna/Amarna": "ClanNode14", - "Sedna/Sangeru": "ClanNode15", - "Uranus/Ur": "ClanNode16", - "Uranus/Assur": "ClanNode17", - "Eris/Akkad": "ClanNode18", - "Eris/Zabala": "ClanNode19", - "Neptune/Yursa": "ClanNode20", - "Neptune/Kelashin": "ClanNode21", - "Ceres/Seimeni": "ClanNode22", - "Ceres/Gabii": "ClanNode23", - "Pluto/Sechura": "ClanNode24", - "Pluto/Hieracon": "ClanNode25", - "Phobos/Roche": "SettlementNode1", - "Phobos/Skyresh": "SettlementNode2", - "Phobos/Stickney": "SettlementNode3", - "Phobos/Kepler": "SettlementNode10", - "Phobos/Gulliver": "SettlementNode11", - "Phobos/Monolith": "SettlementNode12", - "Phobos/Shklovsky": "SettlementNode14", - "Phobos/Sharpless": "SettlementNode15", - "Phobos/Iliad": "SettlementNode20", - "Neptune/Galatea": "SolNode1", - "Venus/Aphrodite": "SolNode2", - "Pluto/Acheron": "SolNode4", - "Neptune/Despina": "SolNode6", - "Uranus/Rosalind": "SolNode9", - "Jupiter/Thebe": "SolNode10", - "Mars/Tharsis": "SolNode11", - "Mercury/Elion": "SolNode12", - "Mars/Ultor": "SolNode14", - "Earth/Pacific": "SolNode15", - "Mars/Augustus": "SolNode16", - "Neptune/Proteus": "SolNode17", - "Saturn/Rhea": "SolNode18", - "Saturn/Enceladus": "SolNode19", - "Saturn/Telesto": "SolNode20", - "Pluto/Narcissus": "SolNode21", - "Venus/Tessera": "SolNode22", - "Venus/Cytherean": "SolNode23", - "Earth/Oro": "SolNode24", - "Jupiter/Callisto": "SolNode25", - "Earth/Lith": "SolNode26", - "Earth/E Prime": "SolNode27", - "Mercury/Terminus": "SolNode28", - "Mars/Olympus": "SolNode30", - "Saturn/Anthe": "SolNode31", - "Saturn/Tethys": "SolNode32", - "Uranus/Ariel": "SolNode33", - "Uranus/Sycorax": "SolNode34", - "Mars/Martialis": "SolNode36", - "Pluto/Minthe": "SolNode38", - "Earth/Everest": "SolNode39", - "Mars/Arval": "SolNode41", - "Saturn/Helene": "SolNode42", - "Pluto/Cerberus": "SolNode43", - "Mars/Ara": "SolNode45", - "Mars/Spear": "SolNode46", - "Pluto/Regna": "SolNode48", - "Neptune/Larissa": "SolNode49", - "Saturn/Numa": "SolNode50", - "Pluto/Hades": "SolNode51", - "Jupiter/Themisto": "SolNode53", - "Pluto/Cypress": "SolNode56", - "Neptune/Sao": "SolNode57", - "Mars/Hellas": "SolNode58", - "Earth/Eurasia": "SolNode59", - "Uranus/Caliban": "SolNode60", - "Venus/Ishtar": "SolNode61", - "Neptune/Neso": "SolNode62", - "Earth/Mantle": "SolNode63", - "Uranus/Umbriel": "SolNode64", - "Mars/Gradivus": "SolNode65", - "Venus/Unda": "SolNode66", - "Saturn/Dione": "SolNode67", - "Mars/Vallis": "SolNode68", - "Uranus/Ophelia": "SolNode69", - "Saturn/Cassini": "SolNode70", - "Pluto/Outer Terminus": "SolNode72", - "Jupiter/Ananke": "SolNode73", - "Jupiter/Carme": "SolNode74", - "Earth/Cervantes": "SolNode75", - "Pluto/Hydra": "SolNode76", - "Neptune/Triton": "SolNode78", - "Earth/Cambria": "SolNode79", - "Pluto/Palus": "SolNode81", - "Saturn/Calypso": "SolNode82", - "Uranus/Cressida": "SolNode83", - "Neptune/Nereid": "SolNode84", - "Earth/Gaia": "SolNode85", - "Jupiter/Ganymede": "SolNode87", - "Jupiter/Adrastea": "SolNode88", - "Earth/Mariana": "SolNode89", - "Saturn/Keeler": "SolNode93", - "Mercury/Apollodorus": "SolNode94", - "Saturn/Titan": "SolNode96", - "Jupiter/Amalthea": "SolNode97", - "Uranus/Desdemona": "SolNode98", - "Mars/War": "SolNode99", - "Jupiter/Elara": "SolNode100", - "Venus/Kiliken": "SolNode101", - "Pluto/Oceanum": "SolNode102", - "Mercury/M Prime": "SolNode103", - "Venus/Fossa": "SolNode104", - "Uranus/Titania": "SolNode105", - "Mars/Alator": "SolNode106", - "Venus/Venera": "SolNode107", - "Mercury/Tolstoj": "SolNode108", - "Venus/Linea": "SolNode109", - "Mars/Ares": "SolNode113", - "Uranus/Puck": "SolNode114", - "Neptune/Laomedeia": "SolNode118", - "Mercury/Caloris": "SolNode119", - "Jupiter/Carpo": "SolNode121", - "Uranus/Stephano": "SolNode122", - "Venus/V Prime": "SolNode123", - "Jupiter/Io": "SolNode125", - "Jupiter/Metis": "SolNode126", - "Neptune/Psamathe": "SolNode127", - "Venus/E Gate": "SolNode128", - "Venus/Orb Vallis": "SolNode129", - "Mercury/Lares": "SolNode130", - "Ceres/Pallas": "SolNode131", - "Ceres/Bode": "SolNode132", - "Ceres/Thon": "SolNode135", - "Ceres/Nuovo": "SolNode137", - "Ceres/Ludi": "SolNode138", - "Ceres/Lex": "SolNode139", - "Ceres/Kiste": "SolNode140", - "Ceres/Ker": "SolNode141", - "Ceres/Exta": "SolNode144", - "Ceres/Draco": "SolNode146", - "Ceres/Cinxia": "SolNode147", - "Ceres/Casta": "SolNode149", - "Eris/Brugia": "SolNode153", - "Eris/Isos": "SolNode162", - "Eris/Kala-azar": "SolNode164", - "Eris/Nimus": "SolNode166", - "Eris/Oestrus": "SolNode167", - "Eris/Saxis": "SolNode171", - "Eris/Xini": "SolNode172", - "Eris/Solium": "SolNode173", - "Eris/Naeglar": "SolNode175", - "Sedna/Kappa": "SolNode177", - "Sedna/Adaro": "SolNode181", - "Sedna/Vodyanoi": "SolNode183", - "Sedna/Rusalka": "SolNode184", - "Sedna/Berehynia": "SolNode185", - "Sedna/Selkie": "SolNode187", - "Sedna/Kelpie": "SolNode188", - "Sedna/Naga": "SolNode189", - "Sedna/Nakki": "SolNode190", - "Sedna/Marid": "SolNode191", - "Sedna/Merrow": "SolNode193", - "Sedna/Hydron": "SolNode195", - "Sedna/Charybdis": "SolNode196", - "Sedna/Yam": "SolNode199", - "Europa/Abaddon": "SolNode203", - "Europa/Armaros": "SolNode204", - "Europa/Baal": "SolNode205", - "Europa/Morax": "SolNode209", - "Europa/Naamah": "SolNode210", - "Europa/Ose": "SolNode211", - "Europa/Paimon": "SolNode212", - "Europa/Sorath": "SolNode214", - "Europa/Valac": "SolNode215", - "Europa/Valefor": "SolNode216", - "Europa/Orias": "SolNode217", - "Europa/Kokabiel": "SolNode220", - "Mercury/Boethius": "SolNode223", - "Mercury/Odin": "SolNode224", - "Mercury/Suisei": "SolNode225", - "Mercury/Pantheon": "SolNode226", - "Earth/Plains of Eidolon": "SolNode228", - "Deimos/Cambion Drift": "SolNode229", - "Lua/Plato": "SolNode300", - "Lua/Grimaldi": "SolNode301", - "Lua/Tycho": "SolNode302", - "Lua/Copernicus": "SolNode304", - "Lua/Stöfler": "SolNode305", - "Lua/Pavlov": "SolNode306", - "Lua/Zeipel": "SolNode307", - "Lua/Apollo": "SolNode308", - "Void/Teshub": "SolNode400", - "Void/Hepit": "SolNode401", - "Void/Taranis": "SolNode402", - "Void/Tiwaz": "SolNode403", - "Void/Stribog": "SolNode404", - "Void/Ani": "SolNode405", - "Void/Ukko": "SolNode406", - "Void/Oxomoco": "SolNode407", - "Void/Belenus": "SolNode408", - "Void/Mot": "SolNode409", - "Void/Aten": "SolNode410", - "Void/Marduk": "SolNode411", - "Void/Mithra": "SolNode412", - "undefined/Jordas Golem Assassinate": "SolNode701", - "undefined/Mutalist Alad V Assassinate": "SolNode705", - "Deimos/Horend": "SolNode706", - "Deimos/Hyf": "SolNode707", - "Deimos/Phlegyas": "SolNode708", - "Deimos/Dirus": "SolNode709", - "Deimos/Formido": "SolNode710", - "Deimos/Terrorem": "SolNode711", - "Deimos/Magnacidium": "SolNode712", - "Deimos/Exequias": "SolNode713", - "Jupiter/The Ropalolyst": "SolNode740", - "Kuva Fortress/Koro": "SolNode741", - "Kuva Fortress/Nabuk": "SolNode742", - "Kuva Fortress/Rotuma": "SolNode743", - "Kuva Fortress/Taveuni": "SolNode744", - "Kuva Fortress/Tamu": "SolNode745", - "Kuva Fortress/Dakata": "SolNode746", - "Kuva Fortress/Pago": "SolNode747", - "Kuva Fortress/Garus": "SolNode748", - "Venus/Montes": "SolNode902", - "Earth/Erpo": "SolNode903", - "Mars/Syrtis": "SolNode904", - "Jupiter/Galilea": "SolNode905", - "Saturn/Pandora": "SolNode906", - "Uranus/Caelus": "SolNode907" - }; - const result = {}; - let lastItem = []; - let lastItemIndex; - let rotation; - Array.from(document.querySelectorAll("table")[0].children[0].children).forEach(element => { - if (element.classList.contains("blank-row")) { - if (lastItemIndex) result[lastItemIndex] = lastItem; - lastItem = []; - lastItemIndex = undefined; - rotation = undefined; - } else if (element.children[0].getAttribute("colspan") == 2) { - if (!lastItemIndex) { - const mission = element.children[0].textContent; - const formatedMission = mission.substring(0, mission.indexOf(" (")); - lastItemIndex = missionNames[formatedMission]; - } else { - rotation = element.children[0].textContent.replace("Rotation ", ""); - } - } else { - const name = element.children[0].textContent; - const chance = parseFloat(element.children[1].textContent.match(/(\d+\.\d+)/)[0]); - lastItem.push({ chance, name, ...(rotation !== undefined && { rotation }) }); - } - }); - return JSON.stringify(result); -})(); -- 2.47.2 From 94f6d1b9410d29c5f1df153ffb1aeda0a39b64ab Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Thu, 27 Jun 2024 10:21:02 +0200 Subject: [PATCH 225/522] feat: gilded weapons (#410) Co-authored-by: AMelonInsideLemon --- src/controllers/api/gildWeaponController.ts | 66 +++++++++++++++++++ src/routes/api.ts | 2 + .../inventoryTypes/commonInventoryTypes.ts | 1 + 3 files changed, 69 insertions(+) create mode 100644 src/controllers/api/gildWeaponController.ts diff --git a/src/controllers/api/gildWeaponController.ts b/src/controllers/api/gildWeaponController.ts new file mode 100644 index 00000000..0b77513f --- /dev/null +++ b/src/controllers/api/gildWeaponController.ts @@ -0,0 +1,66 @@ +import { RequestHandler } from "express"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getInventory } from "@/src/services/inventoryService"; +import { WeaponTypeInternal } from "@/src/services/itemDataService"; +import { ArtifactPolarity, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes"; + +const modularWeaponCategory: (WeaponTypeInternal | "Hoverboards")[] = [ + "LongGuns", + "Pistols", + "Melee", + "OperatorAmps", + "Hoverboards" // Not sure about hoverboards just coppied from modual crafting +]; + +interface IGildWeaponRequest { + ItemName: string; + Recipe: string; // /Lotus/Weapons/SolarisUnited/LotusGildKitgunBlueprint + PolarizeSlot?: number; + PolarizeValue?: ArtifactPolarity; + ItemId: string; + Category: WeaponTypeInternal | "Hoverboards"; +} + +// In export there no recipes for gild action, so reputation and ressources only consumed visually + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +export const gildWeaponController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const data: IGildWeaponRequest = getJSONfromString(String(req.body)); + data.ItemId = String(req.query.ItemId); + if (!modularWeaponCategory.includes(req.query.Category as WeaponTypeInternal | "Hoverboards")) { + throw new Error(`Unknown modular weapon Category: ${req.query.Category}`); + } + data.Category = req.query.Category as WeaponTypeInternal | "Hoverboards"; + + const inventory = await getInventory(accountId); + if (!inventory[data.Category]) { + throw new Error(`Category ${req.query.Category} not found in inventory`); + } + const weaponIndex = inventory[data.Category].findIndex(x => String(x._id) === data.ItemId); + if (weaponIndex === -1) { + throw new Error(`Weapon with ${data.ItemId} not found in category ${req.query.Category}`); + } + + const weapon = inventory[data.Category][weaponIndex]; + weapon.Features = EquipmentFeatures.GILDED; // maybe 9 idk if DOUBLE_CAPACITY is also given + weapon.ItemName = data.ItemName; + weapon.XP = 0; + if (data.Category != "OperatorAmps" && data.PolarizeSlot && data.PolarizeValue) { + weapon.Polarity = [ + { + Slot: data.PolarizeSlot, + Value: data.PolarizeValue + } + ]; + } + inventory[data.Category][weaponIndex] = weapon; + await inventory.save(); + + res.json({ + InventoryChanges: { + [data.Category]: [weapon] + } + }); +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index 8bdddd78..9794c48f 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -61,6 +61,7 @@ import { updateChallengeProgressController } from "@/src/controllers/api/updateC import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; import { updateThemeController } from "../controllers/api/updateThemeController"; import { upgradesController } from "@/src/controllers/api/upgradesController"; +import { gildWeaponController } from "../controllers/api/gildWeaponController"; const apiRouter = express.Router(); @@ -106,6 +107,7 @@ apiRouter.post("/findSessions.php", findSessionsController); apiRouter.post("/focus.php", focusController); apiRouter.post("/genericUpdate.php", genericUpdateController); apiRouter.post("/getAlliance.php", getAllianceController); +apiRouter.post("/gildWeapon.php", gildWeaponController); apiRouter.post("/guildTech.php", guildTechController); apiRouter.post("/hostSession.php", hostSessionController); apiRouter.post("/infestedFoundry.php", infestedFoundryController); diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index b1debf7a..f7026c0c 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -86,6 +86,7 @@ export enum EquipmentFeatures { DOUBLE_CAPACITY = 1, UTILITY_SLOT = 2, GRAVIMAG_INSTALLED = 4, + GILDED = 8, ARCANE_SLOT = 32, INCARNON_GENESIS = 512 } -- 2.47.2 From 7cfef6294b2826af6b4719512bc99778865a1cee Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 27 Jun 2024 23:08:59 +0200 Subject: [PATCH 226/522] feat(webui): add client cheats and new account cheat "Unlock All Focus Schools" (#406) Co-authored-by: Sainan --- .prettierignore | 1 + src/routes/webui.ts | 9 +- static/webui/index.html | 503 +++++++++++++++++++--------------------- static/webui/script.js | 80 +++++++ 4 files changed, 330 insertions(+), 263 deletions(-) diff --git a/.prettierignore b/.prettierignore index 7b977582..ab38eac9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,2 @@ static/webui/libs/ +*.html diff --git a/src/routes/webui.ts b/src/routes/webui.ts index 93005f34..27ac95e5 100644 --- a/src/routes/webui.ts +++ b/src/routes/webui.ts @@ -19,15 +19,18 @@ webuiRouter.use("/webui", (req, res, next) => { }); // Serve virtual routes -webuiRouter.get("/webui/settings", (_req, res) => { - res.sendFile(path.join(rootDir, "static/webui/index.html")); -}); webuiRouter.get("/webui/inventory", (_req, res) => { res.sendFile(path.join(rootDir, "static/webui/index.html")); }); webuiRouter.get("/webui/mods", (_req, res) => { res.sendFile(path.join(rootDir, "static/webui/index.html")); }); +webuiRouter.get("/webui/settings", (_req, res) => { + res.sendFile(path.join(rootDir, "static/webui/index.html")); +}); +webuiRouter.get("/webui/cheats", (_req, res) => { + res.sendFile(path.join(rootDir, "static/webui/index.html")); +}); // Serve static files webuiRouter.use("/webui", express.static(path.join(rootDir, "static/webui"))); diff --git a/static/webui/index.html b/static/webui/index.html index 037c5280..423c51a1 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1,286 +1,269 @@ - - OpenWF WebUI - - - - - - -
-